Oracle10g新增BLOCK CHANGE TRACKING功能

yangtingkun發表於2007-12-28

Oracle10g新增了記錄資料塊變化的功能,顯著的提高了增量備份的效率。


對於增量備份,Rman需要比較資料檔案中所有的BLOCK,來確認這個BLOCK是否需要進行備份:

[oracle@testzone ~]$ sqlplus ndmain

SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 12 28 14:26:45 2007

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

輸入口令:

連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> select default_tablespace from user_users;

DEFAULT_TABLESPACE
------------------------------
NDMAIN

SQL> create table t_test1 (id number);

表已建立。

SQL> exit Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
斷開

[oracle@testzone ~]$ exit
exit
主機命令完成

RMAN> backup incremental level 1 tablespace ndmain;

啟動 backup 28-12-07使用通道 ORA_DISK_1通道 ORA_DISK_1: 啟動增量級別 1 資料檔案備份集通道 ORA_DISK_1: 正在指定備份集中的資料檔案輸入資料檔案 fno=00011 name=/data/oradata/testzj/ndmain01.dbf輸入資料檔案 fno=00012 name=/data/oradata/testzj/ndmain02.dbf輸入資料檔案 fno=00013 name=/data/oradata/testzj/ndmain03.dbf輸入資料檔案 fno=00014 name=/data/oradata/testzj/ndmain04.dbf輸入資料檔案 fno=00015 name=/data/oradata/testzj/ndmain05.dbf通道 ORA_DISK_1: 正在啟動段 1 28-12-07通道 ORA_DISK_1: 已完成段 1 28-12-07段控制程式碼=/data/backup/05j4o7ah_1_1 標記=TAG20071228T142728 註釋=NONE通道 ORA_DISK_1: 備份集已完成, 經過時間:00:04:35完成 backup 28-12-07

RMAN> list backup;

備份集列表
===================

BS 關鍵字 型別 LV 大小 裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
4 Incr 0 11.15G DISK 00:06:22 28-12
-07
BP
關鍵字: 4 狀態: AVAILABLE 已壓縮: NO 標記
: TAG20071228T141945段名:/data/backup/04j4o6s1_1_1
備份集 4 中的資料檔案列表

檔案 LV 型別 Ckp SCN Ckp 時間 名稱
---- -- ---- ---------- ---------- ----
11 0 Incr 5479421905 28-12
-07 /data/oradata/testzj/ndmain01.dbf
12 0 Incr 5479421905 28-12
-07 /data/oradata/testzj/ndmain02.dbf
13 0 Incr 5479421905 28-12
-07 /data/oradata/testzj/ndmain03.dbf
14 0 Incr 5479421905 28-12
-07 /data/oradata/testzj/ndmain04.dbf
15 0 Incr 5479421905 28-12
-07 /data/oradata/testzj/ndmain05.dbf

BS 關鍵字 型別 LV 大小 裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
5 Incr 1 88.00K DISK 00:04:26 28-12
-07
BP
關鍵字: 5 狀態: AVAILABLE 已壓縮: NO 標記
: TAG20071228T142728段名:/data/backup/05j4o7ah_1_1
備份集 5 中的資料檔案列表

檔案 LV 型別 Ckp SCN Ckp 時間 名稱
---- -- ---- ---------- ---------- ----
11 1 Incr 5479422221 28-12
-07 /data/oradata/testzj/ndmain01.dbf
12 1 Incr 5479422221 28-12
-07 /data/oradata/testzj/ndmain02.dbf
13 1 Incr 5479422221 28-12
-07 /data/oradata/testzj/ndmain03.dbf
14 1 Incr 5479422221 28-12
-07 /data/oradata/testzj/ndmain04.dbf
15 1 Incr 5479422221 28-12
-07 /data/oradata/testzj/ndmain05.dbf

上面這個例子中,LEVEL 0增量備份了11G,用時622秒,而後面的增量只有88K,卻仍然花費了426秒,效率低的很。

而採用10g的新特性BLOCK CHANGE TRACKING

RMAN> DELETE NOPROMPT BACKUP;

使用通道 ORA_DISK_1

備份段列表
BP
關鍵字 BS 關鍵字 Pc# Cp# 狀態 裝置型別段名稱
------- ------- --- --- ----------- ----------- ----------
4 4 1 1 AVAILABLE DISK /data/backup/04j4o6s1_1_1
5 5 1 1 AVAILABLE DISK /data/backup/05j4o7ah_1_1
已刪除備份段備份段 handle=/data/backup/04j4o6s1_1_1 recid=4 stamp=642521985已刪除備份段備份段 handle=/data/backup/05j4o7ah_1_1 recid=5 stamp=642522449
2
物件已刪除


RMAN> EXIT

恢復管理器完成。
[oracle@testzone ~]$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 12 28 14:38:11 2007

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> alter database enable block change tracking using file '/data/backup/track.trc';

資料庫已更改。

SQL> exit Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
斷開

[oracle@testzone ~]$ rman target /

恢復管理器: Release 10.2.0.3.0 - Production on 星期五 12 28 14:38:47 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

