11G RAC库 ORA-00600[ktubko_1]错误

联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

标题:11G RAC库 ORA-00600[ktubko_1]错误

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

数据库版本信息

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "www.xifenfei.com" from dual;

www.xifenfei.com
-------------------
2012-06-12 14:44:53

数据库启动报ORA-00600[ktubko_1]错误

Database Characterset is ZHS16GBK
Errors in file /u01/diag/rdbms/xff/XFF1/trace/XFF1_smon_17248.trc  (incident=21754):
ORA-00600: internal error code, arguments: [ktubko_1], [], [], [], [], [], [], [], [], [], [], []
Incident details in: /u01/diag/rdbms/xff/XFF1/incident/incdir_21754/XFF1_smon_17248_i21754.trc
Tue Jun 12 10:37:10 2012
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
ORACLE Instance XFF1 (pid = 19) - Error 600 encountered while recovering transaction (4, 2) on object 5887.
Errors in file /u01/diag/rdbms/xff/XFF1/trace/XFF1_smon_17248.trc:
ORA-00600: internal error code, arguments: [ktubko_1], [], [], [], [], [], [], [], [], [], [], []

查看trace文件

Incorrect next uba in kturCurrBackoutOneChg while backing out xid: 0x0004.002.0000022b uba: 0x00c02068.00af.3b
Undo record:
ktubu redo: slt: 2 rci: 58 opc: 10.22 objn: 5887 objd: 5887 tsn: 1
Undo type:  Regular undo       Undo type:  Last buffer split:  No 
Tablespace Undo:  No 
             0x00000000
index undo for leaf key operations
KTB Redo 
op: 0x04  ver: 0x01  
compat bit: 4 (post-11) padding: 1
op: L  itl: xid:  0x0003.003.0000030a uba: 0x00c0200c.010a.15
                      flg: C---    lkc:  0     scn: 0x0000.00118c55
Dump kdilk : itl=3, kdxlkflg=0x1 sdc=0 indexid=0x800df2 block=0x00800df3
(kdxlre): restore leaf row (clear leaf delete flags)
key :(5):  02 c1 0d 01 80
keydata/bitmap: (6):  00 81 0f 41 00 01
Undo block: tsn 0x2 rdba: 0xc02068
Dump of buffer cache at level 4 for tsn=2 rdba=12591208
BH (0x33ff7264) file#: 3 rdba: 0x00c02068 (3/8296) class: 24 ba: 0x33f24000

*** 2012-06-12 10:36:40.265
  set: 5 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,0
  dbwrid: 0 obj: -1 objn: 0 tsn: 2 afn: 3 hint: f
  hash: [0x3e78a49c,0x3e78a49c] lru: [0x33ff73ec,0x33ff723c]
  obj-flags: object_ckpt_list
  ckptq:[0x3e05cd68,0x33ff7f0c]fileq:[0x3e05cda4,0x3e05cda4]objq:[0x3b9094a4,0x3b9094a4]objaq:[0x33ff7acc,0x3b909494]
  st: XCURRENT md: NULL fpin: 'ktuwh23: ktubko' tch: 1
  flags: buffer_dirty redo_since_read
  LRBA: [0x15.26.0] LSCN: [0x0.11acb6] HSCN: [0x0.11acb6] HSUB: [1]
Data block dump: tsn: 0x1 rdba: 0x800df3
Dump of buffer cache at level 3 for tsn=1 rdba=8392179
BH (0x33ff70b4) file#: 2 rdba: 0x00800df3 (2/3571) class: 1 ba: 0x33f20000
  set: 5 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,0
  dbwrid: 0 obj: 5887 objn: 5887 tsn: 1 afn: 2 hint: f
  hash: [0x3e7d85e4,0x3e7d85e4] lru: [0x33ff723c,0x3e05c760]
  ckptq: [NULL] fileq: [NULL] objq: [0x3b9092a8,0x3b9092a8] objaq: [0x3b9092a0,0x3b9092a0]
  st: XCURRENT md: NULL fpin: 'kdiwh27: kdiulk' tch: 1
  flags:
  LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
  buffer tsn: 1 rdba: 0x00800df3 (2/3571)
  scn: 0x0000.00118c67 seq: 0x01 flg: 0x06 tail: 0x8c670601
  frmt: 0x02 chkval: 0x5d04 type: 0x06=trans data

