--==============================
-- 基于 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'
??????? 3 > {
??????? 4 > ?? backup as compressed backupset
??????? 5 > ?? database plus archivelog delete input
??????? 6 > ?? tag = 'Whole_db_bk' ;
??????? 7 > ?? delete obsolete ;
??????? 8 > }
?
??????? 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
?
??????????? ?? Script Name
??????????? ?? Description
??????????? ?? -----------------------------------------------------------------------
??????????? ?? 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 找不到本地腳本,而找到同樣名字的全局腳本,則全局
??? 腳本被刪除
?
八、 更多參考 ???
有關基于用戶管理的備份和備份恢復的概念請參考:
??????? Oracle 冷備份
??????? Oracle 熱備份
??????? Oracle 備份恢復概念
??????? Oracle 實例恢復
??????? Oracle 基于用戶管理恢復的處理 ( 詳細描述了介質恢復及其處理 )
???????
??? 有關 RMAN 的恢復與管理請參考:
??????? RMAN 概述及其體系結構
??????? RMAN 配置、監控與管理
??????? RMAN 備份詳解
??????? RMAN 還原與恢復
???????
??? 有關 Oracle 體系結構請參考:
??????? Oracle 實例和Oracle 數據庫(Oracle 體系結構)
??????? Oracle 表空間與數據文件
??????? Oracle 密碼文件
??????? Oracle 參數文件
??????? Oracle 聯機重做日志文件(ONLINE LOG FILE)
??????? Oracle 控制文件(CONTROLFILE)
??????? Oracle 歸檔日志
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

