主库:11gR1 + win2003 32bit
备库:11gR1 + RHEL4 U5 32bit
执行switchover
[@more@]1 主库switchover
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 D:appAdministratorflash_recovery_areaPRIMARYARCHIVELOG
最早的联机日志序列 150
下一个存档日志序列 152
当前日志序列 152
SQL>
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
----------------------------------------
TO STANDBY
SQL>
SQL> alter database commit to switchover to physical standby;
数据库已更改。
SQL>
SQL> select database_role from v$database;
select database_role from v$database
*
第 1 行出现错误:
ORA-01507: 未装载数据库
SQL> shutdown immediate
ORA-01507: 未装载数据库
ORACLE 例程已经关闭。
SQL>
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 293602196 bytes
Database Buffers 234881024 bytes
Redo Buffers 5844992 bytes
数据库装载完毕。
SQL>
SQL> select database_role, switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
-------------------------------- ----------------------------------------
PHYSICAL STANDBY TO PRIMARY
SQL>
2 察看备库
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
NOT ALLOWED
SQL> r
1* select switchover_status from v$database
SWITCHOVER_STATUS
--------------------
SWITCHOVER PENDING
SQL>
SQL> r
1* select switchover_status from v$database
SWITCHOVER_STATUS
--------------------
SWITCHOVER PENDING
SQL>
SQL> select database_role from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL>
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
SWITCHOVER PENDING
状态一直是“SWITCHOVER PENDING”
3 备库switchover看看有没有问题
SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required
到这里,感觉应该是主备库日志不一致导致。确认以下
4 问题定位
主库:
SQL>
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 D:appAdministratorflash_recovery_areaPRIMARYARCHIVELOG
最早的联机日志序列 152
下一个存档日志序列 0
当前日志序列 154
SQL>
SQL>
备库:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oradata/standby/archive
Oldest online log sequence 152
Next log sequence to archive 0
Current log sequence 154
SQL>
SQL> select sequence#, applied from v$archived_log;
SEQUENCE# APP
---------- ---
138 YES
137 YES
139 YES
140 YES
141 YES
142 YES
143 YES
144 YES
145 YES
146 YES
147 YES
SEQUENCE# APP
---------- ---
148 YES
149 YES
150 YES
151 YES
152 NO
153 NO
154 NO
18 rows selected.
SQL>
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select sequence#, applied from v$archived_log;
SEQUENCE# APP
---------- ---
138 YES
137 YES
139 YES
140 YES
141 YES
142 YES
143 YES
144 YES
145 YES
146 YES
147 YES
SEQUENCE# APP
---------- ---
148 YES
149 YES
150 YES
151 YES
152 YES
153 YES
154 YES
18 rows selected.
SQL>
SQL> alter database commit to switchover to primary;
Database altered.
SQL>
SQL> select database_role, switchover_role from v$database;
select database_role, switchover_role from v$database
*
ERROR at line 1:
ORA-00904: "SWITCHOVER_ROLE": invalid identifier
SQL>
SQL> select database_role, switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PRIMARY TO STANDBY
SQL>
SQL>
问题解决,异构switchover成功。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/593324/viewspace-1009658/ ,如需转载,请注明出处,否则将追究法律责任。