[20211021]關於undo段頭事務表.txt

lfree發表於2021-10-22

[20211021]關於undo段頭事務表.txt

--//寫一個awk指令碼,看看段頭事務表是如何連結一起的。純粹為了學習awk命令。

1.環境:
SCOTT@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

2.檢視回滾段:
SCOTT@book> select * from v$rollname ;
         USN NAME
------------ ----------------------------------------
           0 SYSTEM
           1 _SYSSMU1_3724004606$
           2 _SYSSMU2_2996391332$
           3 _SYSSMU3_1723003836$
           4 _SYSSMU4_1254879796$
           5 _SYSSMU5_898567397$
           6 _SYSSMU6_1263032392$
           7 _SYSSMU7_2070203016$
           8 _SYSSMU8_517538920$
           9 _SYSSMU9_1650507775$
          10 _SYSSMU10_1197734989$
11 rows selected.

SCOTT@book> @ tix
New tracefile_identifier =  /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_48762_0001.trc

SCOTT@book> alter system dump undo header "_SYSSMU2_2996391332$";
System altered.

3.檢視轉儲:
  TRN CTL:: seq: 0x07c5 chd: 0x000f ctl: 0x0021 inc: 0x00000000 nfb: 0x0002
                        ~~~~~~~~~~~~~~~~~~~~~~~
            mgc: 0xb000 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
            uba: 0x00c0074a.07c5.14 scn: 0x0003.7fb71808
--//chd: 0x000f 表示頭,ctl: 0x0021 尾。
--//hd => had , tl=>tail
--//實際上透過uel指向的的slot位連線index串在一起的。
--//undo段頭事務表是陣列實際上又是一個連結串列結構。

Version: 0x01
  FREE BLOCK POOL::
    uba: 0x00c0074a.07c5.1c ext: 0x2  spc: 0x1156
    uba: 0x00000000.07c5.0c ext: 0x2  spc: 0xd2e
    uba: 0x00c0073c.07c5.08 ext: 0x2  spc: 0x93a
    uba: 0x00000000.07bf.01 ext: 0x2  spc: 0x1f84
    uba: 0x00000000.0635.01 ext: 0x2  spc: 0x1f84
  TRN TBL::

  index  state cflags  wrap#    uel         scn            dba            parent-xid    nub     stmt_num    cmt
  ------------------------------------------------------------------------------------------------
   0x00    9    0x00  0x0c5e  0x001b  0x0003.7fb72a98  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x01    9    0x00  0x0c63  0x0005  0x0003.7fb73bd3  0x00c0074a  0x0000.000.00000000  0x00000001   0x00000000  1634781901
   0x02    9    0x00  0x0c5f  0x0000  0x0003.7fb72a92  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x03    9    0x00  0x0c60  0x0009  0x0003.7fb71cf1  0x00c00747  0x0000.000.00000000  0x00000001   0x00000000  1634776077
   0x04    9    0x00  0x0c62  0x0008  0x0003.7fb73b3f  0x00c0074a  0x0000.000.00000000  0x00000001   0x00000000  1634781901
   0x05    9    0x00  0x0c63  0x0011  0x0003.7fb73bdf  0x00c0074a  0x0000.000.00000000  0x00000001   0x00000000  1634781901
   0x06    9    0x00  0x0c63  0x0015  0x0003.7fb72b3c  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x07    9    0x00  0x0c5f  0x001e  0x0003.7fb71dbd  0x00c00747  0x0000.000.00000000  0x00000001   0x00000000  1634776077
   0x08    9    0x00  0x0c61  0x000e  0x0003.7fb73b5d  0x00c0074a  0x0000.000.00000000  0x00000001   0x00000000  1634781901
   0x09    9    0x00  0x0c62  0x000c  0x0003.7fb71d11  0x00c00747  0x0000.000.00000000  0x00000001   0x00000000  1634776077
   0x0a    9    0x00  0x0c60  0x0018  0x0003.7fb72a5c  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x0b    9    0x00  0x0c60  0x0020  0x0003.7fb72ac8  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x0c    9    0x00  0x0c61  0x001c  0x0003.7fb71d19  0x00c00747  0x0000.000.00000000  0x00000001   0x00000000  1634776077
   0x0d    9    0x00  0x0c62  0x001a  0x0003.7fb71b69  0x00c00742  0x0000.000.00000000  0x00000001   0x00000000  1634776075
   0x0e    9    0x00  0x0c60  0x0001  0x0003.7fb73b5f  0x00c0074a  0x0000.000.00000000  0x00000001   0x00000000  1634781901
   0x0f    9    0x00  0x0c60  0x000d  0x0003.7fb71890  0x00c00742  0x0000.000.00000000  0x00000001   0x00000000  1634775474
   0x10    9    0x00  0x0c61  0x0003  0x0003.7fb71c38  0x00c00747  0x0000.000.00000000  0x00000001   0x00000000  1634776077
   0x11    9    0x00  0x0c5e  0x0021  0x0003.7fb73bf1  0x00c0074a  0x0000.000.00000000  0x00000001   0x00000000  1634781901
   0x12    9    0x00  0x0c60  0x000b  0x0003.7fb72ab8  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x13    9    0x00  0x0c62  0x000a  0x0003.7fb72a0c  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x14    9    0x00  0x0c61  0x0016  0x0003.7fb73acf  0x00c0074a  0x0000.000.00000000  0x00000002   0x00000000  1634781901
   0x15    9    0x00  0x0c61  0x001f  0x0003.7fb73915  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634781601
   0x16    9    0x00  0x0c5d  0x0004  0x0003.7fb73b19  0x00c0074a  0x0000.000.00000000  0x00000001   0x00000000  1634781901
   0x17    9    0x00  0x0c61  0x0013  0x0003.7fb7206c  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634776375
   0x18    9    0x00  0x0c61  0x0002  0x0003.7fb72a82  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x19    9    0x00  0x0c60  0x0014  0x0003.7fb73ab9  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634781901
   0x1a    9    0x00  0x0c61  0x0010  0x0003.7fb71bce  0x00c00747  0x0000.000.00000000  0x00000006   0x00000000  1634776076
   0x1b    9    0x00  0x0c5e  0x0012  0x0003.7fb72aa0  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x1c    9    0x00  0x0c60  0x0007  0x0003.7fb71d69  0x00c00747  0x0000.000.00000000  0x00000001   0x00000000  1634776077
   0x1d    9    0x00  0x0c60  0x0017  0x0003.7fb71ecd  0x00c00749  0x0000.000.00000000  0x00000003   0x00000000  1634776077
   0x1e    9    0x00  0x0c61  0x001d  0x0003.7fb71e1e  0x00c00747  0x0000.000.00000000  0x00000001   0x00000000  1634776077
   0x1f    9    0x00  0x0c61  0x0019  0x0003.7fb73a71  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634781901
   0x20    9    0x00  0x0c60  0x0006  0x0003.7fb72ada  0x00c00749  0x0000.000.00000000  0x00000001   0x00000000  1634778476
   0x21    9    0x00  0x0c63  0xffff  0x0003.7fb73c8b  0x00c0074a  0x0000.000.00000000  0x00000001   0x00000000  1634781901
  EXT TRN CTL::
