ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 9.2 STANDBY数据库出现ORA-16009错误

9.2 STANDBY数据库出现ORA-16009错误

原创 Linux操作系统 作者:yangtingkun 时间:2011-01-21 22:07:01 0 删除 编辑

客户的一个9.2.0.4STANDBY数据库上发现了ORA-16009错误。

 

 

详细的错误信息为:

2011 1 28 17:30:44
ARCO :Error 16009  Creating acchive log file to 'oric1'
ora-16009 romate archive log destination must be a stand by database

Error 16009 attaching rfs server to standby instance at host 'oric1'
Error 16009 attaching to destination LOG_ARCHIVE_DEST_2 standby host 'oric1'
remote archive log destination must be a standby database

错误信息中的LOG_ARCHIVE_DEST_2参数设置的是归档到主库。配置这个参数是为了SWITCHOVER操作后,可以将当前数据库的归档发送到切换后的备库中。

不过这个错误有点奇怪,逻辑STANDBY确实可以产生日志,而物理STANDBY数据库只是应用日志,不应该产生归档,更不要说向当前的主库去远端归档了。

开始认为是Oraclebug,检查了metalink没有发现类似的情况。

后来突然意识到了,这并非是Oraclebug,在9i上就是这样实现的。

原本备库正常,后台没有错误产生。在周末的时候,执行了两次SWITCHOVER的操作,又给备库添加了STANDBY REDO LOG,将日志传输方式改为LGWR ASYNC

开始一直以为是Oraclebug,由于执行过SWITCHOVER,导致备库曾经作为主库工作过,而再次SWITCHOVER到备库后,可能某些状态被激活,从而导致了这个错误。

其实问题不是由SWITCHOVER引起的,而是由于LGWR ASYNC传输日志方式导致的。采用这种方式,主库的LGWR进程会随时先远端数据库的STANDBY REDO LOG写入日志信息,当本地日志写满后,远端STANDBY日志也会写满,这时会引发一个ARCHIVE LOG操作,而STATNDBY数据库此时会应用这个归档日志进行恢复。

既然这里产生了归档,那么由于配置了远端归档目录,自然在归档的时候也会尝试写到远端服务器,也就是当前的主库。因此上面这个错误也就产生了。

这里就看出10gDATA GUARD的优点了:可以对归档定制角色。比如本地归档可以是任何角色,而远端归档则只发生在PRIMARY角色中,如果当前是STANDBY数据库,那么这个远端归档就不会启用。

9i中并没有这样的功能,要解决这个问题,只有将初始化参数log_archive_dest_state_2设置为的defer,当以后执行SWITCHOVER操作后,还要手工设置这个参数为enable,确保作为主库可以向备库发生归档。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-684463/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1954
  • 访问量
    10634475