关于shadow block

| No Comments

最近我看DSI都快走火入魔了,要控制一下,不能再这样下去了。

 

这里记录下我关于control file的一点体会:

1、同样都是db_block_size819210gcontrol file的文件头为16K9i里是8k。换句话说, 9icontrol filedatabase entry section是从0x00002000开始,而10g里则是从0x00004000开始。

 

2、对于incremental checkpoint中的checkpoint heartbeat,在db_block_size81929i里记录上述heartbeat所在的offset0x00006050,而10g里则是0x0000c050

 

3shadow 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/redo01a.log

  (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/redo01a.log',16) dumpformat from dual;

 

DUMPFORMAT

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Typ=96 Len=33: 2f,64,72,61,73,31,30,2f,6f,72,61,64,61,74,61,2f,61,73,74,63,61,2f,72,65,64,6f,30,31,61,2e

,6c,6f,67

 

我们从随后的control文件里可以看到2f6472617331302f6f7261646174612f61737463612f7265646f3031612e6c6f67出现了两次:

0003a440h: 00 00 00 00 00 03 00 01 00 06 00 00 00 00 2F 64 ; ............../d

0003a450h: 72 61 73 31 30 2F 6F 72 61 64 61 74 61 2F 61 73 ; ras10/oradata/as

0003a460h: 74 63 61 2F 72 65 64 6F 30 31 61 2E 6C 6F 67 00 ; tca/redo01a.log.

 

0003c440h: 00 00 00 00 00 03 00 01 00 06 00 00 00 02 2F 64 ; ............../d

0003c450h: 72 61 73 31 30 2F 6F 72 61 64 61 74 61 2F 61 73 ; ras10/oradata/as

0003c460h: 74 63 61 2F 72 65 64 6F 30 31 61 2E 6C 6F 67 00 ; tca/redo01a.log.

 

可以看到一个的offset0x0003a440,另外一个的offset0x0003c440,两者相差0x2000,也就是8192,刚好一个block这就从一个侧面证明了shadow block的存在性,且说明了current blockshadow block是相邻的存在一起

 

正是由于shadow block的存在,所以同志们在用ultraEdit修改control file的时候要注意了。

Leave a comment