--//寫一個指令碼驗證這個過程

4.繼續:

$ grep "^   0x..    9"  /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_48762_0001.trc | awk '{print $1,$5}' | sed "s/ 0x00/ 0x/;s/ 0xff/ 0x/" >| b2.txt
$ cat b2.txt
0x00 0x1b
0x01 0x05
0x02 0x00
0x03 0x09
0x04 0x08
0x05 0x11
0x06 0x15
0x07 0x1e
0x08 0x0e
0x09 0x0c
0x0a 0x18
0x0b 0x20
0x0c 0x1c
0x0d 0x1a
0x0e 0x01
0x0f 0x0d
0x10 0x03
0x11 0x21
0x12 0x0b
0x13 0x0a
0x14 0x16
0x15 0x1f
0x16 0x04
0x17 0x13
0x18 0x02
0x19 0x14
0x1a 0x10
0x1b 0x12
0x1c 0x07
0x1d 0x17
0x1e 0x1d
0x1f 0x19
0x20 0x06
0x21 0xff

$ cat f.awk
{
    a[$1]=$2
}
END {
    c=1
    while ( h != "0xff" )
    {
        print h,a[h],c
        h=a[h]
        c++
    }
}

$ awk -v h=0x0f -f f.awk b2.txt
0x0f 0x0d 1
0x0d 0x1a 2
0x1a 0x10 3
0x10 0x03 4
0x03 0x09 5
0x09 0x0c 6
0x0c 0x1c 7
0x1c 0x07 8
0x07 0x1e 9
0x1e 0x1d 10
0x1d 0x17 11
0x17 0x13 12
0x13 0x0a 13
0x0a 0x18 14
0x18 0x02 15
0x02 0x00 16
0x00 0x1b 17
0x1b 0x12 18
0x12 0x0b 19
0x0b 0x20 20
0x20 0x06 21
0x06 0x15 22
0x15 0x1f 23
0x1f 0x19 24
0x19 0x14 25
0x14 0x16 26
0x16 0x04 27
0x04 0x08 28
0x08 0x0e 29
0x0e 0x01 30
0x01 0x05 31
0x05 0x11 32
0x11 0x21 33
0x21 0xff 34

5.換一個段頭測試:

SCOTT@book> @ tix
New tracefile_identifier =  /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_48762_0002.trc

SCOTT@book> alter system dump undo header "_SYSSMU3_1723003836$";
System altered.

$ grep "^   0x..    9"  /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_48762_0002.trc | awk '{print $1,$5}' | sed "s/ 0x00/ 0x/;s/ 0xff/ 0x/" |awk -v h=0x0f -f f.awk
0x0f 0x18 1
0x18 0x0a 2
0x0a 0x1d 3
0x1d 0x10 4
0x10 0x0b 5
0x0b 0x02 6
0x02 0x12 7
0x12 0x00 8
0x00 0x1a 9
0x1a 0x15 10
0x15 0x01 11
0x01 0x1c 12
0x1c 0x13 13
0x13 0x1b 14
0x1b 0x20 15
0x20 0x08 16
0x08 0x19 17
0x19 0x07 18
0x07 0x11 19
0x11 0x0d 20
0x0d 0x0e 21
0x0e 0x1f 22
0x1f 0x06 23
0x06 0x16 24
0x16 0x1e 25
0x1e 0x17 26
0x17 0x03 27
0x03 0x09 28
0x09 0x0c 29
0x0c 0x21 30
0x21 0x05 31
0x05 0xff 32
--//ok。我寫的grep過濾有點問題,如果存在事務第2個欄位不是9而是10的情況下存在問題。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2838715/,如需轉載,請註明出處,否則將追究法律責任。

相關文章