--==============================
-- 基于catalog 建立RMAN存儲腳本
簡言之,将rman的備份恢複指令寫成腳本并儲存在恢複目錄内,恢複目錄内的腳本可用性及通用性高于基于檔案系統的腳本。
用戶端隻要能夠登入到RMAN恢複目錄,則這些腳本可用,尤其對于global腳本,可以被任意注冊的資料庫排程。
一、腳本的分類
local : 在rman連接配接的目标資料庫下建立的腳本,此類腳本僅僅适用于目前目标資料庫。即是針對特定的資料庫建立的rman腳本
global : 能夠在恢複目錄注冊的任意目标資料庫中執行
二、建立腳本
--建立全局備份腳本
RMAN> create global script global_full_backup
2> comment 'A script for full backup to be used with any database'
3> {
4> backup database
5> plus archivelog
6> tag='Whole_db_bk';
7> delete obsolete;
8> }
created global script global_full_backup
--建立本地備份腳本
RMAN> create script full_backup
2> comment 'A script for full backup to be used with current target database'
4> backup as compressed backupset
5> database plus archivelog delete input
created script full_backup
--從文本檔案建立腳本
[oracle@oradb bk]$ cat backup_ctl_spfile --注意文本檔案必須以"{" 開頭,以"}" 結尾
{
allocate channel ch1 device type disk;
backup current controlfile
tag='ctl_spfile'
format '/u01/oracle/bk/rmbk/ctl_spfile_%d_%U';
release channel ch1;
}
RMAN> create script ctl_spfile_bk from file '/u01/oracle/bk/rmbk/backup_ctl_spfile';
script commands will be loaded from file /u01/oracle/bk/rmbk/backup_ctl_spfile
created script ctl_spfile_bk
三、檢視腳本的内容
print [global] script script_name
print [global] script script_name to file '<dir>' --将RMAN存儲腳本轉換到檔案系統可讀檔案
RMAN> print script ctl_spfile_bk;
printing stored script: ctl_spfile_bk
{
allocate channel ch1 device type disk;
backup current controlfile
tag='ctl_spfile'
format '/u01/oracle/bk/rmbk/ctl_spfile_%d_%U';
release channel ch1;
}
RMAN> print script ctl_spfile_bk to file '/u01/oracle/bk/rmbk/backup_ctl_spfile2';
script ctl_spfile_bk written to file /u01/oracle/bk/rmbk/backup_ctl_spfile2
檢視目前恢複目錄内的腳本
list [global | all] script names
RMAN> list script names;
List of Stored Scripts in Recovery Catalog
Scripts of Target Database ORCL
Script Name
Description
-----------------------------------------------------------------------
ctl_spfile_bk
full_backup
A script for full backup to be used with current target database
Global Scripts
global_full_backup
A script for full backup to be used with any database
四、更新腳本
replace [global] script scrip_name {....}
replace [global] script script_name from file '<dir>' --從檔案更新腳本
RMAN> replace global script global_full_backup
2> {
3> backup as compressed backupset database plus archivelog
4> tag='whole_db_bk';
5> delete obsolete;
6> }
replaced global script global_full_backup
五、執行腳本
方法:RUN { EXECUTE [global] SCRIPT script_name; }
從rman用戶端直接執行恢複目錄内的腳本
rman target sys/redhat@orcl catalog rman/rman@asmdb script 'script_name';
RMAN> run { execute global script global_full_backup;}
executing global script: global_full_backup
六、删除腳本
delete [global] script script_name
RMAN> delete script ctl_spfile_bk;
deleted script: ctl_spfile_bk
七、其它
注意:使用EXECUTE SCRIPT, DELETE SCRIPT ,PRINT SCRIPT等指令時,如果一個本地的腳本未找到,則尋找全局的腳本來代替。
是以應當注意命名規範,盡可能的不使用重名的腳本名,當DELETE SCRIPT 找不到本地腳本,而找到同樣名字的全局腳本,則全局
腳本被删除
八、更多參考
有關基于使用者管理的備份和備份恢複的概念請參考:
有關RMAN的恢複與管理請參考:
有關Oracle體系結構請參考:
<a href="http://blog.csdn.net/robinson_0612/archive/2010/04/29/5542983.aspx">Oracle 資料庫執行個體啟動關閉過程</a>