RMAN的改变跟踪功能通过在改变跟踪文件中记录每一个数据文件发生改变的数据块来提高增量备份的性能。如果改变跟踪被启用,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.