ITPub博客

首页 > Linux操作系统 > Linux操作系统 > standby database三种模式的相互关系及轉換

standby database三种模式的相互关系及轉換

原创 Linux操作系统 作者:wwd_wang 时间:2009-04-13 10:21:05 0 删除 编辑
http://www.host01.com/article/database/00060004/065422285434190_3.htm
http://www.itpub.net/archiver/tid-157528-page-2.html
1 手工模式切换到其他模式:
……手工模式————> 自动模式
SQL>recover managed standby database disconnect;
……此时,当前的SQL*PLUS窗口停止响应。可以关闭当前窗口或者打开另外的SQL*PLUS窗口来对待用库进行管理或查询。也可以在另外的窗口中输入命令取消待用库的自动模式,即中止待用库自动恢复。
……手工模式————> 只读模式
SQL> alter database open read only;
……将一个待用库置于只读模式以后,就可以进行查询。

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博客 ” ,链接:http://blog.itpub.net/12137615/viewspace-588789/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 蒸馒头的小窍门
请登录后发表评论 登录
全部评论

注册时间:2008-05-08

  • 博文量
    236
  • 访问量
    195702