oracle主备切换参考
主备正常切换操作参考: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;