SQL> create user rman identified by rman default tablespace rman_ts temporary tablespace temp quota unlimited on rman_ts; 使用者已建立。 SQL> grant recovery_catalog_owner to rman; 授權成功。 SQL> grant connect, resource to rman; 授權成功。
the target database is called "his" and has the same TNS alias
user rman has been granted "recovery_catalog_owner "privileges
目標資料庫的串連使用者為internal帳號,或者以其他SYSDBA類型帳號串連
the recovery catalog database is called "rman" and has the same TNS alias
the schema containing the recovery catalog is "rman" (same password)
RMAN>allocate channel for delete type disk; RMAN>allocate channel for maintenance type disk;
7.在非歸檔模式下備份
資料庫狀態:
恢複目錄:開啟
目標資料庫:常式啟動或者資料庫載入
恢複目錄資料庫需要開啟,目標資料庫必須啟動(或者載入)。因為目標資料庫不在歸檔模式下,所以當進行備份恢複操作的時候資料庫無法開啟。不可以將資料表空間置於熱備份模式上進行等同於檔案系統級的拷貝,如果在非歸檔模式,資料庫開啟的狀態下不能進行資料檔案的備份。
7.1.資料庫完全備份
RMAN> run { 2> # backup the complete database to disk 3> allocate channel dev1 type disk; 4> backup 5> full 6> tag full_db_backup 7> format "/oracle/backups/db_t%t_s%s_p%p" 8> (database); 9> release channel dev1; 10> }
行#
2: 表明該行為注釋行(#是注釋符)
3&9: See section 15 - Channels通道定義
5: Full backup (default if full or incremental not specified)完全備份模式(預設模式)
6: Meaningful string (<=30 chars)(備份組標識,<=30個字元)
7: Filename to use for backup pieces, including substitution variables. 備份片使用的檔案名稱,可以包含代替變數。
8: Indicates all files including controlfiles are to be backed up表明備份所有資料檔案包括控制檔案
通過下面的命令顯示恢複目錄中記載的備份組資訊:
RMAN> list backupset of database;
7.2.備份資料表空間
RMAN> run { 2> allocate channel dev1 type disk; 3> backup 4> tag tbs_users_read_only 5> format "/oracle/backups/tbs_users_t%t_s%s" 6> (tablespace users) 7> }
RMAN> run { 2> allocate channel dev1 type disk; 3> backup 4> format "/oracle/backups/log_t%t_s%s_p%p" 5> (archivelog from time "sysdate-1" all delete input); 6> release channel dev1; 7> }
使用下面的命令顯示恢複目錄中的歸檔日誌:
RMAN> list backupset of archivelog all;
注意:RMAN找到歸檔日誌後會備份指定日誌,如果無法找到日誌,它也不會返回錯誤資訊。
8.2. Backing up the online logs 備份聯機日誌
聯機日誌不能用RMAN來備份,必須先將其歸檔。
為了實現這點,必須在RMAN中執行如下SQL語句:
RMAN> run { 2> allocate channel dev1 type disk; 3> sql "alter system archive log current"; 4> backup 5> format "/oracle/backups/log_t%t_s%s_p%p" 6> (archivelog from time "sysdate-1" all delete input); 7> release channel dev1; 8> }
RMAN> replace script backup_db_full { 2> # Performs a complete backup 3> execute script alloc_disk; 4> set maxcorrupt for datafile 1 to 0; 5> backup 6> ..... 7> execute script rel_disk; 8> }
上面的指令碼maxcorrupt for datafile 1 to 0設定為0,所以如果有錯誤資料區塊在資料檔案1中發現,上面的指令碼執行就會失敗。
13. 通道
一個通道是RMAN和目標資料庫之間的一個串連,"allocate channel"命令在目標資料庫啟動一個伺服器處理序,同時必須定義伺服器處理序執行備份或者恢複操作使用的I/O類型
通道控制命令可以用來:
控制RMAN使用的O/S資源
影響並行度
指定I/O頻寬的限制值(設定limit read rate參數)
定義備份片大小的限制(設定limit kbytes)
指定當前開啟檔案的限制值(設定limit maxopenfiles)
14. Report & list commands14.1. List
list命令查詢恢複目錄並且產生格式化的查詢內容:
RMAN> list backupset of datafile 1;
Key File Type LV Completion_time Ckp SCN Ckp Time
------- ---- ------------ -- --------------- ---------- --------
165 1 Full Oct 03 11:24 32022 Oct 03 11:24
208 1 Full Oct 24 14:27 52059 Oct 24 14:26
219 1 Full Oct 24 14:31 52061 Oct 24 14:31
<< other entries here >>
RMAN> list backupset of archivelog all;
Key Thrd Seq Completion time
------- ---- ------- ---------------
179 1 94 Oct 03 11:26
179 1 95 Oct 03 11:26
<< other entries here >>
14.2. Report
REPORT命令同樣可以查詢恢複目錄,但是REPORT命令文法可以構建獲得更為有用的資訊的指令,REPORT命令輸出可以儲存到訊息記錄檔中,但是必須在串連恢複目錄時指定MSGLOG或者LOG選項。
可以列出所有資料庫中不能恢複的檔案清單:
RMAN> report unrecoverable database;
顯示全部資料檔案:
RMAN> report schema; RMAN-03022:正在編譯命令:report 資料庫模式報表 檔案 KB 資料表空間 RB segs 名稱 1 121472 SYSTEM YES D:\ORACLE\ORADATA\HIS YSTEM01.DBF 2 327680 RBS YES D:\ORACLE\ORADATA\HIS\RBS01.DBF 3 110592 USERS NO D:\ORACLE\ORADATA\HIS\USERS01.DBF 4 73728 TEMP NO D:\ORACLE\ORADATA\HIS\TEMP01.DBF 5 12288 TOOLS NO D:\ORACLE\ORADATA\HIS\TOOLS01.DBF 6 59392 INDX NO D:\ORACLE\ORADATA\HIS\INDX01.DBF
15. 小提示
經常同步恢複目錄