最近我看DSI都快走火入魔了,要控制一下,不能再这样下去了。
这里记录下我关于control file的一点体会:
1、同样都是db_block_size为8192,
2、对于incremental checkpoint中的checkpoint heartbeat,在db_block_size为8192的9i里记录上述heartbeat所在的offset是0x00006050,而
3、shadow block 真的存在!303里这样提到---- Changes to the control file are managed through shadow block structure, Copies of each block in the control file are stored in the same file with a flag to indicate which block copy is the current copy. 换句话说,每一次对control file中的block的修改,oracle都会将这个block的前镜像copy一份,然后也存在control file里,用于rollback。
我们来证明一下shadow block的存在性:
***************************************************************************
LOG FILE RECORDS
***************************************************************************
(blkno = 0x5, size = 72, max = 5, in-use = 3, last-recid= 3)
LOG FILE #1:
(name #5) /dras10/oradata/astca/redo
(name #6) /dras11/oradata/astca/redo01b.log
Thread 1 redo log links: forward: 2 backward: 0
siz: 0x32000 seq: 0x00000005 hws: 0x1 bsz: 512 nab: 0xffffffff flg: 0x8 dup: 2
Archive links: fwrd: 0 back: 0 Prev scn: 0x0008.bb4b0e24
Low scn: 0x0008.bb4b0e28 10/15/2009 08:35:56
Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
SQL> select dump('/dras10/oradata/astca/redo
DUMPFORMAT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Typ=96 Len=33:
,
我们从随后的control文件里可以看到2f6472617331302f6f7261646174612f61737463612f7265646f3031612e6c6f67出现了两次:
可以看到一个的offset是0x0003a440,另外一个的offset是0x0003c440,两者相差0x2000,也就是8192,刚好一个block,这就从一个侧面证明了shadow block的存在性,且说明了current block和shadow block是相邻的存在一起。
正是由于shadow block的存在,所以同志们在用ultraEdit修改control file的时候要注意了。
Leave a comment