之前已经写过:
这里是详细解析系列的第三篇文章,在这篇文章里,我们详细解析了datafile在不同状态下的datafile header与control file中的status的含义。
要说清楚datafile的status,我们首先要明白什么是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状态的时候,其kcvfhsta为0x04:
BBED> set file 139
FILE# 139
BBED> set block 1
BLOCK# 1
BBED> p kcvfhsta
ub2 kcvfhsta @138 0x0004 (KCVFHOFZ)
其对应的control文件里上述datafile 139所在的status为0x0e:
00032760h: 00 00 00
00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 0E 00 00
00032780h: BB
0x0e=0x08+0x04+0x02,即代表Change/Write+Read+Online
当一个datafile处于offline状态的时候,有如下这样三种情况:
1、 当正常shutdown immediate的时候,其kcvfhsta为0x00:
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
00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 0E 00 00
00032780h: BB
2、 当offline normal的时候,其kcvfhsta为0x00:
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
00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 80 00 00
00032780h: BB
0x80表示Save offline scn range at next checkpoint
3、 当offline immediate的时候,其kcvfhsta为0x04:
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
00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 10 00 00
00032780h: BB
0x10表示 Media Recovery Required
当一个datafile处于read only状态的时候,其kcvfhsta为0x00:
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
00032770h: 00 00 00 00 00 00 00 00 00 00 20 00 00 86 00 00
00032780h: BB
0x86=0x80+0x04+0x02,即代表Save offline scn range at next checkpoint+Read+Online
总结一下:
1、 当一个datafile处于online fuzzy状态的时候,其kcvfhsta为0x04,其对应的control文件里上述datafile所在的status是0x0e;
2、 当一个datafile处于由shutdown immediate而导致的offline状态的时候,其kcvfhsta为0x00,其对应的control文件里上述datafile所在的status是0x0e;
3、 当一个datafile处于offline normal状态的时候,其kcvfhsta为0x00,其对应的control文件里上述datafile所在的status是0x80;
4、 当一个datafile处于offline immediate状态的时候,其kcvfhsta为0x04,其对应的control文件里上述datafile所在的status是0x10;
5、 当一个datafile处于read only状态的时候,其kcvfhsta为0x00,其对应的control文件里上述datafile所在的status是0x86;
Leave a comment