淺談Blocking Changing Tracking檔案
Oracle備份還原(Backup & Recovery)是作為資料庫管理DBA最重要的工作之一,也是基本功之一。Oracle作為一款目前最成功的商用資料庫軟體系統,為使用者提供了多種型別的資料備份還原解決方案,以適應不同的場景需求。
簡單的說,Oracle備份還原方案主要包括兩個大型別:使用者管理(User-Managed)和系統管理(System-Managed)。我們配合不同的歸檔模式,可以實現完全備份還原和非完全備份還原。
在備份還原問題上,沒有一個統一要做到什麼的標準。我們在確定一個系統的備份策略時,主要是依據三個標準:
ü 最大容忍資料損失。系統使用者能夠最大容忍多長時間的資料丟失;
ü 最大資料儲存時間。系統使用者要求恢復最遠的資料版本,也就是備份儲存多長時間;
ü 備份時是否允許停機。在目前7×24廣泛的情況下,是否允許冷備是一個重要的需求方面;
對資料進行備份的時候,我們通常會採用增量Incremental的備份策略。在Oracle中,增量備份是依據Level進行配置的。Level 0實際上就是表示進行全庫備份,而Level 1就是表示增量備份,與上次的備份版本進行對比,將變化的資料塊進行備份。
Level 1備份又分為cumulative和differential兩種型別。兩者的差別在於尋找對比基線的不同策略。Cumulative方式是尋找距上次全庫備份的block change差異,而Differential是尋找上次備份(可能是Incremental)的差異。
在本篇中,筆者主要介紹一下Oracle 進行差異備份時候的最佳化策略。
1、10g最佳化策略——Blocking Changing Tracking
我們從微觀角度看問題,Incremental Backup是存在一些思考的問題的。當我們進行了一次全庫備份(例如 Incremental Level 0),再次進行incremental level 1增量備份的時候,Oracle需要獲取到距離上次備份的所有資料表變化塊。
在Blocking Changing Tracking特性之前,Oracle是透過檢索所有資料檔案資料塊的方法來進行變化資料塊的定位。具體來說,就是透過三個SCN來進行定位,分別為Checkpoint SCN、Incremental start SCN和Block SCN。
當我們的資料庫容量很大的時候,檢查資料檔案變化資料塊是一個任務很重的工作。出於效能最佳化的考慮,Oracle 10g引入了Blocking Changing Tracking機制。
Blocking Changing Tracking機制是Oracle為了Incremental Backup而引入的一種記錄策略。當資料庫啟用了Blocking Changing Tracking啟用之後,Oracle會在指定的目錄上生成一個檔案,以Bit Map點陣圖方式記錄資料塊的變化。當進行Incremental Backup的時候,Oracle就直接訪問這個檔案,獲取變化資料塊的資訊。這樣,就可以直接訪問到資料塊進行收集。
預設情況下,Blocking Changing Tracking特性是不會啟用的。下面,我們演示一下如何啟用和配置Blocking Changing Tracking特性。
2、Blocking Changing Tracking配置
我們選擇Oracle 11g進行實驗。
SQL> conn / as sysdba
Connected.
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
預設情況下,Blocking Changing Tracking會生成對應的Tracking File檔案。在10g之後,Tracking File的儲存是可以使用OMF(Oracle-Managed File)特性的,也就是說,我們可以不設定Tracking檔案的目錄名稱資訊。
當然,使用OMF的前提是進行db_create_file_dest的引數配置。
SQL> show parameter db_create;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /u01/app/oradata
db_create_online_log_dest_1 string
db_create_online_log_dest_2 string
(篇幅原因,省略部分內容……)
如果我們不指定檔名(也是Oracle推薦的方式),就會在db_create_file_dest目錄下進行資料檔案自動建立。
SQL> alter database enable block change tracking;
Database altered.
此時,我們在檔案系統上可以看到對應的內容。
[oracle@bsplinux ~]$ cd /u01/app/oradata/
[oracle@bsplinux oradata]$ ls -l
total 8
drwxr-x--- 6 oracle oinstall 4096 Jul 17 23:36 ORA11G
[oracle@bsplinux oradata]$ cd ORA11G/
[oracle@bsplinux ORA11G]$ ls -l
total 28
drwxr-x--- 2 oracle oinstall 4096 Jul 17 23:36 changetracking
drwxr-x--- 2 oracle oinstall 4096 May 22 19:41 controlfile
drwxr-x--- 2 oracle oinstall 4096 Jul 3 03:34 datafile
drwxr-x--- 2 oracle oinstall 4096 May 22 19:42 onlinelog
[oracle@bsplinux ORA11G]$ cd changetracking/
[oracle@bsplinux changetracking]$ ls -l
total 11348
-rw-r----- 1 oracle oinstall 11600384 Jul 17 23:38 o1_mf_80c1nvn8_.chg
在資料庫層面上,我們可以透過檢視v$block_change_tracking來檢查。
SQL> select status, filename from v$block_change_tracking;
STATUS FILENAME
---------- --------------------------------------------------------------------------------
ENABLED /u01/app/oradata/ORA11G/changetracking/o1_mf_80c1nvn8_.chg
此時,我們就開啟了block changing tracking元件方法。關閉該特性,也有相應的方法。
SQL> alter database disable block change tracking;
Database altered.
SQL> select status, filename from v$block_change_tracking;
STATUS FILENAME
---------- --------------------------------------------------------------------------------
DISABLED
3、命名block changing tracking檔案
除了使用OMF,我們也是可以命名使用Tracking檔案的。下面我們開啟該功能。
SQL> alter database enable block change tracking using file '/u01/app/oradata/ORA11G/test.chg' reuse;
Database altered.
SQL> select status, filename from v$block_change_tracking;
STATUS FILENAME
---------- --------------------------------------------------------------------------------
ENABLED /u01/app/oradata/ORA11G/test.chg
我們也可以進行重新命名檔案,不過這個操作是要進行重啟資料庫進入mount狀態。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1336960 bytes
Variable Size 356518272 bytes
Database Buffers 58720256 bytes
Redo Buffers 6094848 bytes
Database mounted.
SQL> alter database rename file '/u01/app/oradata/ORA11G/test.chg' to '/u01/app/oradata/ORA11G/changetracking/o1_mf_80c1nvn8_.chg';
Database altered.
此時,我們可以啟動系統。
SQL> alter database open;
Database altered.
SQL> select status, filename from v$block_change_tracking;
STATUS FILENAME
---------- --------------------------------------------------------------------------------
ENABLED /u01/app/oradata/ORA11G/changetracking/o1_mf_80c1nvn8_.chg
4、block changing tracking檔案大小
最後我們一起討論一下Tracking檔案的大小問題。我們在開啟Tracking功能的時候,是不能夠指定Tracking檔案的大小的。該檔案的大小是由資料庫體積大小來決定的。隨著Oracle資料庫體積的增加、減少,該檔案也會自動的進行變化。
在Oracle中,我們可以從v$block_change_tracking中檢視到該檔案的大小資訊。在MOS上,我們查到了對應的計算公式:
一般情況下,我們有一個經驗對應比例1/30000。也就是1TB的資料,對應Tracking File為30MB左右。
5、結論
Oracle備份還原是我們研究的一個重要方面。正式生產環境下,備份還原策略都是一個綜合性多種策略共同使用的過程。Incremental Backup在應對海量資料備份場景,有著很強的優勢。Block Changing Tracking是Oracle 10g的一個重要最佳化策略,值得我們研究學習。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-735880/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺談hosts檔案
- 淺談 Android Dex 檔案Android
- 淺談Android的檔案儲存Android
- 淺談 non-blocking I/O Multiplexing + poll/epoll 的正確使用BloC
- 淺談Linux的檔案系統(轉)Linux
- root使用者操作檔案提示 changing permissions of '***': Operation not permittedMIT
- 淺談被加殼ELF檔案的DUMP修復
- 鐳速傳輸淺談TLS 和檔案傳輸TLS
- 新手入門:淺談Linux的檔案系統Linux
- 淺談SAP專案管理專案管理
- 淺談從原始碼檔案到二進位制可執行檔案的過程原始碼
- block change tracking檔案可以放在flash_recovery_area裡!BloC
- 淺談MySQL日誌檔案|手撕MySQL|對線面試官MySql面試
- Linux 環境下 Makefile 檔案製作淺談(一)(轉)Linux
- Linux 環境下 Makefile 檔案製作淺談(二)(轉)Linux
- 淺談 Angular 專案實戰Angular
- 修改SharePoint上傳檔案大小限制(Changing Maximum Upload Size)
- 淺談儲存一個檔案操作內部發生了什麼
- 淺談ASP.NET中檔案下載函式使用方法ASP.NET函式
- 【淺出 PHP】PHP 檔案操作 寫檔案PHP
- 淺談專案程式碼規範
- 淺談研發專案經理
- 淺談專案管理軟體(轉)專案管理
- 淺談專案管理創新(轉)專案管理
- 淺淺談ReduxRedux
- Oradebug使用淺談--生成Hang或Locking問題分析檔案
- 淺談Python專案開發&管理Python
- 淺談專案的規範管理(轉)
- Blocking ElementsBloC
- 淺淺淺談JavaScript作用域JavaScript
- 淺談BI專案——為失敗BI專案解惑
- 淺嘗Node檔案系統
- 淺析檔案上傳漏洞
- APK檔案淺析-AndroidAPKAndroid
- 集 承 享——淺談基於內容的全鏈檔案管理與服務
- 淺談 Laravel Container 及其專案實踐LaravelAI
- 淺談專案可行性論證(轉)
- Celery淺談