[小e筆記]之翻譯的翻&譯文的譯——Ora-600 [4193] WhenOpening Or Shutting Down A Database [ID 452662.1]

Ora-600 [4193] WhenOpening Or Shutting Down A Database [ID 452662.1]

Symptoms --症狀

Errors in alert.log: --警告日誌文件報錯內容

Tue Jul 17 13:38:13 2007
Errors in file /home/oracle/oracle/product/10.2.0/yms/rdbms/log/yms_smon_8337.trc:
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4193], [3552], [3554], [], [], []


yms_smon_8337.trc:
 --trace文件的內容

SO: 0xdfaec728, type: 24, owner: 0xdf266580, flag: INIT/-/-/0x00
          (buffer) PR: 0xdf1f1338 FLG: 0x1000
          class bit: 0x80000
          kcbbfbp: [BH: 0xded4bf40, LINK: 0xdfaec768]
          kcbbfbx[0]: [BH: 0xdece41d8, LINK: 0xdfaec788]
          where: ktuwh01: ktugus, why: 0
        buffer tsn: 2 rdba: 0x00c00002 (3/2)
        scn: 0x0000.03c95628 seq: 0x01 flg: 0x00 tail: 0x56280e01
        frmt: 0x02 chkval: 0x0000 type: 0x0e=KTU UNDO HEADER W/UNLIMITED EXTENTS
      BH (0xdece41d8) file#: 3 rdba: 0x00c003b6 (3/950) class: 20 ba: 0x11d6ba000
        set: 6 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
        dbwrid: 0 obj: -1 objn: 0 tsn: 2 afn: 3
        hash: [df870f70,df870f70] lru: [dece4488,dece4028]
        obj-flags: object_ckpt_list
        ckptq: [dedac4a0,ded47cb8] fileq: [dedac500,ded47cc8] objq: [ded47d78,db7bfd78]
        use: [dfaec788,dfaec788] wait: [NULL]
        st: XCURRENT md: EXCL tch: 0
        flags: mod_started gotten_in_current_mode block_written_once
        change state: ACTIVE
        change count: 1
        LRBA: [0xac3.4de07.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
        Using State Objects
          ----------------------------------------
          SO: 0xdfaec728, type: 24, owner: 0xdf266580, flag: INIT/-/-/0x00
          (buffer) PR: 0xdf1f1338 FLG: 0x1000
          class bit: 0x80000
          kcbbfbp: [BH: 0xded4bf40, LINK: 0xdfaec768]
          kcbbfbx[0]: [BH: 0xdece41d8, LINK: 0xdfaec788]
          where: ktuwh01: ktugus, why: 0
        buffer tsn: 2 rdba: 0x00c003b6 (3/950)
        scn: 0x0000.03be3c7d seq: 0x5a flg: 0x04 tail: 0x3c7d025a
        frmt: 0x02 chkval: 0x0868 type: 0x02=KTU UNDO BLOCK
      ----------------------------------------
Error 607 in redo application callback
TYP:0 CLS:20 AFN:3 DBA:0x00c003b6 OBJ:4294967295 SCN:0x0000.03be3c7d SEQ: 90 OP:5.1
ktudb redo: siz: 132 spc: 4462 flg: 0x0012 
seq: 0x0de2 rec: 0x09  

UNDO BLK:
xid: 0x0002.045.00006c61
seq: 0xde0 cnt: 0x60 irb: 0x60 icl: 0x0 flg: 0x0000

Cause --原因

When we try to apply redo to an undo block (forward changes are made by  the application of redo to a block) we check that the seq# in the undo  record matches the seq# in the redo record.

--當我們嘗試應用重做一個undo塊(前滾操作時會應用redo到undo塊上)我們會檢查undo記錄seq#(序列號)和redo記錄seq#(序列號)

These seq# should be the  same because when we apply a redo record we must apply it to the correct version of the block.

--正常情況下,這兩者的序列號是一致的

We can only apply a redo record to a  block that contains the same seq# as in the redo record. 

--這2者的序列號一致,我們才能應用redo塊到undo塊上
If the seq# do not match then ORA-600[4193] [a].[b] is raised. .

--如果不一致就會報ORA-600[4193] [a].[b]錯誤

Arg [a] Undo record seq number --> seq:0xde0 = 3552--a是undo的seq#
Arg [b] Redo record seq number --> seq: 0x0de2 = 3554
—b是redoseq#

This implies some kind of block corruption in either the redo or the undo block.

--當redo塊和undo塊不一樣時就會報錯

0xde0 = 3552 十六進制轉換爲十進制

方法如下:

SQL> select to_number('de0','xxxxx') from dual;

TO_UMBER('DE0','XXXXX')

------------------------

                   3552

Solution --解決方法

A. If Database is opened --如果數據庫沒有打開

1) Find out the rollback segment, based on the first part of the xid: 0x0002.045.00006c61

--找出回滾段,基於第一部分的xid

    usn=2 is the segment_id–usn=2是段ID

    select segment_name,status from dba_rollback_segs where segment_id=2;

    RS_DATA1    ONLINE

2) Dump the transaction table of the rollback segment to see if all TX are commited:

    alter system dump undo header RS_DATA1;

3) check the trace file created under user_dump_dest

     In the trace file search for the Keyword "TRN TBL"

TRN TBL:: 

index state cflags wrap#   uel    scn             dba 
-----------------------------------------------------------------------------
0x00   9     0x00  0x21eb1 0x0023 0x0000.d28c43e9 0x00000000 ......

state=9 means transaction is committed

4) offline the rollback segment:

     alter rollback segment rs_data1 offline;

      select status from dba_rollback_segs where segment_id=2;

5)   if STATUS=OFFLINE

      drop rollback segment RS_DATA1;

 

B. If Database doesn't open:  --數據庫關閉狀態

1.   a) If using rollback segments, remove the rollback_segments line from init.ora, and open database

--使用回滾段方法,從init.ora參數文件中移除回滾段那行,然後開啓數據庫

      b) If using undo segments set undo_management = manual in init.ora/spfile, and try to open database.

--使用undo段的方法,在參數文件中設置undo管理方式爲手動並且嘗試開啓數據庫

2. If database opens means all transactions are committed, and you can drop the rollback segment or the undo tablespace

—如果數據庫開啓意味着所有的事務都被提交,你可以刪除回滾段或者undo表空間

 

elvis

2012.10.17

知識共享~共同進步

轉載請註明:

http://blog.csdn.net/elvis_dataguru/article/details/8082800
發佈了54 篇原創文章 · 獲贊 42 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章