来个dataguard switch over

怕以后忘了,做个试验记录一下,这个switch比较常规
1】主--备库先查一遍,如下的话就可以开始了
两者当前序列一致
角色状态如下
--主库
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 /u01/app/oracle/oradata/test/flash_recovery_area
最早的联机日志序列 524
下一个存档日志序列 526
当前日志序列 526
SQL> select switchover_status,database_role from v$database;

SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
TO STANDBY PRIMARY

--备库
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 /u01/app/oracle/oradata/test/flash_recovery_area
最早的联机日志序列 524
下一个存档日志序列 0
当前日志序列 526
SQL> select switchover_status,database_role from v$database;

SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
NOT ALLOWED PHYSICAL STANDBY

2】切换
--主库
--将primary角色转换为standby角色
SQL> alter database commit to switchover to physical standby;

数据库已更改。
SQL> shutdown immediate
ORA-01012: not logged on

--shutdown immediate
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 3975139328 bytes
Fixed Size 2259360 bytes
Variable Size 2768242272 bytes
Database Buffers 1191182336 bytes
Redo Buffers 13455360 bytes
数据库装载完毕。

mount之后原主库成了备库
SQL> select switchover_status,database_role from v$database;

SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
RECOVERY NEEDED PHYSICAL STANDBY

--备库
--查看standby状态
SQL> select switchover_status,database_role from v$database;

SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
SESSIONS ACTIVE PHYSICAL STANDBY

--将--备库的角色修改为primary
/*执行下面时需要关闭其他sql窗口,否则报下面的错

SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
第 1 行出现错误:
ORA-01093: ALTER DATABASE CLOSE 仅允许在没有连接会话时使用
*/

确认没有会话连接了执行结果
SQL> alter database commit to switchover to primary;

数据库已更改。

--新备库状态已变成原主库的那样了
SQL> select switchover_status,database_role from v$database;

SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
NOT ALLOWED PRIMARY

--打开数据库
alter database open;

备库(原主库)
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;

数据库已更改。

--新主库(原备库)变成原主库的那样了
SQL> select switchover_status,database_role from v$database;

SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
NOT ALLOWED PHYSICAL STANDBY

检查】
新主库切换日志查看下两边序列是否一致(简单方式)
alter system switch logfile;
archive log list;

查看主、备库是否有gap
SELECT STATUS,GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2;

猜你喜欢

转载自www.cnblogs.com/ritchy/p/10948639.html