一步一步學DataGuard(14)邏輯standby之switchover
關於角色轉換的一些概念在物理standby章節的時候已經講了很多,在概念和操作方式上二者基本一致,不過如果你真正深刻理解了物理standby和邏輯standby,你會意識到,對於邏輯standby而言,不管是switchover還是failover,怎麼操作起來,都這麼怪怪的呢~~~
邏輯standby之switchover
要在primary和邏輯standby之間切換角色,一般是從操作primary開始。
提示:
如果primary或邏輯standby是rac結構,切記只保留一個例項啟動,其它例項全部shutdown。等角色轉換操作完成之後再啟動其它例項,角色轉換的操作會自動傳播到這些例項上,並不需要你再對這些例項單獨做處理。
一、 準備工作
1、檢查primary和邏輯standby的初始化引數設定,常規的檢查包括:
·確保fal_server,fal_client值設定正確
·確保log_archive_dest_n引數設定正確
更多可能涉及的初始化引數可以參考2.1中的第4小章
首先來看當前的primary資料庫:
JSSWEB> show parameter fal
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string jssweb
fal_server string jsspdg
JSSWEB> show parameter name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string oradata\jsspdg, oradata\jssweb
log_file_name_convert string oradata\jsspdg, oradata\jssweb
JSSWEB> show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string LOCATION=E:\ora10g\oradata\jss
web\arc VALID_FOR=(ALL_LOGFIL
ES,ALL_ROLES) DB_UNIQUE_NAME=j
ssweb
log_archive_dest_2 string service=jsspdg
OPTIONAL LGWR SYNC AFFIRM VALI
D_FOR=(ONLINE_LOGFILES,PRIMARY
_ROLE) DB_UNIQUE_NAME=jsspdg
................
................
................
log_archive_dest_state_1 string ENABLE
log_archive_dest_state_2 string defer
由於此處primary的初始化引數並不合適,為了避免其轉換之後發生錯誤,我們需要提前做些修改:
JSSWEB> alter system set log_archive_dest_2='location=e:\ora10g\oradata\jssweb\std\ valid_for=(standby_logfiles,standby_role) db_unique_name
=jssweb';
系統已更改。
JSSWEB> alter system set log_archive_dest_1='location=e:\ora10g\oradata\jssweb\arc\ valid_for=(online_logfiles,all_roles) db_unique_name=jss
web';
系統已更改。
JSSWEB> alter system set log_archive_dest_state_2='enable';
系統已更改。
JSSWEB> alter system set fal_server='jssldg';
系統已更改。
--xx_file_name_convert這兩個引數無法動態修改,因此我們首先修改spfile,然後再重啟一下資料庫
JSSWEB> alter system set db_file_name_convert='oradata\jssldg','oradata\jssweb' scope=spfile;
系統已更改。
JSSWEB> alter system set log_file_name_convert='oradata\jssldg','oradata\jssweb' scope=spfile;
系統已更改。
JSSWEB> startup force
然後再看看待轉換的邏輯standby
JSSLDG> show parameter fal
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string
fal_server string
JSSLDG> show parameter file_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string oradata\jssweb, oradata\jssldg
log_file_name_convert string oradata\jssweb, oradata\jssldg
JSSLDG> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string DG_CONFIG=(jssweb,jsspdg,jssld
g)
log_archive_dest string
log_archive_dest_1 string location=E:\ora10g\oradata\jss
ldg\arc\ valid_for=(online_log
files,all_roles) db_unique_nam
e=jssldg
log_archive_dest_10 string
log_archive_dest_2 string location=E:\ora10g\oradata\JSS
LDG\std\ valid_for=(standby_lo
gfiles,standby_role) db_unique
_name=JSSLDG
.......................
.......................
對於待轉換的邏輯standby中,某些初始化引數也可以不設定,不過走到這一步了,順手全設定一遍。
JSSLDG> alter system set fal_server='jssweb';
系統已更改。
JSSLDG> alter system set fal_client='jssldg';
系統已更改。
JSSLDG> alter system set log_archive_dest_3='service=jssweb lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=jssweb';
系統已更改。
2、檢查primary資料庫是否配置了standby redologs
JSSWEB> select * from v$standby_log;
未選定行
對於邏輯standby資料庫,standby redologs是必須的,因此我們需要為當前的primary建立幾個standby redologs。
JSSWEB> alter database add standby logfile group 4 ('e:\ora10g\oradata\jssweb\standbyrd01.log') size 20m;
資料庫已更改。
.....................
.......................
.........................
JSSWEB> alter database add standby logfile group 8 ('e:\ora10g\oradata\jssweb\standbyrd05.log') size 20m;
資料庫已更改。
二、 檢查primary資料庫狀態
在當前的primary資料庫查詢v$database檢視中的switchover_status列,檢視當前primary資料庫狀態。
JSSWEB> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO STANDBY
如果該查詢返回TO STANDBY 或SESSIONS ACTIVE則表示狀態正常,可以執行轉換操作,如果否的話,就需要你先檢查一下當前的dataguard配置,看看是否
三、 準備轉換primary為邏輯standby
執行下列語句,將primary置為準備轉換的狀態:
JSSWEB> alter database prepare to switchover to logical standby;
資料庫已更改。
檢視一下switchover_status的狀態,喲,果然變成準備ing啦~~
JSSWEB> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
PREPARING SWITCHOVER
四、 準備轉換邏輯standby為primary
我們一定要學習oracle這種邏輯,甭管想做什麼,都得先有個準備的過程~
JSSLDG> alter database prepare to switchover to primary;
資料庫已更改。
JSSLDG> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
PREPARING SWITCHOVER
五、 再次檢查primary資料庫狀態
JSSWEB> select switchover_status from v$database;
SWITCHOVER_STATUS
字數受限,詳細請檢視:
相關文章
- 一步一步學DataGuard(13)邏輯standby之建立示例
- 一步一步學DataGuard(15)邏輯standby之failoverAI
- 一步一步學DataGuard(5)物理standby之建立示例
- 一步一步學DataGuard(22)Standby之選擇資料保護模式模式
- DataGuard搭建邏輯StandBy
- DataGuard:Physical Standby Switchover
- DataGuard:Logical Standby Switchover
- 邏輯 rac standby和物理 rac standby的switchover 和 failoverAI
- DataGuard---->物理StandBy的角色切換之switchover
- 一步一步學DataGuard(25)RMAN備份來建立之實踐
- Dataguard物理Standby Switchover 角色轉換
- 一步一步學DataGuard(2)基礎之術語再瞭解大概
- 一步一步學DataGuard(26)RMAN備份來建立之實踐2
- 【DG】[三思筆記]一步一步學DataGuard筆記
- 【DataGuard】Oracle 11g physical standby switchoverOracle
- [三思筆記]一步一步學DataGuard.zip筆記
- 邏輯備庫Switchover
- 一步一步搭建11gR2 rac+dg之DG SWITCHOVER功能(九)
- 配置 Oracle 10g 單例項物理dataguard和邏輯standbyOracle 10g單例
- 一步一步學Silverlight 2系列(14):資料與通訊之WCF
- DataGuard SwitchOver
- dataguard之邏輯備庫表空間不足
- 物理standby和邏輯standby的區別
- 一步一步學ROP之Android ARM 32位篇Android
- 一步一步學ROP之linux_x64篇Linux
- 一步一步學ROP之linux_x86篇Linux
- dataguard回顧之安裝——建立邏輯備庫
- 一步一步分析vue之observeVue
- 一步一步學spring bootSpring Boot
- 一步一步學Streams(14) 第二部分 實踐之移除Streams複製環境
- 一步一步分析vue之$mount(1)Vue
- 【DataGuard】10g物理standby主備switchover方式切換詳述
- 一步一步學RMAN第11篇 rman筆記之綜述筆記
- oracle 之dataguard standby 切換Oracle
- dataguard之邏輯備庫移動資料檔案
- 一步一步HTML5粒子編輯器HTML
- ORACLE10G 物理standby轉為邏輯standbyOracle
- 一步一步分析vue之_data屬性Vue