在逻辑STANDBY上碰到这个错误。
启动逻辑STANDBY:
SQL> alter database start logical standby apply initial 5624048054;
Database altered.
SQL> alter database register logical logfile '/data1/archivelog/1_71917_649168938.dbf';
Database altered.
SQL> alter database register logical logfile '/data1/archivelog/1_71918_649168938.dbf';
Database altered.
.
.
.
这时检查数据库的alert文件发现错误:
Thu Jan 20 13:59:54 2011
LOGMINER: Begin mining logfile: /data1/archivelog/1_72016_649168938.dbf
Thu Jan 20 13:59:54 2011
LOGMINER: Turning ON Log Auto Delete
Thu Jan 20 13:59:54 2011
Errors in file /opt/oracle/admin/mobiledb/bdump/mobiledb_p001_23044.trc:
ORA-00600: internal error code, arguments: [krvxbpx20], [1], [72016], [695], [100], [], [], []
LOGSTDBY Analyzer process P003 started with pid=31 OS id=23057
LOGSTDBY Apply process P005 started with pid=33 OS id=23061
LOGSTDBY Apply process P004 started with pid=32 OS id=23059
LOGSTDBY Apply process P006 started with pid=34 OS id=23063
LOGSTDBY Apply process P008 started with pid=36 OS id=23067
LOGSTDBY Apply process P007 started with pid=35 OS id=23065
Thu Jan 20 13:59:55 2011
LOGSTDBY status: ORA-16211: unsupported record found in the archived redo log
LOGSTDBY Apply process P005 pid=33 OS id=23061 stopped
Thu Jan 20 13:59:56 2011
Errors in file /opt/oracle/admin/mobiledb/bdump/mobiledb_lsp0_23040.trc:
ORA-12801: error signaled in parallel query server P005
ORA-16211: unsupported record found in the archived redo log
LOGSTDBY Analyzer process P003 pid=31 OS id=23057 stopped
LOGSTDBY Apply process P004 pid=32 OS id=23059 stopped
LOGSTDBY Apply process P008 pid=36 OS id=23067 stopped
LOGSTDBY Apply process P007 pid=35 OS id=23065 stopped
LOGSTDBY Apply process P006 pid=34 OS id=23063 stopped
Thu Jan 20 13:59:56 2011
krvxerpt: Errors detected in process 28, role builder.
Thu Jan 20 13:59:56 2011
krvxmrs: Leaving by exception: 600
Thu Jan 20 13:59:56 2011
Errors in file /opt/oracle/admin/mobiledb/bdump/mobiledb_p001_23044.trc:
ORA-00600: internal error code, arguments: [krvxbpx20], [1], [72016], [695], [100], [], [], []
LOGSTDBY status: ORA-00600: internal error code, arguments: [krvxbpx20], [1], [72016], [695], [100], [], [], []
在DBA_LOGSTDBY_EVENTS视图中同样可以看到这个错误,另外还可以看到ORA-16211: unsupported record found in the archived redo log的信息,报错的对象是"SYS"."SEQ$": unsupported。这应该是SYS中的一个序列。
查询metalink,文档ID 761661.1描述了这个问题,主要导致的原因是主库的SUPPLEMENTAL_LOG_DATA_MIN、SUPPLEMENTAL_LOG_DATA_PK和SUPPLEMENTAL_LOG_DATA_UI没有都设置为TRUE。从而导致一些IMU(In Memory Undo)出现在redo记录中,使得逻辑STANDBY无法应用日志。
检查了主库的设置:
SQL> select name, supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_ui
2 from v$database;
NAME SUPPLEME SUP SUP
--------- -------- --- ---
MOBILEDB IMPLICIT YES YES
SUPPLEMENTAL_LOG_DATA_MIN的值不是YES而是IMPLICIT,看来多半就是这个值导致了问题的产生。
解决问题的方法很痛苦,将主库的三个参数设置正确后,重建逻辑STANDBY数据库。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-689817/ ,如需转载,请注明出处,否则将追究法律责任。