轉載請註明出處:http://blog.csdn.net/guoyjoe/article/details/19297567
提高增量備份的性能的方法可以啓用塊更改跟蹤(block change tracking),在我們沒有啓用塊更改跟蹤的增量備份時,RMAN必須檢查數據庫中要備份的所有數據文件中的每個數據塊,查看自上次備份以來相應的塊是否發生了變化(一般對比備份 數據塊中的SCN與數據文件數據塊的SCN大小,是否一致,如果一致就不需要備份,不一致就需要做增量備份)。當數據庫的數據量很大時,那麼掃描數據庫中的塊佔用的時間很可能超過執行實際備份的時間。這時如果啓用塊更改跟蹤,那RMAN會通過使用更改跟蹤文件查看哪此數據文件中的塊發生了變化,這樣能快速知道哪些塊變化了,大大減少了增量備份的時間。啓動塊更改跟蹤的缺點是:佔用一點空間和數據庫維護的一點開銷,優點是在我們大規模的數據庫頻繁做增量備份時大大節省了掃描對比數據塊的時間,從而可以快速增量備份。
1、檢查數據庫有沒有啓用塊更改跟蹤
gyj@OCP> col filename for a50
gyj@OCP> select filename from v$block_change_tracking;
FILENAME
--------------------------------------------------
說明沒有啓用塊更改跟蹤。
2、啓用塊更改跟蹤
gyj@OCP> alter database enable block change tracking;
alter database enable block change tracking
*
ERROR at line 1:
ORA-19773: must specify change tracking file name
這裏有兩種方式指定改變跟蹤文件:
(1)第一種方式啓動參數db_create_file_dest指定塊更改跟蹤文件的位置,以OMF文件形式創建相應的文件
gyj@OCP> alter system set db_create_file_dest='/backup';
System altered.
這裏再啓用塊更改跟蹤就可以成功了
gyj@OCP> alter database enable block change tracking;
Database altered.
(2)第二種方式是在 alter database enable block change tracking加using file '/backup',可以參考官方文檔。
即alter database enable block change tracking using file '/backup';
3、找到當前塊更改跟蹤文件的位置
gyj@OCP> select filename,status,bytes from v$block_change_tracking;
FILENAME STATUS BYTES
-------------------------------------------------- ---------- ----------
/backup/OCP/changetracking/o1_mf_9j1dbtco_.chg ENABLED 11599872
4、啓用塊更改跟蹤會產生後臺進程CTWR
[root@mydb ocm]# ps -ef |grep ctwr |grep -v grep
oracle 6632 1 0 20:38 ? 00:00:00 ora_ctwr_ocp
5、做增量備份
RMAN> backup incremental level=0 database;
Starting backup at 16-FEB-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=53 device type=DISK
channel ORA_DISK_1: starting incremental level 0 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=/u01/app/oracle/oradata/ocm/undotbs01.dbf
input datafile file number=00001 name=/u01/app/oracle/oradata/ocm/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/ocm/sysaux01.dbf
input datafile file number=00006 name=/u01/app/oracle/oradata/ocm/tp1.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/ocm/example01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/ocm/tp2.dbf
input datafile file number=00008 name=/u01/app/oracle/oradata/ocm/tp3.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/ocm/users01.dbf
channel ORA_DISK_1: starting piece 1 at 16-FEB-14
channel ORA_DISK_1: finished piece 1 at 16-FEB-14
piece handle=/u01/app/oracle/product/11.2.0/dbs/3kp0pu9t_1_1 tag=TAG20140216T210357 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:36
Finished backup at 16-FEB-14
Starting Control File and SPFILE Autobackup at 16-FEB-14
piece handle=/backup/c-2735927810-20140216-04 comment=NONE
Finished Control File and SPFILE Autobackup at 16-FEB-14
RMAN> backup incremental level=1 database;
Starting backup at 16-FEB-14
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=/u01/app/oracle/oradata/ocm/undotbs01.dbf
input datafile file number=00001 name=/u01/app/oracle/oradata/ocm/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/ocm/sysaux01.dbf
input datafile file number=00006 name=/u01/app/oracle/oradata/ocm/tp1.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/ocm/example01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/ocm/tp2.dbf
input datafile file number=00008 name=/u01/app/oracle/oradata/ocm/tp3.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/ocm/users01.dbf
channel ORA_DISK_1: starting piece 1 at 16-FEB-14
channel ORA_DISK_1: finished piece 1 at 16-FEB-14
piece handle=/u01/app/oracle/product/11.2.0/dbs/3mp0puek_1_1 tag=TAG20140216T210628 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 16-FEB-14
Starting Control File and SPFILE Autobackup at 16-FEB-14
piece handle=/backup/c-2735927810-20140216-05 comment=NONE
Finished Control File and SPFILE Autobackup at 16-FEB-14
6、監控塊更改的跟蹤文件
gyj@OCP> select file#,avg(datafile_blocks) bloks,avg(blocks_read) blocks_read,
2 avg(blocks_read/datafile_blocks)*100 pct_read,avg(blocks) blocks_backed_up
3 from v$backup_datafile
4 where used_change_tracking='YES'
5 and incremental_level=1
6 group by file#
7 order by file#;
FILE# BLOKS BLOCKS_READ PCT_READ BLOCKS_BACKED_UP
---------- ---------- ----------- ---------- ----------------
1 93440 69 .073844178 19
2 81920 29 .035400391 7
3 444800 165 .037095324 23
4 2240 1 .044642857 1
5 44240 1 .002260398 1
6 64000 5 .0078125 2
7 6400 1 .015625 1
8 6400 1 .015625 1
8 rows selected.
7、關閉塊更改跟蹤
gyj@OCP> alter database disable block change tracking;
Database altered.