关于10g中的X$KCVFH(续)

在“关于10g中的X$KCVFH”这篇文章里,我分析了X$KCVFH的一些基本结构,但在那篇文章里,还有很多字段我当时也不知道其含义,现在我继续分析了一下,如下是继续分析过的X$KCVFH的结构,这下子X$KCVFH的绝大多数字段的含义都可以参考这篇文章了

下文中凡是蓝色标记的地方就是我后续的补充内容:

 

10gX$KCVFH的结构:

Version 10

Column Name Data Type          Description

ADDR RAW(4)                    ADDRESS

INDX NUMBER                   INDEX

INST_ID NUMBER                INSTANCE ID

HXFIL NUMBER                  FILE#Datafile number (from control file)

HXONS NUMBER                 ONLINE | OFFLINE (from control file),HXONS 0表示 ‘OFFLINE’,为其他值表示 ‘ONLINE’

HXSTS VARCHAR2(16)           

HXERR NUMBER        ERRORdecode(HXERR, 0, NULL, 1,’FILE MISSING’,2,’OFFLINE NORMAL’, 3,’NOT VERIFIED’, 4,’FILE NOT FOUND’,5,’CANNOT OPEN FILE’, 6,’CANNOT READ HEADER’, 7,’CORRUPT HEADER’,8,’WRONG FILE TYPE’, 9,’WRONG DATABASE’, 10,’WRONG FILE NUMBER’,11,’WRONG FILE CREATE’, 12,’WRONG FILE CREATE’, 16,’DELAYED OPEN’,14, ‘WRONG RESETLOGS’, 15,’OLD CONTROLFILE’, ‘UNKNOWN ERROR’)

HXVER NUMBER        FORMATIndicates the format for the header block. The possible values are 6, 7, 8, or 0. 6  – indicates Oracle Version 67 – indicates Oracle Version 78 – indicates Oracle Version 80  – indicates the format could not be determined (for example, the header could not be read)

FHSWV NUMBER                

FHCVN NUMBER                Compatibility Vsn

FHDBI NUMBER                 DBID

FHDBN VARCHAR2(9)            DB NAME

FHCSQ NUMBER        controlfile sequence number

FHFSZ NUMBER        BLOCKS, Current datafile size in blocks

FHBSZ NUMBER        datafile block size

FHFNO NUMBER        Tablespace datafile number

FHTYP NUMBER         Type:

1 control file

2 redo log file

3 vanilla db file; that is, normal data, index, and undo blocks

4 backup control file

5 backup piece

6 temporary db file

FHRDB NUMBER       Root dba: This field only occurs in data file #1, and is the location of blocks required during bootstrapping the data dictionary (bootstrap$)

FHCRS VARCHAR2(16)  CREATION_CHANGE#Datafile creation change#

FHCRT VARCHAR2(20)  CREATION_TIMEDatafile creation timestamp

FHRLC VARCHAR2(20)  RESETLOGS_TIME, Resetlogs timestamp

FHRLC_I NUMBER      reset logs count

FHRLS VARCHAR2(16)  RESETLOGS_CHANGE#, Resetlogs change#

FHPRC VARCHAR2(20)  prev reset logs timestamp

FHPRC_I NUMBER      prev reset logs count

FHPRS VARCHAR2(16)  prev reset logs SCN

FHBTI VARCHAR2(20)    Time the backup started, Updated when executing BEGIN BACKUP on the tablespace. RMAN does not update this field.

FHBSC VARCHAR2(16)   System change number when backup started, Updated when executing BEGIN BACKUP on the tablespace. RMAN does not update this field.

FHBTH NUMBER        Thread when when backup started, Updated when executing BEGIN BACKUP on the tablespace. RMAN does not update this field.

FHSTA NUMBER          The value for the column X$KCVFH.FHSTA (file header status) for an open database with an online datafiles in versions prior to version 10 were all 4, indicating an online fuzzy status.  With version 10 of Oracle the first system tablespace datafile will have a different status of 8196 if the datafile is online and the database is open and not in backup mode. In Oracle 10g, the X$KCVFH.FHSTA column will show 8196 for system data file if COMPATIBLE is set to 10.0.0.0 or higher.  The value of 8196 is a value of 0x04, as in previous releases, plus an AND’d value of 0x2000 (8192) for internal uses. If COMPATIBLE is set to 9.2.0 (lowest possible value for Oracle 10g), the FHSTA column for system datafile will have a value of 4.   In Oracle10g, the COMPATIBLE value is irreversible if advanced to a higher value. So the value of 8196 for the fhsta (status) column for the first system tablespace datafile is normal.

