【Oracle設定bct備份,效率有多高】實驗
oracle block change tracking 簡稱oracle bct,該功能在資料庫rman增量備份過程中,確實能減少增量備份的時間,提高備份的效率,在做增量備份之前,我們需要做level 0級別的備份,在做下一次level 1級別備份前,會將2次備份之間的資料差異透過點陣圖的形式,以日誌的方式記錄在bct日誌中,這樣在做增量備份時,不需要對每個daafile檔案進行比對,減少了比對時間,提高了備份效率。
下面我們看下資料庫的增量備份演進;
1、現實及歷史
Oracle bct是在10g時提出的,當資料庫進行增量備份時,記錄每個塊的變化情況記錄到bct檔案,這樣在下一次增量備份時,不需要進行資料庫所有檔案的掃描,直接對變更的資料庫進行備份,縮短了備份執行的時間及系統軟硬體資源的消耗。
2、bct備份原理及基礎
bct是基於bitmap file方式記錄每個資料檔案塊的變化,啟用了bct服務後,不需要其他維護操作,將上次level0級備份以來所變化的塊進行記錄,記錄到bct檔案中,檔案中包含了8次bitmaps資訊,所以增量備份時,需要記得這個前提,當超過8次時,bitmap資訊將會覆蓋,那麼bct將不會對增量備份進行最佳化,將重新掃描所有的資料檔案。同時bct檔案的大小和資料庫的大小及開啟的執行緒redo的資料有關係,tracking file的大小會根據資料庫大小的變化而變化,和更新頻率沒有關係。單例項的情況下大約為1/30000資料庫的大小,如果是rac環境,需要考慮thread數量。
初始值為10m,每個datafile,在tracking file裡最少分配320k的空間,所以如果有大量的小datafile,change tracking file也會相對較大。
3、bct策略需要注意事項
①開啟bct功能,如果直接開啟該功能,其檔案存放位置和引數db_create_file_dest相關,需設定該引數。
②直接開始bct並指定具體位置;alter database enable block change tracking using file '/home/oracle/track.f';
SQL> select * from v$block_change_tracking;
STATUS FILENAME BYTES
-------- ------------------------------------------------------------ ----------
ENABLED /home/oracle/track.f 11599872
4、bct在還原庫測試
①備份資料庫(Oracle 11.2.0.4)
level0級別備份命令:
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup as compressed backupset incremental level 0 database tag='level0' format '/home/oracle/backup/full_db_level0_%U_%T.bak' ;
sql 'alter system archive log current';
backup as compressed backupset archivelog all tag='arc_bak' format='/home/oracle/backup/archivelog_%U_%T' skip inaccessible filesperset 6 not backed up 1 times delete input;
backup current controlfile format '/home/oracle/backup/ctl_level0_%U_%T.bak';
backup spfile format '/home/oracle/backup/spfile_level0_%U_%T.bak';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
開啟bct,插入資料scott.it資料
SQL> select * from it;
ID
----------
1
2
100
SQL> commit;
進行level1級別備份命令:
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup as compressed backupset incremental level 1 database tag='level1' format '/home/oracle/backup/full_db_level1_%U_%T.bak' ;
sql 'alter system archive log current';
backup as compressed backupset archivelog all tag='arc_bak' format='/home/oracle/backup/archivelog_%U_%T' skip inaccessible filesperset 6 not backed up 1 times delete input;
backup current controlfile format '/home/oracle/backup/ctl_level1_%U_%T.bak';
backup spfile format '/home/oracle/backup/spfile_level1_%U_%T.bak';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
[oracle@db1 backup]$ ls -lrth
total 313M
-rw-r----- 1 oracle oinstall 1.1M Aug 22 13:18 full_db_level0_0q15q71j_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 22M Aug 22 13:19 full_db_level0_0p15q71j_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 96K Aug 22 13:19 full_db_level0_0r15q729_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 74M Aug 22 13:19 full_db_level0_0o15q71j_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 195M Aug 22 13:19 full_db_level0_0n15q71j_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 13K Aug 22 13:19 archivelog_0s15q72p_1_1_20220822
-rw-r----- 1 oracle oinstall 2.5K Aug 22 13:19 archivelog_0t15q72p_1_1_20220822
-rw-r----- 1 oracle oinstall 9.4M Aug 22 13:19 ctl_level0_0u15q72q_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 96K Aug 22 13:19 spfile_level0_0v15q72s_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 608K Aug 22 13:30 full_db_level1_1015q7ms_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 128K Aug 22 13:30 full_db_level1_1215q7ms_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 664K Aug 22 13:30 full_db_level1_1115q7ms_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 96K Aug 22 13:30 full_db_level1_1415q7mt_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 1.1M Aug 22 13:30 full_db_level1_1315q7ms_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 525K Aug 22 13:30 archivelog_1515q7mv_1_1_20220822
-rw-r----- 1 oracle oinstall 2.5K Aug 22 13:30 archivelog_1615q7mv_1_1_20220822
-rw-r----- 1 oracle oinstall 9.4M Aug 22 13:30 ctl_level1_1715q7n0_1_1_20220822.bak
-rw-r----- 1 oracle oinstall 96K Aug 22 13:30 spfile_level1_1815q7n2_1_1_20220822.bak
[oracle@db1 backup]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on 星期一 8月 22 13:32:10 2022
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1640816139)
RMAN> list backup summary;
using target database control file instead of recovery catalog
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
23 B 0 A DISK 22-8月 -22 1 1 YES LEVEL0
24 B 0 A DISK 22-8月 -22 1 1 YES LEVEL0
25 B 0 A DISK 22-8月 -22 1 1 YES LEVEL0
26 B 0 A DISK 22-8月 -22 1 1 YES LEVEL0
27 B 0 A DISK 22-8月 -22 1 1 YES LEVEL0
28 B A A DISK 22-8月 -22 1 1 YES ARC_BAK
29 B A A DISK 22-8月 -22 1 1 YES ARC_BAK
30 B F A DISK 22-8月 -22 1 1 NO TAG20220822T131922
31 B F A DISK 22-8月 -22 1 1 NO TAG20220822T131924
32 B 1 A DISK 22-8月 -22 1 1 YES LEVEL1
33 B 1 A DISK 22-8月 -22 1 1 YES LEVEL1
34 B 1 A DISK 22-8月 -22 1 1 YES LEVEL1
35 B 1 A DISK 22-8月 -22 1 1 YES LEVEL1
36 B 1 A DISK 22-8月 -22 1 1 YES LEVEL1
37 B A A DISK 22-8月 -22 1 1 YES ARC_BAK
38 B A A DISK 22-8月 -22 1 1 YES ARC_BAK
39 B F A DISK 22-8月 -22 1 1 NO TAG20220822T133008
40 B F A DISK 22-8月 -22 1 1 NO TAG20220822T133010
②恢復資料庫
直接使用oracle資料庫dummy方式啟動到nomount狀態,透過已有的備份恢復spfile檔案
[oracle@db1 dbs]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on 星期一 8月 22 13:46:26 2022
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database (not started)
RMAN> startup nomount;
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'
starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 285213576 bytes
Database Buffers 775946240 bytes
Redo Buffers 5517312 bytes
RMAN> restore spfile from '/home/oracle/backup/spfile_level1_1815q7n2_1_1_20220822.bak';
Starting restore at 22-8月 -22
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=429 device type=DISK
channel ORA_DISK_1: restoring spfile from AUTOBACKUP /home/oracle/backup/spfile_level1_1815q7n2_1_1_20220822.bak
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 22-8月 -22
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1185853440 bytes
Fixed Size 2252664 bytes
Variable Size 956301448 bytes
Database Buffers 218103808 bytes
Redo Buffers 9195520 bytes
SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@db1 ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on 星期一 8月 22 13:50:35 2022
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (not mounted)
RMAN> restore controlfile from '/home/oracle/backup/ctl_level1_1715q7n0_1_1_20220822.bak';
Starting restore at 22-8月 -22
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=572 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oradata/orcl/control01.ctl
output file name=/oradata/orcl/control02.ctl
Finished restore at 22-8月 -22
RMAN> alter database mount;
恢復資料庫:restore & recover database;
run{
restore database;
recover database;
alter database open resetlogs;
}
檢查資料情況:
[oracle@db1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期一 8月 22 13:55:59 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Next log sequence to archive 1
Current log sequence 1
SQL> conn scott/oracle
Connected.
SQL> select * from it;
ID
----------
1
2
100
資料恢復完成,資料無丟失,此時bct狀態為啟用狀態,資料庫已經恢復過,其需要初始化才能發揮其備份最佳化的功能。 SQL> select * from v$block_change_tracking;
STATUS FILENAME BYTES
-------- ---------------------------------------- ----------
ENABLED /home/oracle/track.log 11599872
5、bct對資料庫效能的影響
①OLTP型別業務,啟用bct對資料庫的效能的影響幾乎為0.
②OLAP型別業務,對於數倉型別的業務,大量的資料錄入,造成bct程式來不及進行寫入到track.f日誌中,造成擁塞,這時會反應到dbtime佔用上,如果發現這種情況,可以反應出bct的開啟對資料庫效能的影響。
總結:bct功能使用在增量備份過程中,提高增量備份資料庫的效率。一般推薦資料庫的塊變化量小於20%時應該啟用BCT。同時bct在恢復庫的過程中,如果track.f檔案丟失,開啟資料庫會報錯,只要在mount狀態下將bct功能關閉,在開啟open狀態即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15810651/viewspace-2919123/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle實驗記錄 (恢復-rman操作(設定&備份))Oracle
- oracle rman備份及策略設定Oracle
- sublime設定備份
- rman備份設定
- oracle實驗記錄 (恢復-rman增量備份)Oracle
- oracle實驗記錄 (rman 備份檢查&preview)OracleView
- 【rman備份策略】實驗
- oracle rman備份驗證和備份進度監控Oracle
- oracle實驗記錄 (恢復-關於熱備份)Oracle
- oracle 增量備份恢復驗證Oracle
- ORACLE常用定時備份指令碼Oracle指令碼
- oracle rman 定時備份指令碼Oracle指令碼
- Oracle RMAN備份實戰Oracle
- Oracle備份恢復實驗(原廠培訓資料)Oracle
- oracle rman備份驗證和備份/恢復進度監控Oracle
- 設定備份的過期日期
- 用友U8設定了自動備份,備份失效
- Oracle備份與恢復系列 (一)實驗環境介紹Oracle
- Oracle的奇葩設定之非歸檔模式與RMAN備份Oracle模式
- oracle備份--離線備份Oracle
- RMAN備份、恢復實驗室 之 備份篇 【歸檔模式】模式
- Linux備份任務綜合實驗Linux
- 備份前先設定成歸檔模式模式
- rman通過設定口令加密備份!加密
- 設定db2 的線上備份DB2
- oracle 12c中CDB和PDB的備份還原實驗Oracle
- Oracle用指令碼定時執行備份Oracle指令碼
- oracle 備份Oracle
- oracle備份Oracle
- Oracle塊損壞恢復(有rman備份)Oracle
- 實戰-MySQL定時增量備份(2)MySql
- RMAN備份效率之-oracle block internal(block 內部結構分解)OracleBloC
- BMMySQL定時備份資料庫(全庫備份)的實現meuMySql資料庫
- oracle實驗記錄 (oracle 關於instance引數設定)Oracle
- Oracle 10g rac+asm 磁碟頭備份與恢復實驗Oracle 10gASM
- oracle實驗記錄 (恢復,備份-含壞塊資料檔案)Oracle
- oracle實驗記錄 (恢復-使用resetlogs open前備份恢復)Oracle
- oracle實驗記錄(恢復-丟失未備份資料檔案)Oracle