redolog switch会发生完全检查点还是增量检查点(二)

2014-11-24 14:54:12 · 作者: · 浏览: 4
STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 ACTIVE
执行完上述switch logfile操作后等待12小时,然后再次执行上述查询语句:
idle> !date
Sun May 13 7:56:58 CST 2013
idle> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 ACTIVE
从结果里我们可以看到现在redo log group 3还是处于active状态,我现在的这个库是测试库只有我一个人在用,所以很空闲,如
果switch logfile的时候发生的是full checkpoint,则当我等待24小时后再次查询v$log的时候redo log group 3必然是处于
inactive状态:
即现在我们已经证明了在log switch的时候,发生的不是完全检查点。
idle> !date
Sun May 13 20:56:58 CST 2013
idle> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 INACTIVE
哈哈。。。你可以试试,那些参数的威力。。牛B的一比。。。
现在我们来证明在log switch的时候,发生的不是严格意义上的增量检查点。增量检查点只会更新control file,不会更新
datafile header,知道这个那就很好验证了,利用BBED恢复神器:
hr@OCP> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 CURRENT
3 INACTIVE
BBED> set file 1 block 1
FILE# 1
BLOCK# 1
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kc vcpscn, 8 bytes @484
ub4 kscnbas @484 0x000c592e
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x3097e9b7
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x00000038
ub4 kcrbabno @504 0x000000a3
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[0] @512 0x02
ub1 kcvcpetb[1] @513 0x00
ub1 kcvcpetb[2] @514 0x00
ub1 kcvcpetb[3] @515 0x00
ub1 kcvcpetb[4] @516 0x00
ub1 kcvcpetb[5] @517 0x00
ub1 kcvcpetb[6] @518 0x00
ub1 kcvcpetb[7] @519 0x00
即现在的system01.dbf的datafile header的checkpoint scn的base是0x000c592e。
现在我执行一次switch logfile,再来观察system01.dbf的datafile header的checkpoint scn:
hr@OCP> update employees set salary=salary+1000;
107 rows updated.
hr@OCP> commit;
Commit complete.
hr@OCP> alter system switch logfile;
System altered.
hr@OCP> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 ACTIVE
3 CURRENT
BBED> set file 1 block 1
FILE# 1
BLOCK# 1
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x000c592e
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x3097e9b7
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x00000038
ub4 kcrbabno @504 0x000000a3
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[0] @512 0x02
ub1 kcvcpetb[1] @513 0x00
ub1 kcvcpetb[2] @514 0x00
ub1 kcvcpetb[3] @515 0x00