Oracle 11g DataGuard主备切换
1.检查主备的环境
dg1节点:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/oradata/tong/archive
Oldest online log sequence 59
Next log sequence to archive 61
Current log sequence 61
SQL>
dg2节点:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/oradata/tong/archive
Oldest online log sequence 60
Next log sequence to archive 0
Current log sequence 61
SQL>
2.查看主备的角色
dg1节点(primary角色):
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
TO STANDBY PRIMARY
SQL>
dg2节点(standby角色):
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
NOT ALLOWED PHYSICAL STANDBY
SQL>
3.在主库上执行切换命令(primary节点)
SQL> alter database commit to switchover to physical standby; --将primary角色转换为standby角色
Database altered.
SQL> shutdown immediate --关闭数据库,启动到mount状态
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup mount
Total System Global Area 830930944 bytes
Fixed Size 2217912 bytes
Variable Size 545261640 bytes
Database Buffers 281018368 bytes
Redo Buffers 2433024 bytes
Database mounted.
SQL> select switchover_status,database_role from v$database; --查看目前primary角色的状态
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
TO PRIMARY PHYSICAL STANDBY
SQL>
4.在备库上执行(standby节点)
SQL> select switchover_status,database_role from v$database; --查看standby备库角色的状态
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
TO PRIMARY PHYSICAL STANDBY
SQL> alter database commit to switchover to primary; --将备库的角色修改为primary
Database altered.
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
NOT ALLOWED PRIMARY
SQL> alter database open; --打开数据库
Database altered.
SQL>
5.在备库上执行(standby节点)
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
RECOVERY NEEDED PHYSICAL STANDBY
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; --修改以前主库为日志应用
Database altered.
SQL>
6.测试主备节点是否切换成功
dg2节点(primary角色):
SQL> select * from tt;
A
----------
1
3
4
5
6
7
6 rows selected.
SQL> insert into tt values(8);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from tt where a=8;
A
----------
8
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/oradata/tong/archive
Oldest online log sequence 78
Next log sequence to archive 80
Current log sequence 80
SQL>
dg1节点(standby角色):
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/oradata/tong/archive
Oldest online log sequence 79
Next log sequence to archive 0
Current log sequence 80
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database open read only;
Database altered.
SQL> select * from tt;
A
----------
1
3
4
5
6
7
8
7 rows selected.
SQL>