如何檢視buffer cache的髒資料是否寫回磁碟

paulyibinyi發表於2007-12-29
paul@TEST(192.168.1.117)> select file_id,block_id from dba_extents where segment_name='TEST1' and ow
ner='PAUL';

FILE_ID BLOCK_ID
---------- ----------
6 273

已用時間: 00: 00: 00.00
paul@TEST(192.168.1.117)> insert into test1 values(4);

已建立 1 行。

已用時間: 00: 00: 00.00
paul@TEST(192.168.1.117)> commit;

提交完成。

已用時間: 00: 00: 00.00
paul@TEST(192.168.1.117)> select file#,block#,dirty from v$bh where file#=6 and block#>273;

FILE# BLOCK# D
---------- ---------- -
6 274 N
6 275 N
6 276 Y --這個就是剛剛產生的資料,可以看commit後沒有把資料寫入磁碟
6 277 N
6 278 N
6 279 N
6 280 N

已選擇7行。

已用時間: 00: 00: 00.00
paul@TEST(192.168.1.117)> alter system switch logfile;
還有alter system checkpoint
--日誌切換,觸發檢查點,呼叫dbwr程式將髒資料寫回磁碟

系統已更改。

已用時間: 00: 00: 00.01
paul@TEST(192.168.1.117)> select file#,block#,dirty from v$bh where file#=6 and block#>273;

FILE# BLOCK# D
---------- ---------- -
6 274 N
6 275 N
6 276 N --已經寫回磁碟
6 277 N
6 278 N
6 279 N
6 280 N

已選擇7行。

已用時間: 00: 00: 00.00
paul@TEST(192.168.1.117)>
有時我們做了 alter system switch logfile,後,看到的還是y,那是因為checkpoint start還未complete

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

相關文章