RDBMS 12.1.2.0
问题1
主备不同步了,应该有半年-1年没有同步了。
备库上显示,近期的日志已经传送到了备库,备库上保留了大量的归档日志。
查看GAP。发现GAP是在1100-1200之间
使用前一天主库的备份进行恢复备库。(没有恢复控制文件,直接恢复数据)
结果恢复的时候,恢复完毕后,发现recover的时候,需要200-300的归档日志。正常应该是需要1100以后的归档日志的。
奇了怪了。
这个问题,后来经过分析,发现在这半年-1年的时间内。主库上已经增加了好几个数据文件。而备库上没有同步过来,所以在恢复的时候,没有恢复控制文件,只恢复数据的话,所以备库上只恢复到备库的控制文件记录到的那些数据文件(想想控制文件的作用,控制文件里面记录了什么等等,就明白了)。
通过在主备库上查看report schema,发现果然如此。
再次在主库上创建备库的控制文件,在备库上再次还原备库控制文件、数据文件。显示正常,显示不需要200-300的归档日志了。
所以,这个很容易理解“recover database using backup controlfile”这句的意思了吧 ?
问题2
在对另一套备库,进行restore后,提示ORA-16016等错误。然后发现归档日志已经有了(有几个存在的归档日志死活无法recover),但是recover的时候,提示执行recover错误,对归档日志的recover的sql无法执行等等。
随后增量备份,增量恢复后,没有问题,绕过这个有问题的归档日志了。
但是再次recover的时候,提示“RMAN-11003 ORA-16145” 等错误。再次使用增量恢复后,正常。
目前这个问题,没有找到原因,初步猜测,和主备库之间的网络有关(异地的主备库,2M的带宽,日志很容易卡住,可能日志没有传输完毕,备库开始recover了,报错)。
关于这几个错误的解释:
[oracle@test /home/oracle]$oerr ora 16145
16145, 00000, "archival for thread# %s sequence# %s in progress"
// *Cause: The indicated archived log file is not available for recovery
// due to the fact that it is still being archived.
// *Action: Verify that archival of the indicated log file has completed
// and reissue the RECOVER STANDBY DATABASE command.
[oracle@test /home/oracle]$oerr ora 16016
16016, 00000, "archived log for thread %s sequence# %s unavailable"
// *Cause: Redo apply timed out waiting for the requested archived log
// file.
// *Action: Verify that the primary database is still archiving redo data to
// the standby database and reissue the RECOVER STANDBY DATABASE
// command.
[oracle@test /home/oracle]$oerr RMAN 11003
11003, 1, "failure during parse/execution of SQL statement: %s"
// *Cause: This is an informational message only.
// *Action: No action is required.
[oracle@test /home/oracle]$
END