10g中的塊修改跟蹤特性(Block Change Tracking)

junsansi發表於2009-04-10

  10G中ORACLE提供了一個新的特性:塊修改跟蹤(Block Change Tracking),該特性主要服務於RMAN的增量備份。

  眾所周知在之前的版本中,RMAN中建立增量備份並不能顯明縮短備份時間,這主要就是因為RMAN沒有簡便的方式判斷哪些塊是被修改過的,因此仍然是隻能讀取所有資料檔案中的所有資料塊,分別檢查資料塊中SCN並與父增量備份集中塊的SCN做比較,如果發現較新則表示修改過。如果啟用了塊修改跟蹤的特性,RMAN就可以通過塊修改跟蹤檔案確定哪些塊被修改過,從而避免掃描所有的資料檔案中所有塊。

  啟用塊修改跟蹤特性,0級的增量備份肯定還得掃描所有資料檔案,不過其後依賴這一0級備份集建立的增量備份就可以通過塊修改跟蹤檔案來獲取修改過的塊了。

  預設情況下資料庫是禁用塊修改跟蹤的(如果使用了OMF特性,ORACLE會自動建立塊修改跟蹤檔案),因為這可能會帶來一些額外的開銷。不過該性特性對於增量備份畢竟相當有用,因此要看你的取捨,如果你的資料庫極少有修改操作,同時你希望增量備份儘可能快,並且建立的增量備份集儘可能小,那啟用塊修改跟蹤還是有意義的,並且這也不會太影響到資料庫的效能。

  塊修改跟蹤檔案是基於整個資料庫的,如果使用了OMF,該檔案建立於DB_CREATE_FILE_DEST引數指定的目錄下,當然你也可以手動修改該檔案到其它路徑,不過如果是RAC環境,塊修改跟蹤檔案必須建立在共享儲存上,確保所有節點都能訪問到它。塊修改跟蹤檔案中最多隻能儲存基於相同0級的,最近8天的增量備份所需資訊,因此如果超出,則塊修改跟蹤檔案就起不到作用了。

  注意,備份恢復並不會備份或者恢復塊修改跟蹤檔案。

1、 啟用塊修改跟蹤

  啟用塊修改跟蹤可通過下列語句:

    SQL> alter database enable block change tracking using file 'rman_inc.trk';

    Database altered.

  禁用塊修改跟蹤可通過下列語句:

    SQL> alter database disable block change tracking;

    Database altered.

  查詢是否啟用塊修改跟蹤可以通過下列語句:

    SQL> select status from v$block_change_tracking;

    STATUS

    ----------

    DISABLED

  上述操作在資料庫mount或open狀態都可以進行,不過如果你要修改塊修改跟蹤檔案的路徑,則只能在資料庫啟動到mount狀態時修改。

2、 修改塊修改跟蹤檔案路徑

  修改塊修改跟蹤檔案可以通過alter database rename file命令,但是隻能在mount狀態下操作。

  檢視當前塊修改跟蹤檔案路徑:

    SQL> select filename from v$block_change_tracking;

    FILENAME

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

    E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\RMAN_INC.TRK

  Shutdown 資料庫並啟動到mount狀態:

    SQL> shutdown immediate

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL> startup mount

    ORACLE instance started.

    Total System Global Area  167772160 bytes

    Fixed Size                  1295608 bytes

    Variable Size              88083208 bytes

    Database Buffers           71303168 bytes

    Redo Buffers                7090176 bytes

    Database mounted.

  手工複製塊修改檔案到新路徑下,然後執行alter database命令:

    SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\RMAN_INC.TRK'

      2  to 'E:\oracle\oradata\jssweb\rman_inc.trk';

    Database altered.

    SQL> alter database open;

    Database altered.

  檢視當前塊修改跟蹤檔案路徑:

    SQL> select filename from v$block_change_tracking;

    FILENAME

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

    E:\ORACLE\ORADATA\JSSWEB\RMAN_INC.TRK

  如果你的數 據庫無法shutdown , 其實也無所謂,先disable,然後執行enable時指定一個新路徑也可以的:),只不過,原來檔案中記錄的塊修改的跟蹤資訊也就沒有了。

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

相關文章