oracle adg主备手工切换11g和12c通用

1、主库
select open_mode,database_role,protection_mode,protection_level,switchover_status from v$database;

alter system switch logfile;

alter system archive log current;

alter database commit to switchover to physical standby with session shutdown;

如果swtichover_status状态为session active,就需要在命令中加入with session shutdown子句。
执行后,我们发现Primary ora11g已经关闭。
加入with session shutdown相当于杀掉连接进程了,此时库已经关闭了,保险起见,我们执行下
shutdown abort
重启主库到mount阶段,确保主库不会在有连接导致数据变动
startup mount
查看主库状态
select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY

alter database open;

Database altered.
此时主库虽然这样打开,但是还是read only的状态。因为上面执行了alter database commit to switchover to physical standby with session shutdown;这条语句。

查看主库切换状态:
select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY

2、备库
select open_mode,database_role,protection_mode,protection_level,switchover_status from v$database;
OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL
-------------------- ---------------- -------------------- --------------------
SWITCHOVER_STATUS
--------------------
READ ONLY            PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE
NOT ALLOWED

注意备库的SWITCHOVER_STATUS此时是not allowed状态,说明备库日志并未应用完。
此时如果直接执行切换主库的操作,会报错
SQL> alter database commit to switchover to primary with session shutdown ;
alter database commit to switchover to primary with session shutdown
*
ERROR at line 1:
ORA-16139: media recovery required
要等这个switchover_status状态变成to primary以后才能切,我第一次不知道,在这中间一通停库起库,结果就变成to primary了,不知道还有没有其他方法
SQL> select open_mode,database_role,protection_mode,protection_level,switchover_status from v$database;

OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL
-------------------- ---------------- -------------------- --------------------
SWITCHOVER_STATUS
--------------------
MOUNTED              PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE
TO PRIMARY

执行切换alter database commit to switchover to primary with session shutdown ;
SQL> alter database commit to switchover to primary with session shutdown ;

Database altered.

3、在新的备库上(原主库)执行启用日志实时应用模式

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY
执行启动日志实时应用
SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

查看状态
SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY

SQL> select status ,gap_status from v$archive_dest_status where dest_id in (1,2);

STATUS    GAP_STATUS
--------- ------------------------
VALID
VALID

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
NOT ALLOWED

SQL> select open_mode,database_role,protection_mode,protection_level,switchover_status from v$database;

OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS
-------------------- ---------------- -------------------- -------------------- --------------------
READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE  NOT ALLOWED

4、主库(新的主库,原备库)查看状态
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO STANDBY

SQL> select status ,gap_status from v$archive_dest_status where dest_id in (1,2);

STATUS    GAP_STATUS
--------- ------------------------
VALID
VALID     NO GAP

SQL> select open_mode,database_role,protection_mode,protection_level,switchover_status from v$database;

OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS
-------------------- ---------------- -------------------- -------------------- --------------------
READ WRITE           PRIMARY          MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE  TO STANDBY
 

猜你喜欢

转载自blog.csdn.net/kadwf123/article/details/83092607