Block header dump:  0x00800df3
 Object id on Block? Y
 seg/obj: 0x16ff  csc: 0x00.118c60  itc: 3  flg: E  typ: 2 - INDEX
     brn: 0  bdba: 0x800df0 ver: 0x01 opc: 0
     inc: 0  exflg: 0
 
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
0x02   0x0006.01d.00000319  0x00c00332.009b.15  --U-    1  fsc 0x000f.00118c67
0x03   0x0003.003.0000030a  0x00c0200c.010a.15  C---    0  scn 0x0000.00118c55


kcra_dump_redo_internal: skipped for critical process
Dumping redo for undo$
kcra_dump_redo_internal: skipped for critical process

*** 2012-06-12 10:36:43.906
Incident 21754 created, dump file: /u01/diag/rdbms/xff/XFF1/incident/incdir_21754/XFF1_smon_17248_i21754.trc
ORA-00600: internal error code, arguments: [ktubko_1], [], [], [], [], [], [], [], [], [], [], []

ORACLE Instance XFF1 (pid = 19) - Error 600 encountered while recovering transaction (4, 2) on object 5887.

*** 2012-06-12 10:37:10.646
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=3, mask=0x0)
----- Error Stack Dump -----
ORA-00600: internal error code, arguments: [ktubko_1], [], [], [], [], [], [], [], [], [], [], []
----- SQL Statement (None) -----
Current SQL information unavailable - no cursor.

----- Call Stack Trace -----
calling              call     entry                argument values in hex      
location             type     point                (? means dubious value)     
-------------------- -------- -------------------- ----------------------------
skdstdst()+41        call     kgdsdst()            BFFD84FC ? 2 ?
ksedst1()+77         call     skdstdst()           BFFD84FC ? 0 ? 1 ? 8592A48 ?
                                                   85928C6 ? 8592A48 ?
ksedst()+33          call     ksedst1()            0 ? 1 ?
dbkedDefDump()+2704  call     ksedst()             0 ? 0 ? 3FFE17CC ? 3E7C5344 ?
                                                   1 ? 1 ?
ksedmp()+47          call     dbkedDefDump()       3 ? 0 ?
kturRecoverTxn()+52  call     ksedmp()             3 ? B6B3FEA4 ? 2C ?
471                                                B6B3FE38 ? 1 ? B6B3FE58 ?
kturRecoverUndoSegm  call     kturRecoverTxn()     BFFD9078 ? 2 ? 1 ? 0 ? 11 ?
ent()+1091                                         4 ? 1 ?
kturRecoverActiveTx  call     kturRecoverUndoSegm  4 ? 0 ? 1 ? 0 ? FFFF ? 11 ?
ns()+931                      ent()                4 ?
ktprbeg()+281        call     kturRecoverActiveTx  10 ? 0 ?
                              ns()                 
ktmmon()+13050       call     ktprbeg()            0 ? 1 ? 0 ? B6B5B72C ? 0 ?
                                                   0 ?
ktmSmonMain()+174    call     ktmmon()             20018C2C ? B6B46D2C ?
                                                   114E7B00 ? 0 ? 0 ? B6B59F50 ?
ksbrdp()+826         call     00000000             20018C2C ? 432A884E ? 0 ? 0 ?
                                                   0 ? 0 ?
opirip()+559         call     ksbrdp()             0 ? 0 ? 0 ? 0 ? 0 ? 0 ?
opidrv()+515         call     opirip()             32 ? 4 ? BFFDB20C ?
sou2o()+80           call     opidrv()             32 ? 4 ? BFFDB20C ?
opimai_real()+230    call     sou2o()              BFFDB1F0 ? 32 ? 4 ?
                                                   BFFDB20C ?
