http://inthirties.com:90/viewthread.jsp?tid=1270&frombbs=1
* 本文出自 “inthirties(男人三十)”博客,转载请务必注明作者和保留出处。
一个朋友学习Dataguard,在打开备库的时候出现错误,错误如下
ORA-16136: Managed Standby Recovery not active
查看备库v$managed_standby的数据
SQL> select process,status,sequence# from v$managed_standby;
PROCESS STATUS SEQUENCE#
——— ———— ———-
ARCH CONNECTED 0
ARCH CLOSING 12173
ARCH CONNECTED 0
ARCH CONNECTED 0
MRP0 WAIT_FOR_LOG 12174
RFS IDLE 0
RFS IDLE 0
RFS IDLE 12174
可以看到这里备库的recover是正常的,MRP0已经启动,RFS(Remote file server)是idle的.也就是recover是active的,
那么怎么还有这样的错了。
查看alert日志,发现如下的错误信息
Sat Mar 20 11:26:41 2010
ALTER DATABASE RECOVER managed standby database cancel
Sat Mar 20 11:26:43 2010
MRP0: Background Media Recovery cancelled with status 16037
Sat Mar 20 11:26:43 2010
Errors in file /u01/app/oracle/admin/zxdbdg/bdump/zxdbdg_mrp0_9775.trc:
ORA-16037: user requested cancel of managed recovery operation
Recovery interrupted!
Recovery interrupted,这里为什么会有这样的错了,是归档问题么。
打开trc文件
有这样的错误信息
*** 2010-03-20 11:12:07.805 60679 kcrr.c
RFS[5]: Archivelog thread 1 sequence 12173 cannot be reused
This problem can occur as the result of multiple primary and/or
standby database(s) trying to archive to this standby database.
This is not allowed, since successfully completed archivelogs
would be overwritten.
ORA-16401: archivelog rejected by RFS
archivelog rejected by RFS
原因是和备库的log_archive有关。在备库上show parameter log_archive_dest;
NAME TYPE VALUE
———————————— ———– ——————————
log_archive_config string DG_CONFIG=(zxdb,zxdbdg,zxdbdg1
)
log_archive_dest string
log_archive_dest_1 string LOCATION=/u01/app/oracle/orada
ta/zxdbdg/archivelog VALID_FOR
=(ALL_LOGFILES,ALL_ROLES) DB_U
NIQUE_NAME=zxdb
log_archive_dest_10 string
log_archive_dest_2 string SERVICE=zxdb LGWR ASYNC VALID_
FOR=(ONLINE_LOGFILES,PRIMARY_R
OLE) DB_UNIQUE_NAME=zxdb
这里的log_archive_dest_1明显不对,db_unique_name配置到primary库上去了。这里就是错误的根源。
修改log_archive_dest_2
alter system set log_archive_dest_1=’LOCATION=/u01/app/oracle/oradata/zxdbdg/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=zxdbdg‘;
这个备库的db_unique_name为zxdbdg;
SQL> show parameter db_unique_name;
NAME TYPE VALUE
———————————— ———– ——————————
db_unique_name string zxdbdg
然后recover managed standby database cancel,成功。
问题到此解决,有很多的朋友在喜欢安装Oracle的高级应用,比如DG,RAC,网上也有不少的网友提供了自己的过程,如果不仔细研究,仅仅只 是完全的囫囵吞枣,对我们的学习是毫无意义的。