練習:Buffer Cache的Dirty狀態



先查詢測試表格(tmp01)的相關資料,會使用模糊查詢是因為我在實驗上發現如果有INDEX,它會被載入Buffer Cache,而不會是Table
SQL> select object_id,object_name from dba_objects where object_name like upper('%tmp_01%');
 OBJECT_ID   OBJECT_NAME
----------   ---------------------
     70444   TMP_01
     70445   TMP_01_PK

SQL> select * from v$bh where objd=70444; --> 沒有資料,表示它沒有被載入。
SQL> select * from v$bh where objd=70445; --> 有資料,載入Buffer Cache

查詢在Buffer Cache的Index,可以發現所有的Dirty都是N
SQL> select * from v$bh where objd=70445;

修改資料
SQL> update tmp_01 set a=2 where id=1;
SQL> commit;

再查詢一次,這次就可以發現Block的Dirty='Y',
表示Buffer Cache的資料已經被更改了。
SQL> select * from v$bh where objd=70445;
      OBJD DIR
---------- ---
     70445 Y

Oracle Data Gurad Archive Gap