oracle RMAN快照控制文件

聽說過Oracle 控制文件,還有快照控制文件這個說法呢?沒錯,儘管快照控制文件很少被提及,但確實是存在,只不過在使用RMAN時這個快照控制文件被使用。回顧一下 Oracle 控制文件,我們知道控制文件是Oracle體系結構中的重要組成部分之一,記錄了當前數據庫的結構信息,同時也包含數據文件及日誌文件的信息以及相關的狀態,歸檔信息,也記錄了系統當前SCN的值等等。那快照控制文件也就是控制文件的一個副本,本文介紹了什麼是快照控制文件以及何時被使用。

1、快照控制文件
快照控制文件是由RMAN恢復管理器在系統指定位置生成的當前控制文件的一個副本
我們知道控制文件在整個數據庫生命期中在不斷的時時刻刻發生變化,RMAN備份需要依賴於控制文件或恢復目錄,也就是說需要知道備份開
始時的檢查點SCN以及所有文件結構信息並且在整個備份期間這些信息需要保持一致,但又不能鎖定控制文件(鎖定操作無法執行檢查點,切
換日誌等)。因此既要保持一致性,又不影響數據庫的正常操作。快照控制文件就應運而生了。RMAN只在備份或同步操作期間對實際控制文
件進行一個短暫的鎖定,並根據其內容來生成或刷新快照控制文件。一旦該動作完成之後,RMAN將切換到使用快照控制文件進行備份及同步
操作。從而保證備份期間控制文件,數據文件等等的一致性。
綜上所述,其主要作用是使用RMAN同步恢復目錄或備份時能得到一個一致性的控制文件。

2、配置快照控制文件

a、快照控制文件位置
快照控制文件的位置取決於不同的系統平臺,如果啓用了快速閃回區,缺省情況下,生成的快照控制文件並不位於閃回區
Linux/Unix平臺爲: $ORACLE_HOME/dbs/[email protected]
Windows平臺爲: %ORACLE_HOME%\database\[email protected]

b、查看快照控制文件位置
[oracle@linux1 dbs]$ export ORACLE_SID=usbo
[oracle@linux1 dbs]$ rman target /

--查看快照控制文件的位置
RMAN> show snapshot controlfile name;

RMAN configuration parameters for database with db_unique_name USBO are:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/db_1/dbs/snapcf_usbo.f'; # default

c、修改快照空文件位置
sys@USBO> show parameter db_recov

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
db_recovery_file_dest string /u03/database/usbo/fr_area
db_recovery_file_dest_size big integer 3852M

sys@USBO> ho ls /u03/database/usbo/fr_area/USBO
archivelog

sys@USBO> ho mkdir -p /u03/database/usbo/fr_area/USBO/snap

--使用configure命令來配置快照控制文件的位置,如下,我們修改到使用閃回區來存放
RMAN> configure snapshot controlfile name to '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';

new RMAN configuration parameters:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';
new RMAN configuration parameters are successfully stored

--查看修改之後快照控制文件的位置
RMAN> show snapshot controlfile name;

RMAN configuration parameters for database with db_unique_name USBO are:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';

3、演示生成快照控制文件

--下面查看新的快照控制文件位置無任何文件
sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap
total 0

--生成控制文件快照
--在備份控制文件時會生成控制文件快照,如下
RMAN> backup current controlfile;

Starting backup at 2013/10/15 13:46:03
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=143 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:46:05
channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:46:07
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncnnf_TAG20131015T134604_95sonxsx_.bkp
tag=TAG20131015T134604 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 2013/10/15 13:46:07

--我們看以看到已經生成了一個控制文件快照時間爲13:46
sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap
total 9.4M
-rw-r----- 1 oracle asmadmin 9.4M Oct 15 13:46 snapcf_usbo.f

--下面我們來備份系統表空間,注意,備份系統表空間時,或者數據庫發生結構性變化且開啓了控制文件自動備份
--則在備份時即使不指定備份控制文件,控制文件仍然會被自動備份,如下
RMAN> backup tablespace system tag=system_tbs_bak;

