ORA-600(kcrrupirfs.20)错误

在客户的数据库告警日志中发现这个错误。
错误信息如下:

Thu Sep 29 14:29:26 2011
ALTER DATABASE force logging
Thu Sep 29 14:29:26 2011
ALTER DATABASE FORCE LOGGING command IS waiting FOR existingdirect writes TO finish. This may take a long TIME.
Completed: ALTER DATABASE force logging
LAST_CHECK
Thu Sep 29 14:32:54 2011
ALTER SYSTEM SET log_archive_dest_2='service=dbnamepri lgwr async valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=dbnamepri' SCOPE=BOTH;
Thu Sep 29 14:33:08 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_262532.trc:
ORA-16057: DGID FROM server NOT IN DATA Guard configuration
Thu Sep 29 14:33:08 2011
PING[ARC0]: Heartbeat failed TO CONNECT TO standby 'dbnamepri'. Error IS 16057.
Thu Sep 29 14:34:01 2011
ALTER SYSTEM SET log_archive_config='DG_CONFIG=(dbnamedb,dbnamepri)' SCOPE=BOTH;
Thu Sep 29 14:34:11 2011
ALTER SYSTEM SET fal_client='dbnamedb' SCOPE=BOTH;
Thu Sep 29 14:34:12 2011
ALTER SYSTEM SET fal_server='dbnamepri' SCOPE=BOTH;
Thu Sep 29 14:34:23 2011
ALTER SYSTEM SET standby_file_management='auto' SCOPE=BOTH;
Thu Sep 29 14:34:33 2011
ARC0: STARTING ARCH PROCESSES
Thu Sep 29 14:34:33 2011
ALTER SYSTEM SET log_archive_max_processes=3 SCOPE=BOTH;
Thu Sep 29 14:34:33 2011
ALTER SYSTEM SET db_file_name_convert='/dev/','/dev/' SCOPE=SPFILE;
ARC2: Archival started
ARC0: STARTING ARCH PROCESSES COMPLETE
ARC2 started WITH pid=83, OS id=1020046
Thu Sep 29 14:34:34 2011
ALTER SYSTEM SET log_file_name_convert='/dev/','/dev/' SCOPE=SPFILE;
Thu Sep 29 14:37:28 2011
ALTER SYSTEM SET log_archive_dest_state_1='enable' SCOPE=BOTH;
Thu Sep 29 14:37:29 2011
ALTER SYSTEM SET log_archive_dest_state_2='enable' SCOPE=BOTH;
Thu Sep 29 14:38:16 2011
ARCH: Possible network disconnect WITH PRIMARY DATABASE
LNS1 started WITH pid=133, OS id=745664
Thu Sep 29 15:12:11 2011
Thread 1 advanced TO log SEQUENCE 58300
CURRENT log# 2 seq# 58300 mem# 0: /dev/ryredodbs02
Thu Sep 29 15:12:12 2011
******************************************************************
LGWR: Setting 'active' archival FOR destination LOG_ARCHIVE_DEST_2
******************************************************************
LNS: Standby redo logfile selected FOR thread 1 SEQUENCE 58300 FOR destination LOG_ARCHIVE_DEST_2
Thu Sep 29 15:15:02 2011
Thread 1 advanced TO log SEQUENCE 58301
CURRENT log# 1 seq# 58301 mem# 0: /dev/ryredodbs01
Thu Sep 29 15:15:03 2011
LNS: Standby redo logfile selected FOR thread 1 SEQUENCE 58301 FOR destination LOG_ARCHIVE_DEST_2
Thu Sep 29 15:15:51 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_262532.trc:
ORA-00600: internal error code, arguments: [kcrrupirfs.20], [3], [0], [], [], [], [], []
Thu Sep 29 15:15:53 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_262532.trc:
ORA-00600: internal error code, arguments: [kcrrupirfs.20], [3], [0], [], [], [], [], []
Thu Sep 29 15:15:53 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_262532.trc:
ORA-00600: internal error code, arguments: [kcrrupirfs.20], [3], [0], [], [], [], [], []
Thu Sep 29 15:15:53 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_262532.trc:
ORA-00600: internal error code, arguments: [kcrrupirfs.20], [3], [0], [], [], [], [], []
Thu Sep 29 15:15:53 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_262532.trc:
ORA-00600: internal error code, arguments: [kcrrupirfs.20], [3], [0], [], [], [], [], []
Thu Sep 29 15:15:53 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_262532.trc:
ORA-00600: internal error code, arguments: [kcrrupirfs.20], [3], [0], [], [], [], [], []
Thu Sep 29 15:15:55 2011
ARCH: Detected ARCH process failure
ARCH: STARTING ARCH PROCESSES
ARC0: Archival started
ARCH: STARTING ARCH PROCESSES COMPLETE
ARC0 started WITH pid=112, OS id=1052728
ARC0: Becoming the heartbeat ARCH

