oracle的controlfile_header
SYS@hyyk> select table_name from dict where table_name like '%CONTROL%';
TABLE_NAME------------------------------DBA_HIST_WR_CONTROLDBA_REPRESOL_STATS_CONTROLUSER_REPRESOL_STATS_CONTROLALL_REPRESOL_STATS_CONTROLV$BACKUP_CONTROLFILE_DETAILSV$BACKUP_CONTROLFILE_SUMMARYV$CONTROLFILEV$CONTROLFILE_RECORD_SECTIONV$SESSION_FIX_CONTROLV$SYSTEM_FIX_CONTROLV$DLM_TRAFFIC_CONTROLLERGV$CONTROLFILEGV$CONTROLFILE_RECORD_SECTIONGV$DLM_TRAFFIC_CONTROLLERV$DIAG_ADR_CONTROL
SYS@hyyk> select * from V$CONTROLFILE_RECORD_SECTION;
TYPERECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID---------------------------- ----------- ------------- ------------ ----------- ---------- ----------DATABASE31611000CKPT PROGRESS 8180110 000REDO THREAD 25681000REDO LOG 72163003DATAFILE52010080072FILENAME524229812000TABLESPACE 681009005TEMPORARY FILENAME 561001001RMAN CONFIGURATION 1108500000LOG HISTORY 562926216262OFFLINE RANGE 2001632122ARCHIVED LOG 584564014040BACKUP SET 404093133BACKUP PIECE 7362003133BACKUP DATAFILE 2002457177BACKUP REDOLOG 762150000DATAFILE COPY 7362001111BACKUP CORRUPTION 443710000COPY CORRUPTION 404090000DELETED OBJECT 208181111PROXY COPY 9282460000BACKUP SPFILE 1241312122DATABASE INCARNATION 562922122FLASHBACK LOG 8420480000RECOVERY DESTINATION 8011000INSTANCE SPACE RESERVATION 2810551000REMOVABLE RECOVERY FILES 3210001000RMAN STATUS 1161417177THREAD INSTANCE NAME MAPPING 0 88000MTTR 10081000DATAFILE HISTORY 568570000STANDBY DATABASE MATRIX 4003131000GUARANTEED RESTORE POINT 21220480000RESTORE POINT 21220830000DATABASE BLOCK CORRUPTION 8083840000ACM OPERATION 104646000FOREIGN ARCHIVED LOG 60410020000
record size,则表示该部分内容在controlfile 中所占据的大小,其单位是byte.
那我们通过controlfile dump来进行观察,如下:
dump controlfile header
SQL> oradebug setmypidStatement processed.SQL> ALTER SESSION SET EVENTS 'immediate trace name controlf level 1';
Session altered.
SQL> oradebug close_traceStatement processed.SQL> oradebug tracefile_name/home/ora10g/admin/roger/udump/roger_ora_8303.trc
说明:level 1--dump controlfile headerlevel 2--level 1+datafile 文件头信息level 3--level 2+可重用信息level 10 --level 3+其他全部信息
***************************************************************************LOG FILE RECORDS***************************************************************************(size = 72, compat size = 72, section max = 16, section in-use = 3,last-recid= 3, old-recno = 0, last-recno = 0)(extent = 1, blkno = 10, numrecs = 16)可知redo log该部分内容在controlfile 中所占据72 byte.
*** 2018-02-22 13:21:25.972DUMP OF CONTROL FILES, Seq # 4293 = 0x10c5V10 STYLE FILE HEADER:Compatibility Vsn = 186646528=0xb200000Db ID=2117284640=0x7e333320, Db Name='HYYK'Activation ID=0=0x0Control Seq=4293=0x10c5, File size=596=0x254File Number=0, Blksiz=16384, File Type=1 CONTROL
Compatibility Vsn:表示具体的版本号0xb200000转换后及表示100205DB ID:表示数据库的db id号Db Name:表示数据库的数据库名Activation:这里没有什么实际意义Control Seq:表示control的sequence号。File size:表示文件大小,这里但是是block(conrolfile block)File Number:在oracle内部,定义controlfile的文件号为0.Blksize:表示controlfile block的大小.File Type:表示文件类型.
既然知道controlfile header的各个部分的含义后,那么在有些针对controlfile损坏的情况下,甚至可以手工修复controlfile来解决问题。 除了dump controlfile之外,我们还可以利用操作系统命令dd+od来观察,如下:
[oracle@pc6 ~]$ dd if=/u01/app/oracle/oradata/hyyk/control01.ctl bs=16384 count=1 | od -x |head -20记录了1+0 的读入记录了1+0 的写出16384字节(16 kB)已复制0000000 c200 0000 0000 ffc0 0000 0000 0000 00000000020 f832 0000 4000 0000 0254 0000 7c7d 7a7b0000040 81a0 0000 0000 0000 0000 0000 0000 00000000060 0000 0000 0000 0000 0000 0000 0000 0000*0040000,0.0256473 秒,639 kB/秒
这个dump是os block 的信息
[oracle@pc6 ~]$dd if=/u01/app/oracle/oradata/hyyk/control01.ctl bs=16384 count=2 | od -x |head -5000000000 c200 0000 0000 ffc0 0000 0000 0000 00000000020 fba4 0000 4000 0000 01c2 0000 7c7d 7a7b--331840000040 81a0 0000 0000 0000 0000 0000 0000 00000000060 0000 0000 0000 0000 0000 0000 0000 0000*0040000 c215 0000 0001 0000 0000 0000 0000 04010040020 ee77 0000 0000 0000 0500 0a20 4d29 930a0040040 4f52 4547 0052 0000 26f4 0000 01c2 00000040060 4000 0000 0000 0001 0000 0000 0000 00000040100 4154 3247 3130 3033 3032 5437 3230 30330040120 3835 0000 0000 0000 0000 0000 0000 00000040140 fb8d 95ed d25b 3008 733f 0069 0000 00000040160 6204 305b 0000 0000 0000 0000 0000 00000040200 0000 0000 0000 0000 0000 0000 0000 0000*0040400 0000 0000 0000 0000 0008 0000 0008 00000040420 0008 0000 0000 0000 0000 0000 0000 00000040440 0001 0000 0000 0000 0000 0000 0000 00000040460 0000 0000 0000 0000 0000 0000 0000 0000*0077760 0000 0000 0000 0000 0000 0000 1501 00000100000下面针对上面dump 内容进行解析:c2表示type类型,转换后为1944000表示controlfile block size.(转换为10进制后为16384)01c2表示文件大小,单位是block,转换为10进制后为450.7c7d 7a7b表示操作系统平台的magic number号,每个操作系统对应的号码可能都不一样.
c215是头部信息,这个不用关注0001表示file type.0500 0a20表示数据库版本号4d29 930a表示DB ID号4f52 4547 0052表示DB Name,如下:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。