天天看點

Oracle 控制檔案存儲解析

控制檔案dump内容解析,希望本文幫助大家解析Oracle 控制檔案提供一個好的思路!

控制檔案塊内容分布

SQL> SELECT TYPE, 
  1         RECORD_SIZE, 
  2         RECORDS_TOTAL, 
  3         RECORD_SIZE*RECORDS_TOTAL, 
  4         ceil(record_size*records_total/((8*1024)-24))
  5    FROM v$controlfile_record_section;
 
TYPE                         RECORD_SIZE RECORDS_TOTAL SIZE     BLOCK#    BLOCKS
---------------------------- ----------- ------------- ------- ------- ---------
TITLE                                  1             1               1         1
DATABASE                             316             1     316       2         1
CKPT PROGRESS                       8180            11   89980       3        12
REDO THREAD                          256             8    2048      15         1
REDO LOG                              72            16    1152      16         1
DATAFILE                             520          1024  532480      17        66
FILENAME                             524          4146 2172504      83       266
TABLESPACE                           180          1024  184320     349        23
TEMPORARY FILENAME                    56          1024   57344     372         8
RMAN CONFIGURATION                  1108            50   55400     380         7
LOG HISTORY                           56           292   16352     387         3
OFFLINE RANGE                        200          1063  212600     390        27
ARCHIVED LOG                         584            28   16352     417         3
BACKUP SET                            96          1022   98112     420        13
BACKUP PIECE                         780          1006  784680     433        97
BACKUP DATAFILE                      200          1063  212600     530        27
BACKUP REDOLOG                        76           215   16340     557         3
DATAFILE COPY                        736          1000  736000     560        91
BACKUP CORRUPTION                     44          1115   49060     651         7
COPY CORRUPTION                       40          1227   49080     658         7
DELETED OBJECT                        20           818   16360     665         3
PROXY COPY                           928          1004  931712     668       115
BACKUP SPFILE                        124           131   16244     783         2
DATABASE INCARNATION                  56           292   16352     785         3
FLASHBACK LOG                         84          2048  172032     788        22
RECOVERY DESTINATION                 180             1     180     810         1
INSTANCE SPACE RESERVATION            28          1055   29540     811         4
REMOVABLE RECOVERY FILES              32          1000   32000     815         4
RMAN STATUS                          116           141   16356     819         3
THREAD INSTANCE NAME MAPPING          80             8     640     822         1
MTTR                                 100             8     800     823         1
DATAFILE HISTORY                     568            57   32376     824         4
STANDBY DATABASE MATRIX              400           128   51200     828         7
GUARANTEED RESTORE POINT             256          2048  524288     835        65
RESTORE POINT                        256          2108  539648     900        67
DATABASE BLOCK CORRUPTION             80          8384  670720     967        83
ACM OPERATION                        104            64    6656    1050         1
FOREIGN ARCHIVED LOG                 604          1002  605208    1051        75
PDB RECORD                           780            10    7800    1126         1
AUXILIARY DATAFILE COPY              584           128   74752    1127        10
MULTI INSTANCE REDO APPLY            556             1     556    1137         1
PDBINC RECORD                        144           113   16272    1139         2
TABLESPACE KEY HISTORY               108           151   16308    1141         2      

下面找幾個塊,進行解析,了解控制檔案資料存儲方式。

檔案頭塊

BBED> set filename '/oradata/ORCL/control01.ctl'
FILENAME /oradata/ORCL/control01.ctl
BBED> set block 0
BLOCK# 0
BBED> dump
File: /oradata/ORCL/control01.ctl (0)
Block: 0 Offsets: 0 to 511 Dba:0x00000000
00c20000 0000c0ff 00000000 00000004 10fa0000 00400000 76040000 7d7c7b7a
a0810000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000      
  • offset 1:c2,blocksize
    • 82=4096
    • a2=8192
    • c2=16384
    • e2=32768
  • offset 6~7:c0ff
  • offset 16~17:10fa,file related to growth(unit block)
  • offset 20~21
  • blocksize:0040–>4000(0100 0000 0000 0000)=16384,控制檔案每個塊的内容由兩個8k塊構成,其中一個為影子塊
  • offset 24~25:7604,塊的數量
  • offset 28~31:7d7c7b7a,magic number
  • offset 32~33:a081

1 号塊:檔案頭資訊

BBED

