2 自动模式到其他模式:
……虽然oracle文档讲,自动模式可以切换到手工模式,也可以切换到只读模式,但是文档所提供的方法,都是首先取消自动模式的自动恢复。实际上,将一个自动模式的自动恢复取消,就是将它切换到了手工模式了。因此,自动模式的standby
database只能直接切换到手工模式,然后再通过手工模式切换到其他模式。
SQL>recover managed standby database cancel;
……或者
SQL>recover managed standby database cancel immediate;
……这两个命令的不同之处在于,如果不带immediate选项,那么managed standby
database将当前正在进行恢复的日志恢复完成以后,才中止自动恢复,而不再读取下一个归档日志。如果添加了immediate选项,那么
managed standby
database将在读取当前使用的归档日志的下一个块之前,或者是在读取下一个日志之前中止恢复。如果输入此命令时,oracle正在使用当前日志的最
后一个块,即在读取下一个日志之前中止了恢复,那么与不带immediate选项是一样的。如果是在读取当前日志的下一个块之前中止了恢复,那么
oracle的文件是不一致的,这种情况下,不能以只读方式打开待用库(这一步未做测试,因为我的测试环境里没有产生过超过100K的日志文件,姑且信
之)。
……要想快速检测备库是否自动使用了主库的最新的归档日志,即检测备库是否真的处于自管理模式,可以手工强制切换主库日志后,分别查询主库与备库的最大归
档日志号是否一致。如果不一致,等待一段时间后再查询(有可能备库还没有来得及用主库的日志进行自动恢复),等待的时间取决于归档日志的大小,以及机器的
性能。
查询最大归档日志号的命令:
SQL>select max(sequence#) from v$log_history;
3 只读模式到其他模式:
SQL*Plus: Release 9.2.0.1.0 - Production on Mon Sep 29 16:49:00 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> alter database open read only;
Database altered .
SQL> alter database close;
Database altered.
SQL> alter database recover automatic standby database ;
alter database recover automatic standby database
*
ERROR at line 1:
ORA-00279: change 270585 generated at 09/29/2003 16:48:15 needed for thread 1
ORA-00289: suggestion : /u02/admin/prim/archive/prim_1_188.ARC
ORA-00280: change 270585 for thread 1 is in sequence #188
ORA-00278: log file '/u02/admin/prim/archive/prim_1_188.ARC' no longer needed
for this recovery
ORA-00308: cannot open archived log '/u02/admin/prim/archive/prim_1_188.ARC'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
……此时,standby database就置于手工模式了,可以进行手工恢复,或者在消除了日志序列缺失后,切换到自动模式。
SQL> alter database recover cancel;
Database altered.
SQL> alter database open read only;
Database altered.
4 激活一个standby database:
……如果standby database处于手工模式之外的其他模式,首先应将之切换到手工模式,然后做手工恢复,消除日志序列缺失,再将它激活,否则可能丢失数据。
SQL>alter database activate standby database;
……完成这一步操作之后,查看在线日志组所在的目录,可以看到新生成了在线日志组。此时查询v$instance视图,数据库为start状态,此时数据库还不能进行查询或其他操作。Oracel文档讲,需要关闭数据库,然后再打开它,即作如下操作:
SQL>shutdown immdiate;
SQL>startup;
……但经测试发现,虽然在激活standby database之后数据库处于start状态,但是可以不关闭再打开它,而可以先加载,然后再打开:
SQL>alter database activate standby database;
SQL>alter database mount;
SQL>alter database open;
……这时就可以正常的使用数据库了。
这是oracle文档描述的standby database 三种模式的相互关系,按文档的说法,三种模式可以直接相互切换。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12137615/viewspace-588789/ ,如需转载,请注明出处,否则将追究法律责任。