主備正常切換操作參考:RAC兩節點->單機
(rac和單機的操作區別:就是關閉其它節點,剩一個節點操作即可)?
1.主庫準備
檢查狀態
SQL> select inst_id,database_role,OPEN_MODE from? gv$database;
?? INST_ID DATABASE_ROLE??? OPEN_MODE
---------- ---------------- --------------------
???????? 2 PRIMARY????????? READ WRITE
???????? 1 PRIMARY????????? READ WRITE
停掉一個實例:
[oracle@tyzfdb02 ~]$ srvctl stop instance -d tyzfdb -i tyzfdb2
SQL> select inst_id,database_role,OPEN_MODE from? gv$database;
?? INST_ID DATABASE_ROLE??? OPEN_MODE
---------- ---------------- --------------------
???????? 1 PRIMARY????????? READ WRITE
2.備庫準備
SQL> select inst_id,database_role,OPEN_MODE from? gv$database;
?? INST_ID DATABASE_ROLE??? OPEN_MODE
---------- ---------------- --------------------
???????? 1 PHYSICAL STANDBY READ ONLY WITH APPLY
--取消備庫日志應用: --可選
--SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
--繼續應用日志: --可選
--SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
3.主庫切換日志:
主庫切換日志,觀察備庫alert是否正常同步
--主庫
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
4.備庫確認同步正常
[oracle@adg trace]$ tail -f alert_tyzfdb.log
Tue Jun 25 15:35:27 2013
Media Recovery Waiting for thread 2 sequence 1630 (in transit)
Recovery of Online Redo Log: Thread 2 Group 72 Seq 1630 Reading mem 0
? Mem# 0: +DATA/tyzfdb_adg/onlinelog/group_72.1575.818724653
Tue Jun 25 15:35:30 2013
Archived Log entry 4890 added for thread 2 sequence 1629 ID 0x3545ffea dest 1:
上述信息Recovery of Online表示主備日志傳輸應用正常
5.主庫切換
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
TO STANDBY
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN;
6.備庫切換
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
SQL> ALTER DATABASE OPEN;
SQL> select inst_id,database_role,OPEN_MODE from? gv$database;
7.繼續處理主庫變成備庫:
SQL> shutdown immediate
ORA-01092: ORACLE instance terminated. Disconnection forced
SQL> exit
[oracle@tyzfdb01 ogg]$ sqlplus / as sysdba
SQL> startup mount
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE cancel;
SQL> alter database open;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
8.主庫啟動節點2
[oracle@tyzfdb01 ~]$ srvctl start instance -d tyzfdb -i tyzfdb2
9.相關參考:
Performing Role Transitions Using Old Syntax
11G RAC TO 11G RAC ADG SWITCHOVER
19c ADG Switchover 切換測試 - AlfredZhao - 博客園
一條命令進行19C ADG主備切換 - 墨天輪
19c adg參考:
環境未配置DG Broker,手工切換ADG,19c也要比11g時代的切換更簡單。
使用自己的測試環境,具體可參見:?單實例Primary快速搭建Standby RAC參考手冊(19.16 ADG)
1.主庫demo切換到RAC環境demorac:
在主庫demo執行命令:
SQL>
alter database switchover to demorac verify;
alter database switchover to demorac;
執行命令之后,原主庫demo將會關閉,原備庫demorac會重新啟動到mount狀態,且變成新主庫角色;
此時需要手工在新主庫demorac上執行命令:
SQL>
alter database open;
打開數據庫。
然后手工將原主庫demo進行startup,承擔新備庫角色,并開啟實時應用:
SQL>
startup
recover managed standby database disconnect;
注意:19c ADG 在未配置DG Broker的情況下,也很簡單實現了主備角色互換,只需手工處理下開庫的動作。
此外,與11g ADG不同,現在MRP進程默認就是開啟實時應用(前提是準備工作做好),也就是說:
備庫MRP實時開啟默認無需指定?using current logfile
?關鍵字。
默認即是,如果不想實時,指定?using archived logfile
?關鍵字。
2.主庫demorac切換回單實例環境demo:
主要就是指向的db_unique_name更改,其他操作都一樣。
在主庫demorac執行命令:
SQL>
alter database switchover to demo verify;
alter database switchover to demo;
執行命令之后,原主庫demorac將會關閉,原備庫demo會重新啟動到mount狀態,且變成新主庫角色;
此時需要手工在新主庫demo上執行命令:
SQL>
alter database open;
打開數據庫。
然后手工將原主庫demorac進行startup,承擔新備庫角色,并開啟實時應用:
[oracle@db01rac1 ~]$
srvctl start database -d demorac
SQL>recover managed standby database disconnect;