FHSCN VARCHAR2(16)    CHECKPOINT_CHANGE#, Datafile checkpoint change#, Updated on every checkpoint, but not when in Hot backup state (not online backups). This must remain untouched when you are in hot backup mode, because you might get checkpoints between the BEGIN BACKUP and when you actually start the copying process.

FHTIM VARCHAR2(20)     CHECKPOINT_TIME, Datafile checkpoint timestamp

FHTHR NUMBER          THREAD#

FHRBA_SEQ NUMBER     SEQUENCE,即Redo log sequence number

FHRBA_BNO NUMBER     Block number,即the redo log file block number

FHRBA_BOF NUMBER     Byte offsetthe byte offset into the block at which the redo record starts

FHETB RAW(132)         enable threads byte,这个我不确定,是猜的

FHCPC NUMBER         CHECKPOINT_COUNT, Datafile checkpoint count

FHRTS VARCHAR2(20)    Recoverd timestamp

FHCCC NUMBER        Controlfile Checkpoint Count: Saved copy of the control file record of the checkpoint count. Helps detect old control files.

FHBCP_SCN VARCHAR2(16)  Backup Checkpoint SCN: Updated with the checkpoint done while file in Hot backup

FHBCP_TIM VARCHAR2(20)  Backup Checkpoint TIME: Updated with the checkpoint done while file in Hot backup

FHBCP_THR NUMBER   Backup Checkpoint Thread: Updated with the checkpoint done while file in Hot backup

FHBCP_RBA_SEQ NUMBER  Backup Checkpoint Sequence, Redo log sequence number: Updated with the checkpoint done while file in Hot backup

FHBCP_RBA_BNO NUMBER  the redo log file block number, Updated with the checkpoint done while file in Hot backup

FHBCP_RBA_BOF NUMBER Byte offsetthe byte offset into the block at which the redo record starts, Updated with the checkpoint done while file in Hot backup

FHBCP_ETB RAW(132)     enable threads byte,这个我不确定,是猜的

FHBHZ NUMBER          begin hot backup file size

FHXCD RAW(16)    External cache id: Used to ensure that concurrent instances access data through consistent external cache

FHTSN NUMBER            TS#Tablespace number

FHTNM VARCHAR2(30)      TABLESPACE_NAME, Tablespace name

FHRFN NUMBER            RFILE#, Tablespace relative datafile number

FHAFS VARCHAR2(16)       absolute fuzzy scn, Minimum PITR SCN

FHRFS VARCHAR2(16)       The SCN at which the recovery of this file will be complete (no longer fuzzy). Both above fuzzy SCNs must be zero unless a fuzzy flag is set, and must be greater than the checkpoint SCN

FHRFT VARCHAR2(20)      The time at which the recovery of this file will be complete (no longer fuzzy).

HXIFZ NUMBER            File is fuzzy (YES | NO)decode(hxifz, 0,’NO’, 1,’YES’, NULL)

HXNRCV NUMBER         File needs media recovery (YES | NO)decode(hxnrcv, 0,’NO’, 1,’YES’, NULL)

HXFNM VARCHAR2(513)    NAME, Datafile name

FHPOFB NUMBER

FHPNFB NUMBER

FHPRE10 NUMBER

FHFIRSTUNRECSCN VARCHAR2(16)  UNRECOVERABLE_CHANGE#, Last unrecoverable change number made to this datafile. If the database is in ARCHIVELOG mode, then this column is updated when an unrecoverable operation completes. If the database is not in ARCHIVELOG mode, this column does not get updated.

FHFIRSTUNRECTIME VARCHAR2(20)   UNRECOVERABLE_TIME, Timestamp of the last unrecoverable change. This column is updated only if the database is in ARCHIVELOG mode.

HXLMDBA NUMBER        SPACE_HEADER, The amount of space currently being used and the amount that is free, as identified in the space header. decode(hxlmdba, 0, NULL, hxlmdba)

HXLMLD_SCN VARCHAR2(16)  LAST_DEALLOC_SCN, Last deallocated SCN

 

现在我们来看一个实际的例子:

我们现在把DATA FILE #1x$kcvfh中的内容显示出来,如下所示:

SQL> exec p_sys_print_x_kcvfh;

ADDR:00000001104FA580

INDX:0

INST_ID:1

HXFIL:1

HXONS:1

HXSTS:281474976710655

HXERR:0

HXVER:0

FHSWV:0

