Physical Standby Database Failover(二)

2014-11-24 15:58:13 · 作者: · 浏览: 2
切换实录
SQL> alter system flush redo to 'HAINAN';
alter system flush redo to 'HAINAN'
*
ERROR at line 1:
ORA-16442: ALTER SYSTEM FLUSH REDO TO STANDBY succeeded, but some redo has not
been applied.
以上的步骤要花费N久的时间等待。
查看主备库上的alert日志:
主库上有大量的如下日志:
Fri Jul 12 11:23:22 2013
ARC4: Archiving disabled
LOG_ARCHIVE_DEST_2 is a potential flush redo target
LOG_ARCHIVE_DEST_2 is a potential flush redo target
LOG_ARCHIVE_DEST_2 is a potential flush redo target
LOG_ARCHIVE_DEST_2 is a potential flush redo target
备库上有如下的大量日志:
Fri Jul 12 11:23:30 2013
Standby switchover readiness check: Checking whether recoveryapplied all redo..
Physical Standby applied all the redo from the primary.
Standby switchover readiness check: Checking whether recoveryapplied all redo..
Physical Standby applied all the redo from the primary.
由此可见,应该是主库对备库的每个归档进行校验,要花费大量时间的。所以在 系统建立初期,就要考虑的两条重要信息是公司需要实现的恢复点目标(recovery point objective,RPO)和恢复时间目标(recovery time objective,RTO)。
虽然看到了succeeded字样,但还是按照有错误处理,官网搜索了ORA-16442下,竟然没有结果,新特新还是有缺点的,往下走。
SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) over(partition by thread#) as last from v$archived_log;
THREAD LAST
---------- ----------
2 415
1 519
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
no rows selected
主库上查询,得到同样的结果,说明日志均被应用,由于我应用了standby log,并且开启了real time 应用,实际中丢失数据的概率大大被降低了,这也是oracle推荐的用法。
SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) over(partition by thread#) as last from v$archived_log;
THREAD LAST
---------- ----------
2 415
1 519
备库上继续执行如下操作:
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
no rows selected
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Database altered.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
Database altered.
SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;
Database altered.
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
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-01109: database not open
SQL> select status from V$instance;
STATUS
------------
MOUNTED
SQL> alter database open;
Database altered.
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-16109: failed to apply log data from previous primary
SQL> select status from V$instance;
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
FAILED DESTINATION
SELECT SWITCHOVER_STATUS,OPEN_MODE,DATABASE_ROLE,PROTECTION_MODE FROM V$DATABASE;BASE;
SWITCHOVER_STATUS OPEN_MODE DATABASE_ROLE PROTECTION_MODE
-------------------- -------------------- ---------------- --------------------
FAILED DESTINATION READ WRITE PRIMARY MAXIMUM PERFORMANCE