RMAN的改變跟蹤
RMAN的改變跟蹤功能通過在改變追蹤檔案中記錄每一個資料檔案發生改變的資料區塊來提高增量備份的效能。如果改變跟蹤被啟用,RMAN使用改變追蹤檔案來標識自上次增量備份以來發生改變的資料區塊,這樣就能避免掃描每個資料檔案的所有資料區塊。
在啟用改變跟蹤後,第一次level 0級的增量備份仍然會掃描每個資料檔案的所有資料區塊,這時改變追蹤檔案不能反應資料區塊的狀態。後續的增量備份將使用level 0級的增量備份作為父備份組這樣就可以利用改變追蹤檔案來進行增量備份。
使用改變跟蹤不會改變執行增量備份的命令,改變跟蹤本身在設定後通常需要較少的維護。
改變跟蹤預設情況下是禁用的,因為它在資料庫的正常操作期間會有一些小的效能開銷。然而,為了在備份期間對資料檔案執行完全掃描,且在兩次備份期間只有少量資料區塊發生改變時,使用改變跟蹤就是很有用的。如果你的備份策略使用增量備份,那麼應該啟用改變跟蹤。
一旦對整個資料庫建立了改變追蹤檔案,預設情況下改變追蹤檔案所產生的目錄是由
db_create_file_dest參數來決定的。也可以在啟用改變跟蹤時指定改變跟蹤的檔案名稱和儲存目錄。
注意:在RAC環境下,為了讓所有的節點都能使用改變追蹤檔案應該將改變追蹤檔案儲存在共用儲存中
Oracle儲存足夠的改變追蹤檔案能讓增量備份使用最近8個增量備份作為它的父備份。
雖然RMAN不支援對改變追蹤檔案本身的備份和恢複,如果整修資料庫或部分需要還原和恢複,那麼恢複對改變跟蹤沒有影響。在還原和恢複之後,改變追蹤檔案會被清除,並再次開始記錄資料區塊的改變。在任何恢複之後下一次的增量備份都能夠使用改變跟蹤的資料。
啟用或禁用塊改變跟蹤
儲存塊改變追蹤檔案的目錄是由db_create_file_dest參數來設定的,下面的語句用來啟用塊改變跟蹤:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
還可以在啟用塊改變跟蹤時指定塊改變追蹤檔案建立的目錄
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING
USING FILE '/mydir/rman_change_track.f' REUSE;
REUSE選項告訴Oracle會覆蓋已經存在的塊追蹤檔案
為了禁用塊改變跟蹤:
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
如果塊改變追蹤檔案儲存在資料庫地區,當禁用改變跟蹤時會刪除。
SQL> alter database enable block change tracking using file '/u01/app/oracle/rman_change_trace.f' reuse;
Database altered.
檢查是否產生了改變追蹤檔案
[root@oracle11g oracle]# ls -lrt
total 11632
drwxr-xr-x 3 oracle oinstall 4096 Sep 5 08:47 10.2.0
drwxrwxr-x 3 oracle oinstall 4096 Sep 5 09:12 oradata
drwxr-x--- 3 oracle oinstall 4096 Sep 5 09:12 admin
drwxrwxr-x 3 oracle oinstall 4096 Sep 5 09:13 flash_recovery_area
-rw-r--r-- 1 oracle oinstall 226495 Nov 18 10:55 utlu112i_8.sql
-rw-r--r-- 1 oracle oinstall 10373 Nov 18 11:02 upgrade_info.log
drwxr-xr-x 3 root root 4096 Nov 18 21:00 11.2.0
drwxrwx--- 7 oracle oinstall 4096 Nov 18 21:37 oraInventory
drwxrwxr-x 11 oracle oinstall 4096 Nov 18 21:37 diag
drwxr-xr-x 2 oracle oinstall 4096 Nov 18 21:39 checkpoints
drwxr-x--- 5 oracle oinstall 4096 Nov 19 18:55 cfgtoollogs
-rw-r--r-- 1 oracle oinstall 3261 Nov 23 21:24 upchk.log
-rw-r--r-- 1 oracle oinstall 2237 Nov 26 11:55 downgrade.log
-rw-r----- 1 oracle oinstall 11600384 Jan 26 21:32 rman_change_trace.f
禁用塊改變跟蹤:
SQL> alter database disable block change tracking;
Database altered.
檢查是否刪除了產生的改變追蹤檔案
[root@oracle11g oracle]# ls -lrt
total 284
drwxr-xr-x 3 oracle oinstall 4096 Sep 5 08:47 10.2.0
drwxrwxr-x 3 oracle oinstall 4096 Sep 5 09:12 oradata
drwxr-x--- 3 oracle oinstall 4096 Sep 5 09:12 admin
drwxrwxr-x 3 oracle oinstall 4096 Sep 5 09:13 flash_recovery_area
-rw-r--r-- 1 oracle oinstall 226495 Nov 18 10:55 utlu112i_8.sql
-rw-r--r-- 1 oracle oinstall 10373 Nov 18 11:02 upgrade_info.log
drwxr-xr-x 3 root root 4096 Nov 18 21:00 11.2.0
drwxrwx--- 7 oracle oinstall 4096 Nov 18 21:37 oraInventory
drwxrwxr-x 11 oracle oinstall 4096 Nov 18 21:37 diag
drwxr-xr-x 2 oracle oinstall 4096 Nov 18 21:39 checkpoints
drwxr-x--- 5 oracle oinstall 4096 Nov 19 18:55 cfgtoollogs
-rw-r--r-- 1 oracle oinstall 3261 Nov 23 21:24 upchk.log
-rw-r--r-- 1 oracle oinstall 2237 Nov 26 11:55 downgrade.log
SQL> select filename from v$block_change_tracking;
FILENAME
--------------------------------------------------------------------------------
/u01/app/oracle/rman_change_trace.f
2.關閉資料庫.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
3.使用作業系統命令將塊改變追蹤檔案移動到新的位置
[root@oracle11g oracle]# mv rman_change_trace.f rman_change_trace_new.f
4.mount資料庫,更改塊改變追蹤檔案
SQL> startup mount
ORACLE instance started.
Total System Global Area 327155712 bytes
Fixed Size 1273516 bytes
Variable Size 138412372 bytes
Database Buffers 184549376 bytes
Redo Buffers 2920448 bytes
Database mounted.
SQL> alter database rename file '/u01/app/oracle/rman_change_trace.f' to '/u01/app/oracle/rman_change_trace_new.f';
Database altered.
5.開啟資料庫
SQL> alter database open;
Database altered.
SQL> alter database disable block change tracking;
Database altered.
[root@oracle11g oracle]# ls -lrt
total 284
drwxr-xr-x 3 oracle oinstall 4096 Sep 5 08:47 10.2.0
drwxrwxr-x 3 oracle oinstall 4096 Sep 5 09:12 oradata
drwxr-x--- 3 oracle oinstall 4096 Sep 5 09:12 admin
drwxrwxr-x 3 oracle oinstall 4096 Sep 5 09:13 flash_recovery_area
-rw-r--r-- 1 oracle oinstall 226495 Nov 18 10:55 utlu112i_8.sql
-rw-r--r-- 1 oracle oinstall 10373 Nov 18 11:02 upgrade_info.log
drwxr-xr-x 3 root root 4096 Nov 18 21:00 11.2.0
drwxrwx--- 7 oracle oinstall 4096 Nov 18 21:37 oraInventory
drwxrwxr-x 11 oracle oinstall 4096 Nov 18 21:37 diag
drwxr-xr-x 2 oracle oinstall 4096 Nov 18 21:39 checkpoints
drwxr-x--- 5 oracle oinstall 4096 Nov 19 18:55 cfgtoollogs
-rw-r--r-- 1 oracle oinstall 3261 Nov 23 21:24 upchk.log
-rw-r--r-- 1 oracle oinstall 2237 Nov 26 11:55 downgrade.log
如果不能關閉資料庫,那麼你必須禁用改變跟蹤,再在重新啟用時指定新的目錄。例如:
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'new_location';
如果你選擇使用這種方法,將會丟失改變追蹤檔案中的內容。直到你下次完成level 0級的增量備份之前,RMAN將不得不掃描整個檔案
評估改變追蹤檔案的大小
改變追蹤檔案的大小與資料庫的大小和重做日誌線程數成正比。它的大小不與資料庫的頻繁更新相關。通常來說塊改變跟蹤所需要的空間大小是將被跟蹤的資料區塊大小的1/30000。注意,然而下面的兩種原因可能會讓改變追蹤檔案比評估的大小大很多:
1.為了避免隨著資料庫的增長而要給改變追蹤檔案分配空間所產生的開銷,改變追蹤檔案一開始建立時就是10M,並且以10M的大小來增加。因此對於任何大小接近300G的資料庫來說,改變追蹤檔案的大小不小於10M,對於大小接近600G的資料庫來說,改變追蹤檔案的大小不小於20M,依此類推。
2.對於每個資料檔案,不管改變追蹤檔案有多大都會在改變追蹤檔案中將分配320K的空間。因此,如果有大量的小資料檔案,改變追蹤檔案將會比包含同樣資料量的少量的大資料檔案對應的改變追蹤檔案大
--------------------------------------推薦閱讀 --------------------------------------
RMAN 配置歸檔日誌刪除策略
Oracle基礎教程之通過RMAN複製資料庫
RMAN備份策略制定參考內容
RMAN備份學習筆記
OracleDatabase Backup加密 RMAN加密
--------------------------------------分割線 --------------------------------------