详细解析datafile的status

| No Comments

之前已经写过:

"详细解析9i10gdatafile header"

"详细解析LMTdatafile的物理结构"

 

这里是详细解析系列的第三篇文章,在这篇文章里,我们详细解析了datafile在不同状态下的datafile headercontrol file中的status的含义。

 

要说清楚datafilestatus,我们首先要明白什么是oracle中的online fuzzy status----online fuzzy status通常是指datafile处于可读写的online状态。而fuzzy的具体含义是----a datafile that contains a block whose SCN is more recent than the SCN of its header is called a fuzzy datafile.

 

当一个datafile处于fuzzy状态的时候,其kcvfhsta0x04

BBED> set file 139

        FILE#           139

 

BBED> set block 1

        BLOCK#          1

 

BBED> p kcvfhsta

ub2 kcvfhsta                                @138      0x0004 (KCVFHOFZ)

 

其对应的control文件里上述datafile 139所在的status0x0e

00032760h: 00 00 00 8A 00 00 00 00 00 00 00 00 00 00 FF FF

00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 0E 00 00

00032780h: BB 52 A0 FE 00 08 00 00 29 CF 5D 0E 00 00 00 00

0x0e=0x08+0x04+0x02,即代表Change/Write+Read+Online

 

当一个datafile处于offline状态的时候,有如下这样三种情况:

1、  当正常shutdown immediate的时候,其kcvfhsta0x00

BBED> set file 139

        FILE#           139

 

BBED> set block 1

        BLOCK#          1

 

BBED> p kcvfhsta

ub2 kcvfhsta                                @138      0x0000 (NONE)

 

在这种情况下,其对应的control文件里上述datafile 139所在的status还是为0x0e

00032760h: 00 00 00 8A 00 00 00 00 00 00 00 00 00 00 FF FF

00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 0E 00 00

00032780h: BB 52 A0 FE 00 08 00 00 29 CF 5D 0E 00 00 00 00

 

2、  offline normal的时候,其kcvfhsta0x00

BBED> set file 139

        FILE#           139

 

BBED> set block 1

        BLOCK#          1

 

BBED> p kcvfhsta

ub2 kcvfhsta                                @138      0x0000 (NONE)

 

在这种情况下,其对应的control文件里上述datafile 139所在的status变为0x80

00032760h: 00 00 00 8A 00 00 00 00 00 00 00 00 00 00 FF FF

00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 80 00 00

00032780h: BB 52 A0 FE 00 08 00 00 29 CF 5D 0E 00 00 00

0x80表示Save offline scn range at next checkpoint

 

3、  offline immediate的时候,其kcvfhsta0x04

BBED> set file 139

        FILE#           139

 

BBED> set block 1

        BLOCK#          1

 

BBED> p kcvfhsta

ub2 kcvfhsta                                @138      0x0004 (KCVFHOFZ)

 

在这种情况下,其对应的control文件里上述datafile 139所在的status变为0x10

00032760h: 00 00 00 8A 00 00 00 00 00 00 00 00 00 00 FF FF

00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 10 00 00

00032780h: BB 52 A0 FE 00 08 00 00 29 CF 5D 0E 00 00 00 00

0x10表示 Media Recovery Required

 

当一个datafile处于read only状态的时候,其kcvfhsta0x00

BBED> set file 139

        FILE#           139

 

BBED> set block 1

        BLOCK#          1

 

BBED> p kcvfhsta

ub2 kcvfhsta                                @138      0x0000 (NONE)

 

在这种情况下,其对应的control文件里上述datafile 139所在的status变为0x86

00032760h: 00 00 00 8A 00 00 00 00 00 00 00 00 00 00 FF FF

00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 86 00 00

00032780h: BB 52 A0 FE 00 08 00 00 29 CF 5D 0E 00 00 00 00

0x86=0x80+0x04+0x02,即代表Save offline scn range at next checkpoint+Read+Online

 

总结一下:

1、  当一个datafile处于online fuzzy状态的时候,其kcvfhsta0x04,其对应的control文件里上述datafile所在的status0x0e

2、  当一个datafile处于由shutdown immediate而导致的offline状态的时候,其kcvfhsta0x00,其对应的control文件里上述datafile所在的status0x0e

3、  当一个datafile处于offline normal状态的时候,其kcvfhsta0x00,其对应的control文件里上述datafile所在的status0x80

4、  当一个datafile处于offline immediate状态的时候,其kcvfhsta0x04,其对应的control文件里上述datafile所在的status0x10

5、  当一个datafile处于read only状态的时候,其kcvfhsta0x00,其对应的control文件里上述datafile所在的status0x86

 

 

Leave a comment