ssthrdmain()+212     call     00000000             3 ? BFFDB338 ? 0 ? 4318AF14 ?
                                                   BFFDB2F4 ? 4317E670 ?
main()+147           call     ssthrdmain()         3 ? BFFDB338 ?
__libc_start_main()  call     00000000             1 ? BFFDB434 ? BFFDB43C ?
+220                                               4317E828 ? 0 ? 1 ?
_start()+33          call     __libc_start_main()  856F1C4 ? 1 ? BFFDB434 ?
                                                   BCF1440 ? BCF1430 ?
                                                   43170790 ?
 

--------------------- Binary Stack Dump ---------------------

通过上面的trace可以看出是2/3571中包含了事务,但是和3/8296[4号回滚段]回滚中的信息不相符,从而出现了在数据库启动回滚的时候出现该错误.查询mos[ID 1318986.1]发现这个是数据库的Bug 10205230比较相似,虽说在11.2.0.2中修复而且在asm中不受该影响,我这里库是11.2.0.3的asm rac照样出现该bug.

解决方法
通过alert日志提示object可以找到object_id=5887.当然也可以通过trace中的rdba来确定

SQL> col OBJECT_NAME for a30 
SQL> select object_name,object_type,owner from dba_objects where object_id=5887;

OBJECT_NAME                    OBJECT_TYPE         OWNER
------------------------------ ------------------- ------------------------------
WRI$_ADV_MESSAGE_GROUPS_PK     INDEX               SYS


SQL> alter index sys.WRI$_ADV_MESSAGE_GROUPS_PK rebuild online;

Index altered.

补充说明:如果损坏对象是表,需要使用DBMS_REPAIR跳过坏块,然后重建表

重启数据库观察
数据库已经正常,开始报undo回滚段错误的记录已经不再存在,数据库恢复正常

Tue Jun 12 13:50:43 2012
SMON: enabling tx recovery
Database Characterset is ZHS16GBK
Tue Jun 12 13:51:11 2012
No Resource Manager plan active
Tue Jun 12 13:52:01 2012
Starting background process GTX0
Tue Jun 12 13:52:01 2012
GTX0 started with pid=29, OS id=14234 
Starting background process RCBG
Tue Jun 12 13:52:04 2012
RCBG started with pid=41, OS id=14238 
replication_dependency_tracking turned off (no async multimaster replication found)
Tue Jun 12 13:54:01 2012
Starting background process QMNC
Tue Jun 12 13:54:01 2012
QMNC started with pid=42, OS id=14279 
Tue Jun 12 13:57:26 2012
Completed: ALTER DATABASE OPEN
此条目发表在 ORA-xxxxx 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

