​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,网上也有不少的网友提供了自己的过程,如果不仔细研究,仅仅只 是完全的囫囵吞枣,对我们的学习是毫无意义的。