Starting backup at 2013/10/15 13:51:30
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf
channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:51:30
channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:25
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_SYSTEM_TBS_BAK_95soz2l6_.bkp
tag=SYSTEM_TBS_BAK comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:52:29
channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:30
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_SYSTEM_TBS_BAK_95sp0x7s_.bkp
tag=SYSTEM_TBS_BAK comment=NONE --這個備份集就包含了控制文件與spfile文件的自動備份
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2013/10/15 13:52:30

--檢查快照控制文件是否被更新,此時文件的時間發生了變化爲13:52,如下
sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap
total 9.4M
-rw-r----- 1 oracle asmadmin 9.4M Oct 15 13:52 snapcf_usbo.f

--下面我們來做一個全備,且在全備期間添加一個新的表空間以觀察快照控制文件
RMAN> backup database tag=full_bak;

Starting backup at 2013/10/15 14:02:01 --->全備啓動時間爲14:02:01
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf
input datafile file number=00002 name=/u03/database/usbo/oradata/sysaux01.dbf
input datafile file number=00003 name=/u03/database/usbo/oradata/undotbs01.dbf
input datafile file number=00004 name=/u03/database/usbo/oradata/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:02:01
channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:03:56
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_FULL_BAK_95splt2p_.bkp tag=FULL_BAK comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:55
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:04:00
channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:04:02
piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_FULL_BAK_95sppjj9_.bkp tag=FULL_BAK comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 2013/10/15 14:04:02

--我們開啓另外一個session,此時時間爲14:02:08,我們來添加一個表空間
14:02:08 sys@USBO> create tablespace tbs_test datafile '/u03/database/usbo/oradata/tbs_test.dbf' size 5m;

Tablespace created.

14:02:54 sys@USBO>

--Author : Leshami
--Blog : http://blog.csdn.net/leshami

--查看控制文件中,新添加的表空間信息已經被追加到控制文件
14:06:05 sys@USBO> ho strings /u03/database/usbo/oradata/control01.ctl | grep tbs_test
/u03/database/usbo/oradata/tbs_test.dbf

--同時新添加的表空間信息同樣被追到了快照控制文件
14:07:19 sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f
-rw-r----- 1 oracle asmadmin 9.4M Oct 15 14:04 /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f

14:07:05 sys@USBO> ho strings /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f | grep tbs_test
/u03/database/usbo/oradata/tbs_test.dbf

--對於備份期間控制文件的自動備份呢?
--下面的檢查結果表明,自動備份的控制文件中也存在新表空間的信息
14:10:49 sys@USBO> ho strings /u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_FULL_BAK_95sppjj9_.bkp | grep tbs_test
/u03/database/usbo/oradata/tbs_test.dbf

--查看數據字典信息,表空間已經被添加
14:10:52 sys@USBO> select file#,name from v$datafile;

FILE# NAME
---------- ------------------------------------------------------------
1 /u03/database/usbo/oradata/system01.dbf
2 /u03/database/usbo/oradata/sysaux01.dbf
3 /u03/database/usbo/oradata/undotbs01.dbf
4 /u03/database/usbo/oradata/users01.dbf
5 /u03/database/usbo/oradata/tbs_test.dbf

--從上面的測試可知,
--a、RMAN 開始備份,Oracle檢查控制文件與快照控制文件是否一致(如果不存在,從控制文件提取信息創建),不一致則刷新快照控制文件。
--b、RMAN從快照控制文件讀取信息進行備份,此時快照控制文件並不包含新的表空間,因此備份集中沒有tbs_test.dbf
--c、備份完成後進行了控制文件與spfile文件自動備份
--d、刷新了快照控制文件
--e、所以上面的檢測中控制文件,快照控制文件,備份的控制文件中都包含新表空間的信息。但卻沒有備份,因爲表空間在備份開始後被添加。

--刪除演示的表空間
14:16:07 sys@USBO> drop tablespace tbs_test including contents and datafiles;

Tablespace dropped.

--將快照控制文件位置調整到缺省路徑
RMAN> configure snapshot controlfile name clear;

old RMAN configuration parameters:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';
RMAN configuration parameters are successfully reset to default value

RMAN> show snapshot controlfile name;

RMAN configuration parameters for database with db_unique_name USBO are:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/db_1/dbs/snapcf_usbo.f'; # default

發佈了40 篇原創文章 · 獲贊 10 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章