FHCVN:169869568

FHDBI:1351724723

FHDBN:IPRATEST

FHCSQ:5895

FHFSZ:61440

FHBSZ:8192

FHFNO:1

FHTYP:3

FHRDB:4194681

FHCRS:8

FHCRT:07/22/2005 00:42:44

FHRLC:12/02/2008 15:09:41

FHRLC_I:672419381

FHRLS:551299

FHPRC:07/22/2005 00:42:25

FHPRC_I:564280945

FHPRS:1

FHBTI:

FHBSC:0

FHBTH:0

FHSTA:8196

FHSCN:39033396980

FHTIM:05/26/2009 15:46:18

FHTHR:1

FHRBA_SEQ:71

FHRBA_BNO:2

FHRBA_BOF:16

FHETB:02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

FHCPC:189

FHRTS:12/02/2008 15:09:27

FHCCC:188

FHBCP_SCN:0

FHBCP_TIM:

FHBCP_THR:0

FHBCP_RBA_SEQ:0

FHBCP_RBA_BNO:0

FHBCP_RBA_BOF:0

FHBCP_ETB:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

FHBHZ:0

FHXCD:00000000000000000000000000000000

FHTSN:0

FHTNM:SYSTEM

FHRFN:1

FHAFS:0

FHRFS:

FHRFT:

HXIFZ:1

HXNRCV:0

HXFNM:/iprat02/ipratest/system01.dbf

FHPOFB:10

FHPNFB:10

FHPRE10:0

FHFIRSTUNRECSCN:0

FHFIRSTUNRECTIME:

HXLMDBA:4194306

HXLMLD_SCN:0

 

PL/SQL procedure successfully completed

 

再把DATA FILE #1的文件头给dump出来,如下所示:

DATA FILE #1:

  (name #7) /iprat02/ipratest/system01.dbf

creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1

 tablespace 0, index=1 krfil=1 prev_file=0

 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00

 Checkpoint cnt:189 scn: 0x0009.16925ef4 05/26/2009 15:46:18

 Stop scn: 0xffff.ffffffff 05/22/2009 22:10:41

 Creation Checkpointed at scn:  0x0000.00000008 07/22/2005 00:42:44

 thread:0 rba:(0x0.0.0)

 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000

  ……省略显示部分内容

 Offline scn: 0x0000.00086982 prev_range: 0

 Online Checkpointed at scn:  0x0000.00086983 12/02/2008 15:09:41

 thread:1 rba:(0x1.2.0)

 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000

    ……省略显示部分内容

 Hot Backup end marker scn: 0x0000.00000000

 aux_file is NOT DEFINED

 V10 STYLE FILE HEADER:

       Compatibility Vsn = 169869568=0xa200100

       Db ID=1351724723=0x5091aeb3, Db Name=’IPRATEST’

       Activation ID=0=0x0

       Control Seq=5895=0x1707, File size=61440=0xf000

       File Number=1, Blksiz=8192, File Type=3 DATA

Tablespace #0 – SYSTEM  rel_fn:1

Creation   at   scn: 0x0000.00000008 07/22/2005 00:42:44

Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0

 reset logs count:0x28144e35 scn: 0x0000.00086983 reset logs terminal rcv data:0x0 scn: 0x0000.00000000

 prev reset logs count:0x21a23e71 scn: 0x0000.00000001 prev reset logs terminal rcv data:0x0 scn: 0x0000.00000000

 recovered at 12/02/2008 15:09:27

 status:0x2004 root dba:0x00400179 chkpt cnt: 189 ctl cnt:188

begin-hot-backup file size: 0

Checkpointed at scn:  0x0009.16925ef4 05/26/2009 15:46:18

 thread:1 rba:(0x47.2.10)

 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000

 ……省略显示部分内容

Backup Checkpointed at scn:  0x0000.00000000

 thread:0 rba:(0x0.0.0)

 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000

  ……省略显示部分内容

External cache id: 0x0 0x0 0x0 0x0

Absolute fuzzy scn: 0x0000.00000000

Recovery fuzzy scn: 0x0000.00000000 01/01/1988 00:00:00

Terminal Recovery Stamp  01/01/1988 00:00:00

Platform Information:     Creation Platform ID: 6

Current Platform ID: 6    Last Platform ID: 6

 

两边一对比,以前一些怎么也猜不出来含义的字段的含义就很清晰了。

有兴趣的朋友可以根据我这篇文章里的内容自己尝试解析出DATA FILE #1x$kcvfh的那条记录里每一个column的值的含义。