客户的10G DATA GUARD环境,在新增一个物理DATA GUARD配置的时候出现了ORA-600错误。
这个ORA-600[kcrrupirfs.20]的错误在metalink上的记录并不多,绝大部分都是和归档相关,不过具体分析对于当前错误的借鉴并不大。
不过仔细看了一下错误发生之前所进行的修改,就基本清楚导致问题的原因了。
客户在配置新的DATA GUARD的时候,先设置了LOG_ARCHIVE_DEST_N参数,然后才设置LOG_ARCHIVE_CONFIG参数。而Oracle会在配置LOG_ARCHIVE_DEST_N参数的时候,根据DB_UNIQUE_NAME的值到LOG_ARCHIVE_CONFIG的DG_CONFIG配置中寻找对应的值,如果没有找到,就会引发错误。而随后设置LOG_ARCHIVE_CONFIG参数的时候并不会引发LOG_ARCHIVE_DEST_N参数重新解析,所以这个问题一直没有解决。
以前这种错误碰到过很多次了,但是出现ORA-600错误的还是第一次。解决方法很简单,只需要设置LOG_ARCHIVE_DEST_STATE_N参数就可以使得LOG_ARCHIVE_DEST_N重新进行解析:

Thu Sep 29 15:44:24 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_803104.trc:
ORA-00600: internal error code, arguments: [kcrrupirfs.20], [3], [0], [], [], [], [], []
Thu Sep 29 15:44:24 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_803104.trc:
ORA-00600: internal error code, arguments: [kcrrupirfs.20], [3], [0], [], [], [], [], []
Thu Sep 29 15:44:25 2011
ARCH: Detected ARCH process failure
ARCH: STARTING ARCH PROCESSES
ARC0: Archival started
ARCH: STARTING ARCH PROCESSES COMPLETE
ARC0 started WITH pid=112, OS id=876882
ARC0: Becoming the heartbeat ARCH
Thu Sep 29 15:44:25 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_876882.trc:
ORA-00317: file TYPE 0 IN header IS NOT log file
ORA-00334: archived log: '/arch/1_58212_665274343.dbf'
Thu Sep 29 15:44:25 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_876882.trc:
ORA-00317: file TYPE 0 IN header IS NOT log file
ORA-00334: archived log: '/arch/1_58212_665274343.dbf'
FAL[server, ARC0]: FAL archive failed, see trace file.
Thu Sep 29 15:44:25 2011
Errors IN file /oracle/admin/dbnamedb/bdump/dbnamedb_arc0_876882.trc:
ORA-16055: FAL request rejected
ARCH: FAL archive failed. Archiver continuing
Thu Sep 29 15:44:25 2011
ORACLE Instance dbnamedb - Archival Error. Archiver continuing.
Thu Sep 29 15:44:39 2011
ALTER SYSTEM SET log_archive_dest_state_2='reset' SCOPE=BOTH;
Thu Sep 29 15:44:45 2011
Errors IN file /oracle/admin/dbnamedb/udump/dbnamedb_fal_1024178.trc:
ORA-00317: file TYPE 0 IN header IS NOT log file
ORA-00334: archived log: '/arch/1_58212_665274343.dbf'
Thu Sep 29 15:44:46 2011
FAL[server]: Fail TO queue the whole FAL gap
GAP - thread 1 SEQUENCE 58212-58212
DBID 381481151 branch 665274343
Thu Sep 29 15:55:49 2011
ALTER SYSTEM SET log_archive_dest_state_2='enable' SCOPE=BOTH;
Thu Sep 29 16:02:48 2011
Thread 1 advanced TO log SEQUENCE 58302
CURRENT log# 3 seq# 58302 mem# 0: /dev/ryredodbs03
Thu Sep 29 16:02:49 2011
******************************************************************
LGWR: Setting 'active' archival FOR destination LOG_ARCHIVE_DEST_2
******************************************************************
LNS: Standby redo logfile selected FOR thread 1 SEQUENCE 58302 FOR destination LOG_ARCHIVE_DEST_2
Thu Sep 29 16:17:06 2011
Thread 1 advanced TO log SEQUENCE 58303
CURRENT log# 2 seq# 58303 mem# 0: /dev/ryredodbs02
Thu Sep 29 16:17:07 2011
LNS: Standby redo logfile selected FOR thread 1 SEQUENCE 58303 FOR destination LOG_ARCHIVE_DEST_2
Thu Sep 29 16:47:40 2011
Thread 1 advanced TO log SEQUENCE 58304
CURRENT log# 1 seq# 58304 mem# 0: /dev/ryredodbs01
Thu Sep 29 16:47:41 2011
LNS: Standby redo logfile selected FOR thread 1 SEQUENCE 58304 FOR destination LOG_ARCHIVE_DEST_2

可以看到,设置LOG_ARCHIVE_DEST_STATE_2参数后,问题解决。
对于物理DATA GUARD在设置参数时,一定要注意顺序,LOG_ARCHIVE_CONFIG参数要在LOG_ARCHIVE_DEST_N之前进行设置。

This entry was posted in BUG and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *