ORACLE 11G DG遇到的错误:ORA-01031,ORA-16191
数据库版本: 11.2.0.3
DG搭建好后,发现ARCHIVED LOG 传递不过来。
刚开始的错误如下:
SQL> select dest_name,status,error,target,process from v$archive_dest where substr(dest_name,-1) in (1,2);
DEST_NAME STATUS ERROR TARGET PROCESS
------------------------------ --------- -------------------- ------- ----------
LOG_ARCHIVE_DEST_1 VALID PRIMARY ARCH
LOG_ARCHIVE_DEST_2 ERROR ORA-01031: STANDBY LGWR
insufficient
privileges
LOG_ARCHIVE_DEST_11 INACTIVE PRIMARY ARCH
各自重建密码文件后报错如下:
SQL> select dest_name,status,error,target,process from v$archive_dest where substr(dest_name,-1) in (1,2);
DEST_NAME STATUS ERROR TARGET PROCESS
------------------------------ --------- -------------------- ------- ----------
LOG_ARCHIVE_DEST_1 VALID PRIMARY ARCH
LOG_ARCHIVE_DEST_2 ERROR ORA-16191: Primary STANDBY LGWR
log shipping client
not logged on
standby
LOG_ARCHIVE_DEST_11 INACTIVE PRIMARY ARCH
------------------------------------------------------------
METALINK上的文档ID 462219.1 DATA GUARD LOG SHIPPING FAILS WITH ERROR ORA-16191 IN 11G
这是由于11G在密码文件中启用了强密码认证方式,这特性要求主库和备库的密码要求完全一致。
解决办法
1) 关闭强密码认证。
在主库和备库上都去执行:
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON=FALSE SCOPE=BOTH;
在主库和备库上创建相同密码的密码文件:
orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>
2) 拷贝主库的密码文件到备库上,更改文件名。
主库:
scp orapworadg oradg2:/oracle/product/11.2.0/dbhome_1/dbs/
备库:
mv orapworadg orapworadg2
这里使用第二种方法得以解决。