AnLeYe 2015-02-03
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的空间。因此,如果有大量的小数据文件,改变跟踪文件将会比包含同样数据量的少量的大数据文件对应的改变跟踪文件大
--------------------------------------推荐阅读 --------------------------------------
--------------------------------------分割线 --------------------------------------