【Oracle設定bct備份,效率有多高】實驗

wang1103392發表於2022-10-19

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章