oracle實驗記錄(恢復-checkpoint cnt)

fufuh2o發表於2009-08-24

The checkpoint count is used to detect when a backup of a file has been
   restored. It is incremented every time there is an attempt to advance
   the checkpoint in the file header of the current file. It is incremented
   even if the checkpoint is not advanced because it is already greater.
   The most recent value of this counter is also kept in the controlfile.
   If the counter in the controlfile is greater than that in the file
   header then the file must be a backup. The value in the file header can
   be greater than the controlfile if the controlfile transaction aborts
   after the file header write.
  
  
    The controlfile checkpoint count is used to detect old controlfiles. When
     updating the checkpoint count in the file header, the old checkpoint
     count from the controlfile record is saved here. Thus this value is
     known to be committed to the current controlfile. If the value in the
     controlfile is ever less than this value then the controlfile must be
     a backup or the resetlogs stamp must be different.

 

checkpoint count
1. allow detection of a restored data file or control file
2. incremented at every checkpoint~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~這個應該理解成 遞增 而不是 增量checkpoint

SQL> show parameter check

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------------
db_block_checking                    string      FALSE
db_block_checksum                    string      TRUE
log_checkpoint_interval              integer     0
log_checkpoint_timeout               integer     1800
log_checkpoints_to_alert             boolean     FALSE

SQL> alter system set log_checkpoints_to_alert=true;

系統已更改。

SQL> alter system set log_checkpoint_timeout=10;

系統已更改。
SQL> startup force;

Mon Aug 24 23:38:03 2009
Incremental checkpoint up to RBA [0x5.43.0], current log tail at RBA [0x5.5d.0]

Mon Aug 24 23:38:15 2009
Incremental checkpoint up to RBA [0x5.7f.0], current log tail at RBA [0x5.112.0]
Mon Aug 24 23:38:30 2009
Incremental checkpoint up to RBA [0x5.140.0], current log tail at RBA [0x5.140.0]


SQL> alter session set events 'immediate trace name controlf level 8';

會話已更改。
DATA FILE #1:
  (name #7) F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:117 scn: 0x0000.000d7ae8 08/24/2009 23:37:36

SQL> alter session set events 'immediate trace name controlf level 8';

會話已更改。
DATA FILE #1:
  (name #7) F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:117 scn: 0x0000.000d7ae8 08/24/2009 23:37:36
 Stop scn: 0xffff.ffffffff 08/22/2009 00:01:16


SQL> alter session set events 'immediate trace name controlf level 8';~~~~~~~~~~~~~~發現 incremenal checkpoint的發生 checkpoint cnt並沒有變化

會話已更改。
DATA FILE #1:
  (name #7) F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:117 scn: 0x0000.000d7ae8 08/24/2009 23:37:36


SQL> alter system set log_checkpoint_timeout=1800;

系統已更改。


SQL> alter system checkpoint;

系統已更改。
alter session set events 'immediate trace name controlf level 8';
DATA FILE #1:
  (name #7) F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:120 scn: 0x0000.000dd211 08/24/2009 23:43:32

 

alter session set events 'immediate trace name controlf level 8';
DATA FILE #1:
  (name #7) F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1~~~~~~~~~~~~~~~~checkpoint cn~~~~~~~~~~~~~~~~~~~~~~~~~~針對full checkpoint 變化
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:121 scn: 0x0000.000dd2f0 08/24/2009 23:45:50

 

oracle open時候用 checkpoint 來判斷 資料檔案(控制檔案) 版本
SQL>  alter session set events 'immediate trace name file_hdrs level 10';

會話已更改。


DATA FILE #1:
  (name #7) F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~來自controlfile  Checkpoint cnt:122
 Checkpoint cnt:122 scn: 0x0000.000dd323 08/24/2009 23:47:16
 Stop scn: 0xffff.ffffffff 08/24/2009 23:43:21
 Creation Checkpointed at scn:  0x0000.00000009 08/30/2005 13:50:22
 thread:0 rba:(0x0.0.0)

Tablespace #0 - SYSTEM  rel_fn:1
Creation   at   scn: 0x0000.00000009 08/30/2005 13:50:22
Backup taken at scn: 0x0000.000cf888 08/21/2009 22:58:45 thread:1
 reset logs count:0x2974adb9 scn: 0x0000.000cc406 reset logs terminal rcv data:0x0 scn: 0x0000.00000000
 prev reset logs count:0x296ccca0 scn: 0x0000.0008297b prev reset logs terminal rcv data:0x0 scn: 0x0000.00000000
 recovered at 08/24/2009 23:43:30
 status:0x2004 root dba:0x00400179 chkpt cnt: 122 ctl cnt:121


來自 datafile chkpt cnt: 122  比較這 兩部分

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12020513/viewspace-613113/,如需轉載,請註明出處,否則將追究法律責任。

相關文章