一. 配置資料庫以ARCHIVELOG 模式運作
在ORACLE 10g 之前,在将資料庫置入Archivelog 模式後,需要啟動arch程序。 設定參數LOG_ARCHIVE_START 為true,也可啟動arch進
程。在10g以後,不需要使用該方法,當資料庫處于archivelog模式時,Oracle 會自動啟動arch程序。
Arch 程序由LGWR 程序調用,隻要一個聯機redo
log 被填滿。LGWR 程序就切換到另一個聯機redo 組。 此時如果資料庫處于archivelog 模式,LGWR程序也會通知ARCH,将該程序喚醒并開始工作。ARCH 程序響應LGWR的調用,在ORACLE 資料庫參數LOG_ARCHIVE_DEST_n 定義的位置或者定義的閃回恢複區生成聯機redo log的副本,直到arch 程序完成建立歸檔的重做日志副本後,Oracle 才能重用這個redo log 檔案。
Oracle10g 提供了2種不同的位置來儲存歸檔日志: ArchiveLog 目标目錄和閃回區。
1.1 ArchiveLog 目标目錄
使用LOG_ARCHVEI_DEST_n 參數可以定義10個不同的歸檔日志目标。這些目錄可以是本地目錄,網絡目錄。
下面對一些參數做相關說明:
(1) LOG_ARCHIVE_STAT_n 參數:該參數為每個歸檔日志定義兩種不同的狀态: ENABLE 和 DEFER,如果是ENABLE,則該歸檔目錄是有效的,如果是DEFER,就不會在指定的LOG_ARCHIVE_DEST_n 進行歸檔。
(2) LOG_ARCHIVE_FORMAT 參數: Oracle 建立歸檔日志時,按按參數指定的格式,重命名歸檔日志。
(3) LOG_ARCHIVE_MIN_SUCCEED_DEST: 允許DBA定義歸檔日志目标副本的最小資料,這些副本必須成功。這樣Oracle 才可以重用關聯的redo online log。
(4) LOG_ARCHIVE_START: 該參數在10g 中不再使用,使用者自動啟動ARCH 程序。
1.2 閃回恢複區
閃回恢複區(FRA)允許集中存儲所有與恢複相關的檔案。 FRA 可以本地使用附加的存儲,Oracle 叢集檔案系統(Oracle File system: OCFS)或者 Oracle 10g 中新的自動存儲管理(ASM)特性。
FRA 中備份檔案類型:歸檔的重做日志,控制檔案,控制檔案自動備份。閃回日志,重做日志,RMAN 資料檔案副本,RMAN 備份和其他相關檔案。
FRA 幫助管理全部的磁盤空間配置設定,并且為所有與恢複相關的檔案提供集中的存儲區域。FRA 也提供更快速的備份和恢複操作。
FRA 中檔案的保留與否由RMAN儲存政策決定。 通過執行RMAN config retention policy 指令設定該政策。 如果檔案在RMAN儲存政策下沒有過時,則不會被删除。如果歸檔日志過時,則可以删除。
FRA在由參數DB_RECOVERY_FILE_DEST 定義的特定位置中建立。 該位置可以是檔案系統或者ASM卷。DB_RECOVER_FILE_DEST_SIZE
,參數則用來定義FRA的最大尺寸。 這是Oracle 控制的檔案空間的限制,而與檔案系統自身中的全部可用空間無關。 Oracle 監控FRA中的可用空間,一旦FRA中的空間資料量減少到不安全的程度,Oracle 就會在警報日志中生成警告(90%已使用時生成一次警告,而在95%已使用時再次生成警告)。同樣,當FRA中空閑空間少于10%時,Oracle 就會删除處于過時檔案清單中的檔案。
如果閃回恢複區是唯一歸檔目标,那麼FRA中空間被用完時就會非常麻煩,可能造成資料庫異常終止,是以如果隻設定了唯一的歸檔目錄,則應該仔細的監控空間可用性。 簡單的說有以下幾種方法:
(1) 增加DB_RECOVERY_FILE_DEST_SIZE.
(2) 用RMAN BACKUP recovery area。 将FRA的内容移動到其他位置。
(3) 實體删除較早的備份,然後用RMAN crosscheck 指令來讓資料庫認可已經删除的檔案。
這類問題處理的方法參考:
Flash Recovery Area空間不足導緻資料庫不能打開或hang住
<a href="http://blog.csdn.net/tianlesoftware/archive/2009/10/15/4668991.aspx">http://blog.csdn.net/tianlesoftware/archive/2009/10/15/4668991.aspx</a>
和閃回恢複區相關的視圖:
(1) DBA_OUTSTANDING_ALERTS
在FRA中添加和删除檔案時,這些事件的記錄被記錄到資料庫警告日志中。 可以通過該視圖來了解一些FRA一些顯著問題的資訊。注意: 空間相關問題産生的時間和警告日志在該視圖中的時間存在一定程度的延時。
SQL> select reason from dba_outstanding_alerts;
REASON
-------------------------------------------------------------------------------
db_recovery_file_dest_size 位元組 (共 4039114752 位元組) 已使用 100.00%, 尚有 0 位元組可用。
(2)v$recovery_file_dest
該視圖提供了在資料庫中定義FRA的概念。 提供配置的FRA大小,所使用空間數量,可回收多少空間,以及FRA中檔案量。
SQL> select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------------------------- -------- ---------- ------- ---------
D:/app/Administrator/flash_recovery_area 4039114752 4005191680 0 85
如果SPACE_RECLAIMABLE 不為0. 即表示FRA中有可回收的檔案。 如果需要該空間,可以強制日志切換,它将删除可回收的任何檔案并釋放空間。
SQL> alter system switch logfile;
系統已更改。
(3) v$flash_recovery_area_usage
該視圖提供了關于占用FRA空間的檔案類型的詳細資訊。該視圖對檔案類型組合,然後提供每個檔案類型所使用的空間百分比,來自該組的總FRA可回收空間百分比,以及來自該組的FRA中檔案數量。
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- --------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 99.16 0 85
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
已選擇7行。
包含FRA列的其他視圖
可以在許多10g的視圖中找到 IS_RECOVERY_DEST_FILE視圖,例如:
V$CONTRILFILE,V$LOGIFLE,V$ARCHIVEC_LOG,V$DATAFILE_COPY,V$DATAFILE ,V$BACKUP_PIECE.
該列是一個布爾值,用來訓示檔案是否位于FRA中。
另一個列BYTES 可以在V$BACKUP_PIECE和RC_BACKUP_PIECE(rman 恢複目錄視圖)中找到,該列以位元組為機關訓示備份集片的大小。
其他閃回恢複區特性
在Oracle 10g,如果沒有設定OMF 相關的DB_CREATE_ONLINE_LOG_DEST_n 參數,則alter database add logfile和
alter database add standby logfile 指令建立FRA中的連接配接重做日志成員。 Alter database drop logfile 和alter database rename file指令也支援FRA中的檔案。在資料庫建立期間,Oracle 可以使用FRA存儲資料庫控制檔案和聯機重做日志。 如果定義了OMF 相關參數:DB_CREATE_ONLINE_LOG_DEST_n, 則将在這些位置建立控制檔案和重做日志,但不會在FRA中建立,即使定義了FRA。 如果沒有定義DB_CREATE_ONLINE_LOG_DEST_n,但定義了CREATE_FILE_DEST,則由CREATE_FILE_DEST定義的位置建立控制檔案和聯機重做日志的副本。 最後,如果定義了DB_RECOVERY_FILE_DEST,則在該位置建立控制檔案。 如果沒有定義任何這些參數,則在OS 特定的預設位置建立控制檔案和聯機重做日志。
FRA和ASM
RMAN支援使用自動存儲管理(ASM)存儲RMAN備份。ASM是磁盤管理工具,使用該工具,DBA就不再需要管理與給定資料庫關聯的實體檔案。 ASM在一定程度上類似于可用于UNIX 中的邏輯卷組。 ASM 使用ASM 磁盤組,該磁盤組是存儲在邏輯單元。 實體磁盤被配置設定給ASM磁盤組,并且提供ASM 磁盤組整體存儲功能。 ASM 磁盤組可以存在前面配置設定的檔案系統上,或者存儲在RAW磁盤上。 結合OCFS, 叢集的伺服器可以共享RAC配置中的ASM 磁盤。 配置ASM并定義各種磁盤組合,就可以配置設定資料檔案,控制檔案,聯機重做日志,以及各種RMAN備份檔案給ASM磁盤組。
ASM 提供了大量特性,包括負載均衡,資料備援,并且很容易添加和删除ASM磁盤組中的新磁盤。RMAN 支援ASM磁盤組,但是對于大多數非RAC站點使用ASM 實作并沒有多少價值。
1.3 是否應該使用FRA
我們認為隐藏在FRA後面的思想是優秀的,我們也喜歡将備份複制到一些其他的媒體,如錄音帶,進而可以脫機使用它們以進行災難恢複。
我們喜歡将FRA用于歸檔的重做日志,但仍喜歡将歸檔重做日志複制到多個位置(具體說是多個磁盤)。 歸檔的重做日志對于資料庫恢複至關重要,如果丢失一個歸檔的重做日志,則在該重做日志之後的所有其他重做歸檔就會幾乎沒有任何價值。 因為,我們傾向于使用LOG_ARCHIVE_DEST_n 參數來配置資料庫,而使用FRA 和另一單獨的檔案系統來存儲歸檔的重做日志。
1.4 ARCHIVELOG 模式之間的切換
具體操作參考我的blog
Oracle 歸檔與非歸檔的切換
<a href="http://blog.csdn.net/tianlesoftware/archive/2009/10/19/4693470.aspx">http://blog.csdn.net/tianlesoftware/archive/2009/10/19/4693470.aspx</a>
二. RMAN 指令行
進入RMAN 有兩種不同方法: 指令行 和 OEM。
2.1 通過RMAN 指令行連接配接
在OS 提示下簡單的輸入rman 指令就可以啟動RMAN。 一旦啟動了RMAN指令解釋程式,就可以執行任何所需的操作。
RMAN 總是以SYSDBA身份連接配接目标資料庫,是以連接配接賬戶必須具有SYSDBA權限。 具體用法參考幫助:
C:/Users/Administrator.DavidDai>rman help
參數 值 說明
----------------------------- ------------------------------------------------
target 加引号的字元串 目标資料庫連接配接字元串
catalog 加引号的字元串 恢複目錄的連接配接字元串
nocatalog 無 如果已指定, 則沒有恢複目錄
cmdfile 加引号的字元串 輸入指令檔案的名稱
log 加引号的字元串 輸出消息日志檔案的名稱
trace 加引号的字元串 輸出調試資訊日志檔案的名稱
append 無 如果已指定, 日志将以附加模式打開
debug 可選參數 激活調試
msgno 無 對全部消息顯示 RMAN-nnnn 字首
send 加引号的字元串 将指令發送到媒體管理器
pipe 字元串 管道名稱的建構塊
timeout 整數 等待管道輸入的秒數
checksyntax 無 檢查指令檔案中的文法錯誤
-----------------------------------------------------------------------------
單引号和雙引号 (' 或 ") 均可用于加引号的字元串。
除非字元串中有空格, 否則不用引号。
2.2 使用RMAN 的connet 指令
如果啟動了RMAN,發現沒有連接配接到正确的資料庫,或者要連接配接到一個不同的資料庫(目标資料庫,目錄資料庫,輔助資料庫),可以使用connect 指令來更改RMAN要連接配接的資料庫。
使用connect target 指令可以連接配接到一個不同的目标資料庫;使用connect catalog 指令可以連接配接到不同的恢複目錄,使用connect auxiliary 指令可以連接配接到一個不同的輔助資料庫。
Connect target sys/pwd@sid
Connect catalog user/pwd@sid
2.3 退出RMAN 用戶端
RMAN 退出指令有2個: quit 和 exit。
三. 為RMAN 操作配置資料庫
3.1 設定資料庫使用者
在預設情況下,可以通過SYS賬戶(sysdba)來使用RMAN,該賬戶不需要任何配置。當然,在執行産品備份操作時,sysdba 并不是最佳的賬戶。 建議在使用RMAN執行備份操作之前建立一個用于RMAN 備份的單獨賬戶設定。
C:/Users/Administrator.DavidDai>set ORACLE_SID=mynewccs
C:/Users/Administrator.DavidDai>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 6月 14 10:11:39 2010
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn / as sysdba
已連接配接。
SQL> create user rman identified by rman;
使用者已建立。
SQL> grant sysdba to rman;
授權成功。
SQL> host
Microsoft Windows [版本 6.1.7600]
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
C:/Users/Administrator.DavidDai>rman target rman/rman@mynewccs;
恢複管理器: Release 11.2.0.1.0 - Production on 星期一 6月 14 10:12:45 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連接配接到目标資料庫: MYNEWCCS (DBID=1108507251)
RMAN>
3.2 設定資料庫安全性
先來看一下本地伺服器上連接配接RMAN 和 通過ORACLE net 連接配接RMAN 兩者之間的差異。 啟動RMAN時,我們可能登入到資料庫所在的伺服器。 在這種情況下,如果使用特許的OS 使用者賬戶登入,登入時用具有sysdba 權限的使用者即可。 根據使用的作業系統,我們可以确定我們的使用者賬戶是否是特許的。 如果使用UNIX,通常會存在一個名為dba的UNIX 組,它是在建立ORACLE特有的賬戶(通常名為Oracle)時建立的。 如果在這個Unix組中指定我們的UNIX使用者賬戶,就可以不再執行其他操作而連接配接到一個目标資料庫。 如果使用Windows 平台,特許使用者會指定到一個通常名為ORA_DBA的NT組。
如果沒有使用特許的賬戶登入本地伺服器,或者從用戶端工作站使用Oracle net來連接配接目标資料庫(如:user/pwd@sid). 就需要配置資料庫使用密碼檔案。 配置密碼檔案時,先要建立密碼檔案,然後配置資料庫,使資料庫明确使用這個密碼檔案。 建立密碼檔案的2個步驟如下:
3.2.1 建立密碼檔案
使用Oracle 使用程式orapwd 可以建立密碼檔案。 該指令有3個參數:
File: 密碼檔案名
password: sys 使用者的密碼
Entries: 為其他特許的Oracle 使用者賬戶保留的條目數
預設情況下,win下密碼檔案的格式是pwdsid.ora,unix下的格式是orapwSID(大小寫敏感),
C:>orapwd file=pwdSID.ORA password=pwd entries=5;
3.2.2 配置資料庫使用密碼檔案
在預設情況下,Oracle 不會被配置為使用密碼檔案(除非使用DBCA建立資料庫)。 是否使用密碼檔案,是通過oracle提供的一個參數remote_login_passwordfile來控制的,remote_login_passwordfile有none,shared,exclusive3個值,
none表示不使用密碼檔案,停用密碼檔案驗證,Oracle資料庫不允許遠端SYSDBA/SYSOPER身份登入
exclusive表示執行個體獨占使用密碼檔案,也就是各自執行個體使用單獨的密碼檔案,
shared表示多個執行個體共享一個密碼檔案.
Oracle資料庫在啟動時,首先查找的是orapw<sid>的密碼檔案,如果該檔案不存在,則開始查找,orapw的密碼檔案,如果密碼檔案命名為orapw,多個資料庫就可以共享.
Alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
SQL> select name,value,issys_modifiable from v$parameter where name='remote_login_passwordfile';
NAME VALUE ISSYS_MOD
------------------------------ --------------- ---------
remote_login_passwordfile EXCLUSIVE FALSE
注意: 該參數不是動态修改的,修改後需要重新開機資料庫。
也可參考blog:
Oracle OS認證 密碼檔案 密碼丢失處理
<a href="http://blog.csdn.net/tianlesoftware/archive/2009/10/20/4698293.aspx">http://blog.csdn.net/tianlesoftware/archive/2009/10/20/4698293.aspx</a>
3.3 設定CONTROL_FILE_RECORD_KEEP_TIME 參數
為RMAN 配置資料庫時,我們應當考慮在控制檔案中存儲備份記錄的時間。 備份記錄包括完全的資料庫備份記錄,以及指定的資料檔案,控制檔案,參數檔案和歸檔目錄的備份記錄。資料庫參數CONTROL_FILE_RECORD_KEEP_TIME以天為機關(預設值為7天),是以在預設情況下,Oracle 會将RMAN備份和恢複記錄儲存7天。 可以将該參數設定為0到365之間的任意值。
CONTROL_FILE_RECORD_KEEP_TIME參數會影響一系列的資料庫操作。 首先,産生RMAN備份時,由于與這些備份相關的記錄存儲在控制檔案中,是以該參數直接影響資料庫控制檔案的大小。 備份記錄将不斷的儲存在控制檔案中,控制檔案将耗盡空間。 這時,Oracle 會擴充控制檔案來調整備份記錄所需的存儲空間。 此外,設定為0時,将禁止擴充控制檔案,并且會使得RMAN備份的儲存周期不穩定。
我們建議将CONTROL_FILE_RECORD_KEEP_TIME 參數設定為不小于選中資料庫的備份儲存周期,否則就可能在備份媒體上有資料庫備份,但是控制檔案不存在與備份相關的備份記錄,在這種情況下,将無法恢複這些較早的檔案。
SQL> select name,value from v$parameter where name='control_file_record_keep_time';
NAME VALUE
------------------------------ -------------------------------------------------
control_file_record_keep_time 7
SQL> alter system set control_file_record_keep_time=20;
SQL> show parameter control_file_record_keep_time
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 20
SQL>
3.4 配置RMAN預設設定
RMAN 允許我們執行自動的資料庫備份和恢複。 為了支援這個功能,我們為一些參數設定預設值。
3.4.1 configure 指令介紹
RMAN> show all;
使用目标資料庫控制檔案替代恢複目錄
db_unique_name 為 MYNEWCCS 的資料庫的 RMAN 配置參數為:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOA
D TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHO
ME_1/DATABASE/SNCFMYNEWCCS.ORA'; # default
Show all 指令顯示了預設的配置。 我們也可以使用檢視v$rman_configuration 視圖,它列出了非預設的RMAN 配額。
更多内容參考blog:
Oracle Rman 指令詳解(List report backup configure)
<a href="http://blog.csdn.net/tianlesoftware/archive/2009/12/13/4976998.aspx">http://blog.csdn.net/tianlesoftware/archive/2009/12/13/4976998.aspx</a>
3.4.2 配置多種RMAN 配置
我們可以采用不同的方法來配置通道:
使用configure channel device type 指令可以配置用于所有通道的預設值;使用configure channel n device type 指令可以配置用于指定預設通道的預設值。
使用configure channel device type clear 指令可以清楚用于所有通道的預設值,使用configure channel n device type clear指令可以清除用于指定預設通道的預設值。
使用allocate channel 指令配置設定一個通道時,可以為配置設定的這個通道指定名稱。 如: allocate channel d1 device type disk 指令可以建立一個名為d1的通道。 自動配置設定通道時,ORACLE 會為這些通道指定名稱,他們的預設名稱取決于預設裝置類型。 磁盤裝置,預設名:ORA_DISK_n; 錄音帶裝置: 預設名:ORA_SBT_TAPE_n。
自動配置設定通道數取決于所定義的預設并行級别。 執行configure 指令時,Oracle 顯示前面的配置設定,後面跟上新的配置設定。
3.4.3 configure 指令的一些示例:
配置通道預設設定
Configure default device type to sbt;
Configure default device type to disk;
當配置預設的裝置類型時,Oracle 将使用預設的通道,直到使用backup device type參數重寫預設值,也将自動配置設定用于delete 指令的維護通道和用于複制操作的輔助通道。
一旦配置了預設的裝置類型,就可以配置特定備份類型的預設值,當使用備份時,應該進行這種備份。 例如,當備份到磁盤時,可以讓Oracle 預設地使用标準的oracle 備份集方法備份資料庫,或者讓其預設為使用副本,或者預設為壓縮備份集,并表明并行程度(這表示将配置設定給備份的通道數)。 相關執行個體如下:
Configure device type disk backup type to backupset;
Configure device type disk backup type to compressed backupset;
Configure device type disk backup type to copy;
Configure device type disk parallelism 2;
壓縮 是Oracle 10g 裡的新特性。 壓縮提供了Oracle 備份的真正壓縮,而不同于ZIP 壓縮,它可以有效的減小備份集的大小。 當然,壓縮占用資源并且需要更長的時間來完成備份和恢複。
在看一個自動備份和恢複操作期間配置設定的通道數示例,示例中,配置設定磁盤操作的并行級别為2,是以,如果啟動自動備份操作,就會配置設定兩個通道來并行執行備份操作。
Configure channel 1 device type disk format 'd:/backup/orcl/backup_%U';
Configure channel 2 device type disk format 'e:/backup/orcl/backup_%U';
注意: 通常在設定預設的并行級别時,應當設定為連接配接備份資料庫的磁盤數或者錄音帶驅動器數。
在配置通道時有一些可用選項。
使用maxpiecesize 參數,可以控制備份集片的大小,
用maxopenfile,可以控制RMAN 一次最多可以打開的檔案數。
Rate 參數用于限制RMAN 并控制備份時讀取位元組的比率為每秒nB,nKB,nMB和nGB。
如:configure channcel 1 device type disk maxpiecesize 100m maxopenfile 8 rate 100MB;
注意: 不要混淆 maxpiecesize 參數 和 maxsetsize 參數之間的差別。 Maxpiecesize 限定單個備份集片的大小并且對備份的整體大小沒有影響。 Maxsetsize 參數限制備份的整體大小,是以需要謹慎使用。
如果是限定所有通道,可以執行如下指令:
Configure channel device type disk maxpiecesize 100m.
為什麼需要更改一個備份集片的最大尺寸呢? 首先是某些指定檔案大小存在限制,比如錄音帶隻能處理一定量的資料,而某些磁盤檔案系統對給定的資料檔案的大小有一些限制。
将一個錄音帶裝置設定為所有通道的預設裝置,并且指定一些參數的設定。 相關設定如下:
Configure channel devicetype sbt maxpiecesize100m parms 'ENV=(NB_ORA_CLASS=RMAN_RS100_TAPE)';
配置整個備份集的預設最大尺寸
Configure maxsetsize to 7500k;
将備份集的最大尺寸設為預設值,即沒有限制
Configure maxsetsize clear;
注意: 使用maxsetsize 來限制建立的整個備份的大小時需要特别小心。 這是因為資料庫在初始化階段可能小于定義的maxsetsize值,但資料庫很快就會超過maxsetsize 值,這樣就會導緻資料庫備份操作失敗。
使用configure 指令時,需要清楚給定的配置,這樣才能使用預設值。 如:
Configure channel 1 device type disk clear;
可以将備份程序配置為建立雙路備份(duplexed backup),也就是說在不同的位置建立同一個備份的多個副本。還可以使用configure 指令來配置資料庫的預設設定,以使configure 指令執行雙路的自動備份操作:
Configure datafile backup copies for device type disk to 2;
快照控制檔案,該檔案是RMAN 備份期間資料庫控制檔案的時間點副本,這樣可以保證備份與給定時間點一緻。 是以,如果在啟動備份操作後在資料庫中添加一個表空間或者資料檔案, 這個表空間或資料檔案就不會包含在備份中。 如果我們希望在預設位置外的位置建立備份控制檔案,就可以使用configure 指令來定義這個新位置:
Configure snapshot control file name to 'd:/backup/snapshotSID';
注意: 既是配置了FRA,Oracle 也不會在FRA中建立控制檔案。
在自動備份期間,我們可以将指定的表空間排除在備份之外,也可以使用configure 指令來實作這一功能:
Configure exclude for tablespace old_data;
Configure 指令允許我們啟用和禁止備份優化,啟用備份優化時,會使ORACLE 跳過在備份裝置上已有的相同備份的檔案的備份。
Configure backup optimization on;
注意:要執行優化操作,就必須啟動備份優化。此外,我們也必須執行 backup database指令或者backup archivelog指令或與like/all 選項連用,或backup backupset all。 最後,還可以使用backup 指令的force 參數來禁止備份優化。
3.4.4 使用格式串
先看例子:Configure channel 1 device type disk format 'd:/backup/orcl/backup_%U';
在configure 指令中經常使用格式串,在backup,resotre,allocate channel 等其他RMAN 指令中也會經常看到格式串。RMAN 提供了與格式串關聯的一些文法元素。 這些元素稱: 占位符, rman 将使用相應的定義值來替換他們。 例如示例中的 %U 文法元素告訴RMAN要使用系統生成的唯一表示符替換檔案名。
使用FORMAT參數時可使用的各種替換變量,如下(注意大小寫)所示:
%a:Oracle資料庫的activation ID即RESETLOG_ID。
%c:備份片段的複制數(從1開始編号,最大不超過256)。
%d:Oracle資料庫名稱。
%D:目前時間中的日,格式為DD。
%e:歸檔序号。
%f:絕對檔案編号。
%F:基于"DBID+時間"确定的唯一名稱,格式的形式為c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 為該資料庫的DBID,YYYYMMDD為日期,QQ是一個1~256的序列。
%h:歸檔日志線程号。
%I:Oracle資料庫的DBID。
%M:目前時間中的月,格式為MM。
%N:表空間名稱。
%n:資料庫名稱,并且會在右側用x字元進行填充,使其保持長度為8。比如資料庫名JSSBOOK,則生成的名稱則是JSSBOOKx。
%p:備份集中備份片段的編号,從1開始。
%s:備份集号。
%t:備份集時間戳。
%T:目前時間的年月日格式(YYYYMMDD)。
%u:是一個由備份集編号和建立時間壓縮後組成的8字元名稱。利用%u可以為每個備份集生成一個唯一的名稱。
%U:預設是%u_%p_%c的簡寫形式,利用它可以為每一個備份片段(即磁盤檔案)生成一個唯一名稱,這是最常用的命名方式,執行不同備份操作時,生成的規則也不同,如下所示:
生成備份片段時,%U=%u_%p_%c;
生成資料檔案鏡像複制時,%U=data-D-%d_id-%I_TS-%N_FNO-%f_%u;
生成歸檔檔案鏡像複制時,%U=arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u;
生成控制檔案鏡像複制時,%U=cf-D_%d-id-%I_%u。
%Y:目前時間中的年,格式為YYYY。
注:如果在BACKUP指令中沒有指定FORMAT選項,則RMAN預設使用%U為備份片段命名。
3.4.5 配置控制檔案和資料庫參數檔案的自動備份
Oracle 10g 版本中的RMAN 提供了備份控制檔案和資料庫參數檔案的功能。我們可以配置預設執行這些備份操作。
示例:
Configure controlfile autobackup on;
Configure controlfile autobackup off;
配置控制檔案和參數檔案的自動備份時的一些規則:
(1) 在RUN 程式塊之外執行每個RMAN的backup 或者 copy 指令時,都會自動備份控制檔案和參數檔案。
(2) 使用使用了RUN 程式塊,而且該程式塊的最後一個指令不是backup 或者copy,在RUN 程式塊結尾處會備份控制檔案和參數檔案。
除了上面2種自動控制檔案備份類型,我們還可以配置另一種特殊的控制檔案備份類型。該類型發生在資料庫變化時,這些變化包括添加新的表空間,添加資料檔案,添加聯機重做日志等。 這些自動備份類型隻在磁盤上發生,使用configure controlfile autobackup指令的特殊選項可以簡化備份。如:
Configure controlfile autobackup format for device type disk to 'd:/backup/sid_%F';
使用了該選項,RDBMS 會在資料結構的變化控制檔案産生影響時自動備份控制檔案。強調一點,隻支援磁盤。
3.4.6 備份預設的儲存政策:
RMAN 允許使用者使用configure retention policy 指令來配置儲存粗略。 配置儲存粗略不會導緻自動删除備份,需要使用delete obsolete 指令才能删除過期的備份集。 在report obsolete 指令時顯示到期的備份集。 如果列出的某個檔案不能被删除,需要魚腥crosscheck 指令,否則,Oracle 删除delete obsolete指令輸出的所有項。
如:
configure retention policy to recovery window of 7 days;
--recover window是保持所有足夠的備份,可以将資料庫系統恢複到最近七天内的任意時刻。任何超過最近七天的資料庫備份将被标記為obsolete。
configure retention policy to redundancy 5;
--redundancy 是為了保持可以恢複的最新的5份資料庫備份,任何超過最新5份的備份都将被标記為redundancy。它的預設值是1份。
configure retention policy clear;
-- 儲存政策重置為預設值(備援為1)
CONFIGURE RETENTION POLICY TO NONE;
-- 不應用任何儲存政策。
注意: 如果使用錄音帶管理系統,該系統會具有自己的儲存政策。如果錄音帶管理系統的儲存政策與RMAN中定義的備份儲存政策沖突,則錄音帶管理系統的儲存政策優先,同時,恢複備份的能力會大受影響。
3.4.7 配置預設的加密級别
在Oracle 10g R2以後的版本中,RMAN 可以建立加密備份,在備份期間,Oracle 在建立備份集時對其進行加密。當還原備份時,則對其進行解密。
Oracle 提供了3種不同的機密模式:
(1) 透明模式: 透明模式的加密不需要DBA 幹涉,為了使用該模式,必須配置Oracle 加密電子皮夾(Encryption Wallet).
(2) 密碼模式:密碼模式加密需要在建立将要加密的備份或還原(在建立時)加密的備份時提供密碼。 在RMAN備份腳本中使用指令: set encryption on identified by password only 提供密碼。
(3) 雙重模式:可以通過密碼或Oracle 加密電子皮夾來還原雙重模式的備份。 因為不需要安裝Oracle 加密電子皮夾,雙重模式簡化了備份的離站還原。可以使用: set encryption on identifiedby password 指令(注意,少了only) 建立雙重模式加密備份。
使用configure 指令配置各種與RMAN備份加密相關的持久性設定。可以使用RMANconfigure 指令來設定以下相關内容:
(1) 是否應該加密所有的資料庫檔案
(2) 是否應該加密特定的表空間
(3) 應該使用那種可用的機密算法來機密備份
如果正在使用基于Oracle 加密電子皮夾的安全保護,則隻需要設定configure 指令所需的持久性RMAN 設定。 如果希望使用密碼模式加密或雙重模式加密,就需要使用configure 指令配置持久性安全預設值,然後啟動備份時使用set 指令設定備份密碼,則在每次RMAN備份或者恢複會話期間必須輸入該密碼。
下面的示例中,為整個資料庫配置并啟用備份加密。 注意,如果沒有配置Oracle 加密電子皮夾,随後的任何備份都将會失敗,除非使用set 指令建立會話的加密密碼。
RMAN> configure encryption for database on;
新的 RMAN 配置參數:
CONFIGURE ENCRYPTION FOR DATABASE ON;
已成功存儲新的 RMAN 配置參數
RMAN> set encryption on identified by admin only;
正在執行指令: SET encryption
RMAN> backup database plus archivelog;
如果滿足下列條件,則使用加密備份歸檔的重做日志備份:
(1) 在進行歸檔重做日志的備份時執行set encryption on 指令。
(2) 已經為整個資料庫配置了加密,或者至少為資料庫的一個表空間配置了加密。
3.4.8 配置歸檔日志删除政策。
可以配置RMAN來管理歸檔重做日志的删除政策。預設情況下,Oracle 将配置的備份儲存政策應用于歸檔的重做日志。 然而,如果正在使用FRA和備用資料庫,就可以配置RMAN, 在使用configure archivelog deletion policy to applied on standby 指令,将歸檔的重做日志應用與強制的備用資料庫後将其标記為可删除。 在這種情況下,一旦已經成功将歸檔的重做日志應用于強制的備用資料庫位置,Oracle 就可以将其從FRA 中删除。
3.5 使用共享伺服器的情況
如果使用Oracle 的共享伺服器選項(10g以前稱為MTS,或者 多線程伺服器),就必須配置一個RMAN使用的專用伺服器,這是因為RMAN不能使用共享伺服器會話連接配接到資料庫。
如果共享的,就必須通過Net Manager 工具配置一個專用的:
MYICD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DavidDai)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = myicd)
)
)
四. 恢複目錄
Oracle 在RMAN存儲庫中維護與RMAN操作相關的所有中繼資料。RMAN存儲庫總是被存儲在目标資料庫的控制檔案中,我們可以用另一個位置存儲資料的RMAN存儲庫。 這就是RMAN恢複目錄。
在大多數操作中,RMAN 都不要恢複目錄,是以在許多情況下,恢複目錄實際上是一個可選的元件。 因為恢複目錄在很大程度上可選,是以RMAN的預設配置中沒有恢複目錄。
4.1 恢複目錄的定義
恢複目錄是RMAN的一個可選元件,它存儲來自RMAN備份的曆史備份資訊。 與資料庫控制檔案的RMAN資訊不同,恢複目錄資料不是定期的進行清楚,是以恢複目錄會儲存比控制檔案更多的曆史資訊。 使用恢複目錄比隻使用資料庫控制檔案有更多的優點,這些優點包括:
(1) 如果要使用存儲的RMAN腳本,就必須使用恢複目錄
(2) 恢複目錄提供存儲全企業RMAN資訊的單一存儲庫,它可以更友善,靈活地集中存儲企業的備份資訊
(3) 由于可以在目前時間之外的時間報告目标資料庫的資訊,是以恢複目錄使得報告起來更有靈活性。
(4) 使用恢複目錄可以保留某些預設的資料庫RMAN 通道配置資訊。
如果你是RMAN 老手,就會注意到這裡缺少一些優點:
(1)Oracle 10g可以很容易的在沒有恢複目錄的情況下通過resetlogs 支援恢複
(2)如果使用控制檔案自動備份,則不在需要将恢複目錄用于控制檔案恢複。
注意:如果不會使用恢複目錄,則儲存對資料庫DBID的記錄。 雖然這不是必須的内容,但是資料庫的DBID很有用,而且使用DBID可以簡化恢複操作。
C:/Users/Administrator.DavidDai>rman target /
恢複管理器: Release 11.2.0.1.0 - Production on 星期三 6月 16 19:48:48 2010
SQL> select dbid from v$database;
DBID
----------
1108507251
是否應該使用恢複目錄?
如果隻有很少的一些資料庫,則恢複目錄就可能不值得話費額外的時間和精力在它上面。 如果有許多資料庫,則應該考慮使用恢複目錄。 一般來說,恢複目錄帶來的靈活性和集中的全企業報告優點在價值上超過了它所增加的維護和管理成本。 然而,使用恢複目錄的一個缺點在于,如果目錄資料庫關閉,則所有備份都會失敗,除非已經編碼的腳本,進而在使用恢複目錄的第一個備份失敗時,執行沒有恢複目錄的備份。
此外,恢複目錄是資料保護備份環境和分割鏡像(split mirror)備份的基礎部分。 在這些配置中,當備份來自于備份主機的資料庫時,可以認為恢複目錄是最近的資訊,是以它是該政策的核心内容,若維護不當則成為失敗的導火索。記住,底線是看環境是否需要恢複目錄。
連接配接RMAN時,必須使用catalog 指令行參數來表明将要建立RMAN與恢複目錄的連接配接。在預設情況下,RMAN使用nocatalog 選項,該選項表明不使用恢複目錄。使用catalog 參數後,需要指明包含恢複目錄對象的恢複目錄模式的使用者ID 和密碼。
如: rman target 'sys/pwd as sysdba@sid' catalog 'user/pwd@SID2';
4.2 建立恢複目錄
4.2.1 配置恢複目錄資料庫
恢複目錄資料庫應該盡可能存在于敦力的資料庫上。 然後,根據我們的經驗,許多站點使用活動資料庫作為恢複目錄資料庫,隻要在備份資料庫時采取預防措施,這也是可行的。每個注冊的資料庫可以配置設定20M左右的表空間。
SQL> create tablespace rman_ts datafile 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/rmants.dbf' size 20M;
表空間已建立。
4.2.2 建立恢複目錄使用者
恢複目錄使用者需要connect,resource,recovery_catalog_owner 權限。
SQL> Create user rcat_dave identified by rcat_dave default tablespace rman_ts;
SQL> Grant connect,resource,recovery_catalog_owner to rcat_dave;
4.2.3 建立恢複目錄模式對象
建立恢複目錄在Oracle 10g中是一個簡單的過程,該過程僅需要使用RMAN。 啟動RMAN時,使用target 參數連接配接目标資料庫,再使用catalog參數連接配接恢複目錄資料庫模式。 最後在RMAN 提示符下執行 create catalog指令即可。
C:/Users/Administrator.DavidDai>rman target 'sys/admin as sysdba@mynewccs' catalog 'rcat_dave/rcat_dave@mynewccs';
恢複管理器: Release 11.2.0.1.0 - Production on 星期三 6月 16 21:34:56 2010
連接配接到恢複目錄資料庫
RMAN> create catalog tablespace rman_ts; -- rman_ts 是第一步建立的
恢複目錄已建立
4.2.4 在恢複目錄中注冊資料庫
使用恢複目錄執行資料庫的RMAN備份操作前必須注冊資料庫。方法如下:
RMAN> register database;
注冊在恢複目錄中的資料庫
正在啟動全部恢複目錄的 resync
完成全部 resync
用report schema 指令驗證是否注冊成功:
RMAN> report schema;
4.2.5 删除恢複目錄
使用drop_catalog 指令可删除恢複目錄模式,不過這樣也會使包含在模式中的所有資訊都會丢失。是以在删除之前要考慮做好備份。
RMAN> drop catalog;
恢複目錄所有者是RCAT_DAVE
再輸入一次 DROP CATALOG 指令來确認目錄删除
恢複目錄已删除
4.2.6 在恢複目錄中添加RMAN 備份
如果已經在沒有恢複目錄的情況下執行了RMAN備份,并且希望在後面将這些備份添加到恢複目錄,則可以使用catalog指令。可以将資料檔案副本,備份集片,歸檔日志備份,甚至整個備份目錄添加到目錄中。 示例如下:
RMAN>catalog datafilecopy 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/system01.dbf';
RMAN>catalog archivelog 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/arch_20.arc';
RMAN>catalog backuppiece 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/backup_031.bkp';
RMAN>catalog start with 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/';
注意: 要謹慎使用catalog start with 指令,必須在目錄路徑結尾加上反斜杠字尾,如果不加将周遊目錄下的所有組合. 如:D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS-OLD .
4.2.7 在恢複目錄中取消資料庫注冊
可以在RMAN 中使用unregister database 指令來取消資料庫注冊。如果希望取消已經存在的資料庫注冊,隻要連接配接到資料庫和恢複目錄,并執行unregister database指令即可。
RMAN> unregister database;
如果已經删除資料庫,并且希望從恢複目錄中删除該資料庫,則在大多數情況下隻需要知道希望取消注冊資料庫的名稱。
RMAN> unregister database mynewccs;
當恢複目錄中有多個相同名稱注冊的資料庫時,就需要知道需要取消注冊的資料庫的DBID。然後在run 代碼塊中運作unregister database,同時使用set dbid 指令。
RMAN> run
{
set dbid 1108507251;
unregister database mynewccs noprompt;
}