BBED> set block 1
BLOCK# 1
BBED> dump
File: /oradata/ORCL/control01.ctl (0)
Block: 1 Offsets: 0 to 511 Dba:0x00000000
15c20000 01000000 00000000 00000104 dc0c0000 00000000 00000013 56e1dd5c
4f52434c 00000000 1e100000 76040000 00400000 00000100 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
b05f355d d795683d bbe60b00 00800000 65cac03d 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000      

DUMP

DUMP OF CONTROL FILES, Seq # 4126 = 0x101e

V10 STYLE FILE HEADER:

Compatibility Vsn = 318767104=0x13000000

Db ID=1558045014=0x5cdde156, Db Name=’ORCL’

Activation ID=0=0x0

Control Seq=4126=0x101e, File size=1142=0x476

File Number=0, Blksiz=16384, File Type=1 CONTROL

分析

  • offset 0~0:15,表示mask
  • offset 1~1:c2,表示blocksize
  • offset 4~4:01,表示No.1 block
  • offset 24~27:00000013(倒序),表示Version(13.0.0.0)

    此處對應dump:Compatibility Vsn = 318767104=0x13000000

  • offset 28~31:56e1dd5c(倒序),表示DBID

    此處對應dump:Db ID=1558045014=0x5cdde156

  • offset 32~39:4f52434c 00000000,表示DBNAME

    此處對應dump:Db Name=’ORCL’

    下面對比一下16進制轉碼和dump擷取的值,即可得證

SQL> select dump('ORCL') from dual;
 
DUMP('ORCL')
--------------------------------------------------
Typ=96 Len=4: 79,82,67,76
 
SQL> select to_number('4f','xx'),
 2          to_number('52','xx'),
 3          to_number('43','xx'),
 4          to_number('4c','xx')
 5     from dual;
 
TO_NUMBER('4F','XX') TO_NUMBER('52','XX') TO_NUMBER('43','XX') TO_NUMBER('4C','XX')
-------------------- -------------------- -------------------- --------------------
          79               82           67           76      
  • offset 40~41:1e10,表示sequence

    此處對應dump:Control Seq=4126=0x101e

  • offset 44~45:7604(倒序),表示file size(block Number)

    此處對應dump:File size=1142=0x476

  • offset 49~50:0400(倒序),表示blocksize 16384

    此處對應dump:Blksiz=16384

  • offset 53~54:0000,表示fileNo

    此處對應dump:File Number=0

  • offset 55~56:0100,表示fileType

    此處對應dump:File Type=1 CONTROL

  • offset 105~108:bbe60b00(倒序),表示控制檔案SCN

    Controlfile Checkpointed at scn: 0x00000000000be6bb

3 号塊:CHECKPOINT PROGRESS RECORDS

BBED> set block 3
BLOCK# 3
BBED> dump
File: /oradata/ORCL/control01.ctl (0)
Block: 3 Offsets: 0 to 511 Dba:0x00000000
15c20000 03000000 00000000 00000104 4abb0000 01000000 00000000 00000000
ffffffff ffffffff ffff0000 13000000 c8790000 00000000 39eb0b00 00000000
90cac03d d695683d 01000000 00000000 24a9c03d b05f355d 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 13000000
01000000 0000d7cc 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000      

CHECKPOINT PROGRESS RECORDS
(size = 8180, compat size = 8180, section max = 11, section in-use = 0,
last-recid= 0, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 2, numrecs = 11)
THREAD #1 - status:0x1 flags:0x0 dirty:0
low cache rba:(0xffffffff.ffffffff.ffff) on disk rba:(0x13.79c8.0)
on disk scn: 0x00000000000beb39 03/26/2020 06:15:44
resetlogs scn: 0x0000000000000001 01/21/2020 08:31:18
heartbeat: 1036034387 mount id: 1563778992      

  • offset 4~4:033,表示No. 3 block
  • offset 15~16:各版本不發生變化
  • offset 20~20:01,表示thread status
    • 1 表示線程關閉
    • 2 表示線程出于open狀态
  • offset 32~41:ffffffff ffffffff ffff,表示low cache rba

    此處對應dump:low cache rba:(0xffffffff.ffffffff.ffff)

  • offset 42~51:0000 13000000 c8790000,表示on disk rba

    此處對應dump:on disk rba:(0x13.79c8.0)

  • offset 56~59:39eb0b00,表示on disk scn

    此處對應dump:on disk scn: 0x00000000000beb39

  • offset 72~75:01000000,表示resetlogs scn

    此處對應dump:resetlogs scn: 0x0000000000000001

其它

控制檔案存儲内容就不一一進行解析了,希望以上介紹會對解析Oracle 控制檔案成為一個好的開始。

Oracle 控制檔案存儲解析

繼續閱讀