11G RAC库 ORA-00600[ktubko_1]错误》有 2 条评论

  1. congxu 说:

    请问,您这个数据库启动报600错,这个数据库是能起来?!我看您解决问题是在数据库open的时候操作的!?

  2. 惜分飞 说:

    ORA-600 or Data Corruption possible during shutdown normal/transactional/immediate of RAC instances in a rolling fashion

    Applies to:
    Oracle Server - Enterprise Edition - Version: 11.2.0.1 to 11.2.0.2 - Release: 11.2 to 11.2
    Information in this document applies to any platform.
    
    Description
    Bug 10205230 has been identified that under certain circumstance could cause data corruption or ORA-600 errors in 
    RAC environments.The issue can occur when shutting down Oracle RAC instances using the shutdown mode "normal, 
    transactional, or immediate" and the instance(s) are shutdown in a rolling fashion; 
    i.e. other instances remain to operate normally. The issue does not occur, if the instances are shutdown 
    using "shutdown abort" or the database is shutdown as a whole as a workaround.
    Oracle ASM instance is not impacted by this issue. 
    
    This issue could occur in 11.2.0.1 and 11.2.0.2. It has been fixed in 11.2.0.1 Exadata BP9, 
    11.2.0.2 PSU 2, 11.2.0.2 Exadata BP2 and after. We strongly recommend customers in earlier 11.2 releases 
    to proactively apply the patch for this fix as soon as possible. 
    Likelihood of Occurrence
    
    The issue could happen under certain timing conditions during shutdown normal/ transactional/ immediate 
    of RAC instances in a rolling fashion when the other instances are still under normal workload. 
    Note that this issue does not happen with shutdown abort. Oracle ASM instance is not impacted by this issue. 
    
    Possible Symptoms
    The known downstream effect includes the following:
    
    * Data corruption occurs around shutdown one or more of the RAC instances
    
    * One of the following ORA-600 asserts:
    - ORA-600 [kclchkblk_3]
    - ORA-600 [kclwcrs_6]
    - ORA-600 [ktubko_1]
    - ORA-600 [kcratr_scan_lostwrt]
    - ORA-600[3020] on the standby database
    
    Workaround or Resolution
    1. Shutdown database as a whole using abort option: 
    SQL> alter system checkpoint;
    srvctl stop database -d <db_uniqueue_name> -o abort -f
    The first command writes out dirty buffers for all instances to minimize instance recovery; 
    The srvctl command shutdown all instances with abort option and its dependent resources. 
    Shutdown abort completely by-passes the vulnerable code path of the bug.
    
    2. If shutdown instances in rolling fashion is needed, instead of shutdown normal/transactional/immediate, 
    one should shutdown each instance with the following 2 commands:
    
    SQL> alter system checkpoint local;
    SQL> shutdown abort;
    
    The first command writes out dirty buffers for this instance to minimize instance recovery. 
    Shutdown abort completely by-passes the vulnerable code path of the bug. Instance can also 
    be shutdown abort using "srvctl stop instance -d <db_unique_name> -i <instance_name> -o abort". 
    
    
    Recovery
    
    Because this bug may cause logical corruption to redo stream. 
    Below are the standard methods Oracle supports to recover from logical corruption:
    
    1.Drop and recreate the corrupt object. This may work for objects like indexes.
    2.Use DBMS_REPAIR package to repair and skip the corrupted blocks, and recreate the object with create 
    table as select.This may work for objects like tables and partition tables, but may result in data loss.
    3.Failover to a standby database that has not been affected by the data corruption. This may result in data loss.
    4.Flashback or perform point-in-time recovery. This may also result in data loss.
    
    If a standby database encounters ORA-600[3020] stuck recovery, 
    you can invoke trial recovery to see if there are other corrupt blocks:
    
    SQL> recover automatic standby database allow n corruption test;
    
    Here n can be 1 or any other integer.
    
    One can also use the following command to allow standby recovery to 
    continue by marking the problematic block as corrupt:
    
    SQL> recover automatic standby database allow n corruption;
    
    For more details, see Oracle support note 1265884.1.
    
    Depending on the nature of the corruption, there might be other recovery methods. 
    Call Oracle support for other options.
    
    Patches
    
    If possible, shutdown the database as a whole (Option 1 in workaround section) to apply the patch. If not, 
    the patch is still rolling upgradable with a slightly modified procedure as shutdown in a rolling fashion 
    in the rolling upgrade exposes the upgrade procedure to the bug. Instead of shutdown 
    normal/transactional/immediate,one should shutdown each instance with the following 2 commands:
    
    SQL> alter system checkpoint local;
    SQL> shutdown abort;
    
    The first command writes out dirty buffers for this instance to minimize instance recovery. 
    Shutdown abort completely by-passes the vulnerable code path of the bug. Instance can also 
    be shutdown abort using "srvctl stop instance -d <db_unique_name> -i <instance_name> -o abort". 
    
    Besides this special step, normal rolling upgrade procedure applies.