連線到目標資料庫: TESTZJ (DBID=3397373484)

RMAN> backup incremental level 0 tablespace ndmain;

啟動 backup 28-12-07使用目標資料庫控制檔案替代恢復目錄分配的通道: ORA_DISK_1通道 ORA_DISK_1: sid=139 devtype=DISK通道 ORA_DISK_1: 啟動增量級別 0 資料檔案備份集通道 ORA_DISK_1: 正在指定備份集中的資料檔案輸入資料檔案 fno=00011 name=/data/oradata/testzj/ndmain01.dbf輸入資料檔案 fno=00012 name=/data/oradata/testzj/ndmain02.dbf輸入資料檔案 fno=00013 name=/data/oradata/testzj/ndmain03.dbf輸入資料檔案 fno=00014 name=/data/oradata/testzj/ndmain04.dbf輸入資料檔案 fno=00015 name=/data/oradata/testzj/ndmain05.dbf通道 ORA_DISK_1: 正在啟動段 1 28-12-07通道 ORA_DISK_1: 已完成段 1 28-12-07段控制程式碼=/data/backup/06j4o80b_1_1 標記=TAG20071228T143907 註釋=NONE通道 ORA_DISK_1: 備份集已完成, 經過時間:00:06:25完成 backup 28-12-07

RMAN> host;

[oracle@testzone ~]$ sqlplus ndmain

SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 12 28 14:45:54 2007

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

輸入口令:

連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> create table t_test2 (id number);

表已建立。

SQL> exit Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
斷開

[oracle@testzone ~]$ exit
exit
主機命令完成

RMAN> backup incremental level 1 tablespace ndmain;

啟動 backup 28-12-07使用通道 ORA_DISK_1通道 ORA_DISK_1: 啟動增量級別 1 資料檔案備份集通道 ORA_DISK_1: 正在指定備份集中的資料檔案輸入資料檔案 fno=00011 name=/data/oradata/testzj/ndmain01.dbf輸入資料檔案 fno=00012 name=/data/oradata/testzj/ndmain02.dbf輸入資料檔案 fno=00013 name=/data/oradata/testzj/ndmain03.dbf輸入資料檔案 fno=00014 name=/data/oradata/testzj/ndmain04.dbf輸入資料檔案 fno=00015 name=/data/oradata/testzj/ndmain05.dbf通道 ORA_DISK_1: 正在啟動段 1 28-12-07通道 ORA_DISK_1: 已完成段 1 28-12-07段控制程式碼=/data/backup/07j4o8e2_1_1 標記=TAG20071228T144626 註釋=NONE通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01完成 backup 28-12-07

RMAN> list backup;

備份集列表
===================

BS 關鍵字 型別 LV 大小 裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
6 Incr 0 11.15G DISK 00:06:21 28-12
-07
BP
關鍵字: 6 狀態: AVAILABLE 已壓縮: NO 標記
: TAG20071228T143907段名:/data/backup/06j4o80b_1_1
備份集 6 中的資料檔案列表

檔案 LV 型別 Ckp SCN Ckp 時間 名稱
---- -- ---- ---------- ---------- ----
11 0 Incr 5479422630 28-12
-07 /data/oradata/testzj/ndmain01.dbf
12 0 Incr 5479422630 28-12
-07 /data/oradata/testzj/ndmain02.dbf
13 0 Incr 5479422630 28-12
-07 /data/oradata/testzj/ndmain03.dbf
14 0 Incr 5479422630 28-12
-07 /data/oradata/testzj/ndmain04.dbf
15 0 Incr 5479422630 28-12
-07 /data/oradata/testzj/ndmain05.dbf

BS 關鍵字 型別 LV 大小 裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
7 Incr 1 88.00K DISK 00:00:00 28-12
-07
BP
關鍵字: 7 狀態: AVAILABLE 已壓縮: NO 標記
: TAG20071228T144626段名:/data/backup/07j4o8e2_1_1
備份集 7 中的資料檔案列表

檔案 LV 型別 Ckp SCN Ckp 時間 名稱
---- -- ---- ---------- ---------- ----
11 1 Incr 5479422832 28-12
-07 /data/oradata/testzj/ndmain01.dbf
12 1 Incr 5479422832 28-12
-07 /data/oradata/testzj/ndmain02.dbf
13 1 Incr 5479422832 28-12
-07 /data/oradata/testzj/ndmain03.dbf
14 1 Incr 5479422832 28-12
-07 /data/oradata/testzj/ndmain04.dbf
15 1 Incr 5479422832 28-12
-07 /data/oradata/testzj/ndmain05.dbf

執行效率的提高十分顯著,這主要是BLOCK CHANGE TRACKING特性的功能。Oracle透過一個小的track檔案來記錄哪些BLOCK發生了變化,RMAN進行增量備份的時候,不再需要掃描整個資料檔案,只需要掃描這個記錄變化的檔案,找到變化的資料塊,並對這些資料塊進行備份即可。從而提高了增量備份的執行效率。

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

相關文章