怕以后忘了,做个试验记录一下,这个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;