




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、前言:這篇文章主要介紹RMAN的常用方法,其中包含了作者一些自己的經驗,里面的實驗也基本全在WIN 2K和ORACLE 8.1.6環境下測試成功(因為這個環境比較容易實現)。因為篇幅有限,一些技術細節不能一一覆蓋了,只希望能夠幫助新手入門的作用,想真正熟練掌握RMAN,必須經過較長時間的實踐磨練才可以,尤其需要在工程中獲得寶貴的故障解決經驗。1.什么是RMAN?RMAN可以用來備份和還原數據庫文件、歸檔日志和控制文件。它也可以用來執行完全或不完全的數據庫恢復。注意:RMAN不能用于備份初始化參數文件和口令文件。RMAN啟動數據庫上的Oracle服務器進程來進行備份或還原。備份、還原、恢復是由這
2、些進程驅動的。RMAN可以由OEM的Backup Manager GUI來控制,但在本文章里不作重點討論。2. Terminology 專業詞匯解釋2.1. Backup sets 備份集合備份集合有下面的特性: 包括一個或多個數據文件或歸檔日志 以oracle專有的格式保存 有一個完全的所有的備份片集合構成 構成一個完全備份或增量備份2.2. Backup pieces 備份片一個備份集由若干個備份片組成。每個備份片是一個單獨的輸出文件。一個備份片的大小是有限制的;如果沒有大小的限制, 備份集就只由一個備份片構成。備份片的大小不能大于使用的文件系統所支持的文件長度的最大值。2.3. Imag
3、e copies 鏡像備份鏡像備份是獨立文件(數據文件、歸檔日志、控制文件)的備份。它很類似操作系統級的文件備份。它不是備份集或 備份片,也沒有被壓縮。2.4. Full backup sets 全備份集合全備份是一個或多個數據文件中使用過的數據塊的的備份。沒有使用過的數據塊是不被備份的,也就是說,oracle 進行備份集合的壓縮。 2.5. Incremental backup sets 增量備份集合增量備份是指備份一個或多個數據文件的自從上一次同一級別的或更低級別的備份以來被修改過的數據塊。 與完全備份相同,增量備份也進行壓縮。2.6. File multiplexing不同的多個數據文件
4、的數據塊可以混合備份在一個備份集中。2.7. Recovery catalog resyncing 恢復目錄同步使用恢復管理器執行backup、copy、restore或者switch命令時,恢復目錄自動進行更新,但是有關日志與歸檔日志信息沒有自動記入恢復目錄。需要進行目錄同步。使用resync catalog命令進行同步。RMAN>resync catalog; RMAN-03022:正在編譯命令:resyncRMAN-03023:正在執行命令:resyncRMAN-08002:正在啟動全部恢復目錄的 resyncRMAN-08004:完成全部 resync3. 恢復目錄3.1.恢復目
5、錄的概念恢復目錄是由RMAN使用、維護的用來放置備份信息的倉庫。RMAN利用恢復目錄記載的信息去判斷如何執行需要的備份恢復操作。恢復目錄可以存在于ORACLE數據庫的計劃中。雖然恢復目錄可以用來備份多個數據庫,建議為恢復目錄數據庫創建一個單獨的數據庫。恢復目錄數據庫不能使用恢復目錄備份自身。 3.2.建立恢復目錄第一步,在目錄數據庫中創建恢復目錄所用表空間:SQL> create tablespace rman_ts datafile 'd:oracleoradatarmanrman_ts.dbf' size 20M;表空間已創建。第二步,在目錄數據庫中創建RMAN 用戶
6、并授權: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 ;授權成功。第三步,在目錄數據庫中創建恢復目錄C:>rman catalog rman/rman恢復管理器:版本8.1.6.0.0 - Prod
7、uctionRMAN-06008:連接到恢復目錄數據庫RMAN-06428:未安裝恢復目錄RMAN>create catalog tablespace rman_ts;RMAN-06431:恢復目錄已創建注意:雖然使用RMAN不一定必需恢復目錄,但是推薦使用。因為恢復目錄記載的信息大部分可以通過控制文件來記載,RMAN在恢復數據庫時使用這些信息。不使用恢復目錄將會對備份恢復操作有限制。3.3.使用恢復目錄的優勢 可以存儲腳本; 記載較長時間的備份恢復操作;4. 啟動RMANRMAN為交互式命令行處理界面,也可以從企業管理器中運行。為了使用下面的實例,先檢查環境符合: the target
8、 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 catal
9、og is "rman" (same password)在使用RMAN前,設置NLS_DATE_FORMAT 和NLS_LANG環境變量,很多RMAN LIST命令的輸出結果是與日期時間相關的,這點在用戶希望執行以時間為基準的恢復工作也很重要。下例是環境變量的示范:NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBKNLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS為了保證RMAN使用時能連接恢復目錄,恢復目錄數據庫必須打開,目標數據庫至少要STARTED(mount),否則RMAN會返回一個錯誤,目標數據庫必須置
10、于歸檔模式下。4.1.使用不帶恢復目錄的RMAN設置目標數據庫的 ORACLE_SID ,執行: % rman nocatalogRMAN> connect target RMAN> connect target internal/<password>his4.2.使用帶恢復目錄的RMAN% rman rman_ts rman/rmanrmanRMAN> connect target% rman rman_ts rman/rmanrman target internal/<password>his4.3.使用RMAN一旦連接到目標數據庫,可以通過交互界
11、面或者事先存儲的腳本執行指定RMAN命令, 下面是一個使用RMAN交互界面的實例:RMAN> resync catalog;RMAN-03022:正在編譯命令:resyncRMAN-03023:正在執行命令:resyncRMAN-08002:正在啟動全部恢復目錄的 resyncRMAN-08004:完成全部 resync使用腳本的實例:RMAN> execute script alloc_1_disk;創建或者替代存儲的腳本:RMAN> replace script alloc_1_disk 2> allocate channel d1 type disk;3>
12、5.注冊或者注銷目標數據庫5.1.注冊目標數據庫數據庫狀態: 恢復目錄狀態:打開 目標數據庫:加載或者打開目標數據庫在第一次使用RMAN之前必須在恢復目錄中注冊:第一步,啟動恢復管理器,并且連接目標數據庫:C:>rman target internal/oraclehis catalog rman/rmanrman恢復管理器:版本8.1.6.0.0 - ProductionRMAN-06005:連接到目標數據庫:HIS (DBID=3021445076)RMAN-06008:連接到恢復目錄數據庫第二步,注冊數據庫:RMAN> register database;RMAN-03022
13、:正在編譯命令:registerRMAN-03023:正在執行命令:registerRMAN-08006:注冊在恢復目錄中的數據庫RMAN-03023:正在執行命令:full resyncRMAN-08002:正在啟動全部恢復目錄的resyncRMAN-08004:完成全部resync5.2.注銷目標數據庫RMAN提供了一個注銷工具,叫DBMS_RCVCAT工具包,請注意一旦注銷了該目標數據庫,就不可以使用恢復目錄中含有的備份集來恢復數據庫了。為了能注銷數據庫,需要獲得數據庫的標識碼(DB_ID)和數據庫鍵值(DB_KEY)。其中連接目標數據庫時將會獲得DB_ID。C:>rman tar
14、get internal/oraclehis catalog rman/rmanrman恢復管理器:版本8.1.6.0.0 - ProductionRMAN-06005:連接到目標數據庫:HIS (DBID=3021445076)RMAN-06008:連接到恢復目錄數據庫其中DBID=3021445076,利用DBID=3021445076查詢數據庫鍵值碼:連接到目標數據庫,查詢db表:SQL> select * from db;DB_KEY DB_ID CURR_DBINC_KEY- - -1 3021445076 2獲得DB_KEY1,這樣,該目標數據庫DB_KEY1,DBID=30
15、21445076,利用兩個值使用DBMS_RCVCAT工具包就可以注銷數據庫:SQL> execute dbms_rcvcat.unregisterdatabase(1,3021445076);PL/SQL 過程已成功完成。至此,注銷數據庫操作完成。6.操作已有的備份6.1.加入目錄數據庫數據庫狀態: 恢復目錄:打開 目標數據庫:加載或者打開如果存在8.x版本以前創建的備份數據想注冊到目標數據庫,可以采用如下手工方式加入到恢復目錄中,RMAN> catalog datafilecopy '/oracle/ . /system01.dbf' 使用如下命令顯示恢復目錄中
16、包含的文件RMAN> list copy of database;6.2.從目錄數據庫中刪除第一步:查看備份信息:RMAN>list backup; RMAN-03022:正在編譯命令:list備份集列表關鍵字 Recid 標記 LV 集合標記 集合計數 完成時間- - - - - - -1104 2 501364455 0 501364446 2 06-8月 -03備份段列表關鍵字 Pc# Cp# 狀態 完成時間 段名- - - - - -1106 1 1 AVAILABLE 06-8月 -03 D:ORACLEORA81DATABASE02EU4DMU_1_1數據文件包括列表文
17、件 名稱 LV 類型 檢查點SCN 檢查點時間- - - - - -3 D:ORACLEORADATAHISUSERS01.DBF 0 Full 160052 06-8月 -03備份集的關鍵字為1104。第二步:定義delete通道:RMAN>allocate channel for delete type disk;RMAN-03022:正在編譯命令:allocateRMAN-03023:正在執行命令:allocateRMAN-08030:分配的通道:deleteRMAN-08500:通道 delete:sid=19 devtype=DISK第三步:刪除backupset備份集RMAN
18、>change backupset 1104 delete;RMAN-03022:正在編譯命令:changeRMAN-08073:已刪除備份段RMAN-08517:備份段 handle=D:ORACLEORA81DATABASE02EU4DMU_1_1 recid=2 stamp=501364447RMAN-03023:正在執行命令:partial resyncRMAN-08003:啟動部分恢復目錄的 resyncRMAN-08005:完成部分 resync注意:部分執行刪除備份集、備份片或者維護恢復目錄的命令,需要先指定通道,如:RMAN>allocate channel for
19、 delete type disk;或者RMAN>allocate channel for maintenance type disk;7.在非歸檔模式下備份數據庫狀態: 恢復目錄: 打開 目標數據庫:例程啟動或者數據庫加載恢復目錄數據庫需要打開,目標數據庫必須啟動(或者加載)。因為目標數據庫不在歸檔模式下,所以當進行備份恢復操作的時候數據庫無法打開。不可以將表空間置于熱備份模式上進行等同于文件系統級的拷貝,如果在非歸檔模式,數據庫打開的狀態下不能進行數據文件的備份。7.1.數據庫完全備份RMAN> run 2> # backup the complete database
20、to disk3> allocate channel dev1 type disk;4> backup5> full6> tag full_db_backup7> 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 n
21、ot 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
22、database;7.2.備份表空間RMAN> run 2> allocate channel dev1 type disk;3> backup4> tag tbs_users_read_only5> format '/oracle/backups/tbs_users_t%t_s%s'6> (tablespace users)7> 使用下列命令來顯示恢復目錄中該表的備份信息:RMAN> list backupset of tablespace users;假設USERS表空間在備份后被置為READ ONLY表空間,以后的全庫備份就
23、可以不用備份該表空間,為了達到這個目的,可以在以后的備份中指定'skip readonly'。注意,目標數據庫不需要一定打開,只要加載就可以,因為表空間的信息存儲在控制文件中。7.3.備份單獨數據文件RMAN> run 2> allocate channel dev1 type 'SBT_TAPE'3> backup4> format '%d_%u'5> (datafile '/oracle/dbs/sysbigdb.dbf');6> release channel dev1;7> 行#2
24、: 使用MML(media manager layer)分配磁帶驅動器,必須指定類型為SBT_TAPE;注意因為沒有指定標識,所以標識為空;使用下面的命令顯示恢復目錄中備份的表空間:RMAN> list backupset of datafile 1;7.4.備份數據文件RMAN> run 2> allocate channel dev1 type 'SBT_TAPE'3> copy datafile '/oracle/dbs/temp.dbf' to '/oracle/backups/temp.dbf'4> rel
25、ease channel dev1;5> 使用下面的命令顯示恢復目錄中的文件拷貝:RMAN> list copy of datafile '/oracle/dbs/temp.dbf'拷貝數據文件和備份數據文件是不一樣的,數據文件拷貝是一個該文件的鏡像。文件的備份產生一個備份集。7.5.備份控制文件RMAN> run 2> allocate channel dev1 type 'SBT_TAPE'3> backup4> format 'cf_t%t_s%s_p%p'5> tag cf_monday_nigh
26、t6> (current controlfile);7> release channel dev1;8> 注意:數據庫完全備份將自動備份控制文件。 8.歸檔模式下的備份數據庫狀態:恢復目錄:打開目標數據庫:例程啟動,數據庫加載或者打開備份操作使用的命令與非歸檔模式下基本一樣。8.1. Backing up archived logs 備份歸檔日志下面的腳本備份歸檔日志:RMAN> run 2> allocate channel dev1 type disk;3> backup4> format '/oracle/backups/log
27、_t%t_s%s_p%p'5> (archivelog all);6> release channel dev1;7> 下面的腳本歸檔日志從# 90 to 100:RMAN> run 2> allocate channel dev1 type disk;3> backup4> format '/oracle/backups/log_t%t_s%s_p%p'5> (archivelog from logseq=90 until logseq=100 thread 1);6> release channel dev1;7
28、> 下面的腳本備份在24小時內產生的歸檔日志,在備份完成后會自動刪除歸檔日志。如果備份失敗,歸檔日志不會被刪除。RMAN> run 2> allocate channel dev1 type disk;3> backup4> 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&
29、gt; 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> backup5> format '
30、/oracle/backups/log_t%t_s%s_p%p'6> (archivelog from time 'sysdate-1' all delete input);7> release channel dev1;8> 上面的腳本可以在執行完一個完整的聯機數據庫備份后執行,確保所有的重做日志可以將數據庫恢復到一個一致性的狀態。注意:不可以標識歸檔日志備份集。9. 增量備份N級別增量備份備份從最近的N級別或者更小級別以來的所有更改過的數據塊內容。增量備份分為兩種,一種是累積增量備份,一種是非累積增量備份。 累積增量備份包括自最后一次在更低級別進行
31、備份以來所有改動過的數據塊。 非累積增量備份包括自前一次在同級或者更低級別進行備份以來改動過的數據塊。 9.1. Level 0-增量備份策略的基礎Level 0 是增量備份策略的基礎-the basis of the incremental backup strategyRMAN> run 2> allocate channel dev1 type disk;3> backup4> incremental level 05> filesperset 46> format '/oracle/backups/sunday_level0_%t'7
32、> (database);8> release channel dev1;9> Line#4: 0級備份5: 定義每個backupset 的最大文件數使用LIST語句查看,數據庫備份集的列表顯示中, 'type' 將顯示 'Incremental','LV'列將顯示'0' 。 9.2. 使用增量備份的案例一個典型的增量備份案例如下: 星期天晚上 - level 0 backup performed 星期一晚上 - level 2 backup performed 星期二晚上 - level 2 backup pe
33、rformed 星期三晚上 - level 1 backup performed 星期四晚上 - level 2 backup performed 星期五晚上 - level 2 backup performed 星期六晚上 - level 2 backup performed 星期天晚上 - level 0 backup performed10. 恢復恢復案例如下:10.1. Database open,datafile deleted 數據庫打開時,文件被刪除數據文件在數據庫打開時被刪除。有兩種方法可以對打開的數據庫進行恢復:還原數據文件或者表空間。下面兩個實例顯示了該方法:(a) Dat
34、afile recovery 數據文件恢復RMAN> run 2> allocate channel dev1 type disk;3> sql "alter tablespace users offline immediate"4> restore datafile 4;5> recover datafile 4;6> sql "alter tablespace users online"7> release channel dev1;8> (b) Tablespace recovery 表空間恢復RMA
35、N> run 2> allocate channel dev1 type disk;3> sql "alter tablespace users offline immediate"4> restore tablespace users;5> recover tablespace users;6> sql "alter tablespace users online"7> release channel dev1;8> 注意:如果還原系統表空間文件,數據庫必須關閉,因為系統表空間不可以脫機。10.2. Co
36、mplete restore (lost online redo) and rollforward - database closed 完全還原(丟失聯機日志)并且前滾 - 數據庫關閉RMAN> run 2> allocate channel dev1 type disk;3> set until logseq=105 thread=1;4> restore controlfile to '/oracle/dbs/ctrltargdb.ctl'5> replicate controlfile from '/oracle/dbs/ctrlta
37、rgdb.ctl'6> restore database;7> sql "alter database mount"8> recover database;9> sql "alter database open resetlogs"10> release channel dev1;11> Notes:'set until' 命令指明恢復到指定的日志文件。這一點在數據文件恢復時很重要,否則RMAN將試圖恢復最近的數據文件,該數據文件可能在指定的日志以前。'replicate control
38、file' 復制還原的控制文件到INIT.ORA指定的控制文件。如果數據庫使用WITH RESETLOGS打開,則需要使用RESET DATABASE命令注冊改變后的數據庫。在使用RESETLOGS命令打開數據庫后強烈建議做一個完全的數據庫備份。10.3. 還原數據文件的子集,完全恢復RMAN> run 2> allocate channel dev1 type disk;3> sql "alter database mount"4> restore datafile 2;5> restore datafile 3;6> rest
39、ore archivelog all;7> recover database;8> sql "alter database open"9> release channel dev1;10> 11. 腳本創建或者取代腳本:RMAN> create script alloc_disk 2> # Allocates one disk3> allocate channel dev1 type disk;4> setlimit channel dev1 kbytes 2097150 maxopenfiles 32 readrate 20
40、0;5> RMAN> replace script rel_disk 2> # releases disk3> release channel dev1;5> RMAN> replace script backup_db_full 2> # Performs a complete backup 3> execute script alloc_disk;4> backup5> .<backup commands here>6> execute script rel_disk;7> 前兩個腳本分別用來分配和回收通道
41、。 alloc_disk 腳本還額外指定了備份片的最大兆字節數,備份時可以同時打開的輸入文件的最大數目,以及每秒鐘讀每個輸入文件的數據緩沖區的最大數目。第三個腳本調用先前存儲的兩個腳本進行數據庫備份。 運行存儲腳本的示范:RMAN> run 2> execute script backup_db_full;3> 注意:存儲的腳本必須在 . execute <script> .命令中調用。12. Corruption detection RMAN可以備份包含損壞數據塊的數據文件,查詢視圖V$BACK_CORRUPTION和V$COPY_CORRUPTION可以獲得有關壞數據的信息。通過設置 set maxcorrupt 可以跳過指定個數的壞塊來避免備份失敗。RMAN> replace script backup_db_full 2> # Performs a complete backup3> execute script alloc_disk;4> set maxcorrupt for datafile 1 to 0;5> backup6> .<backup comma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CCAS 007-2019水泥產能核定標準
- T/CATEA 005-2023丘陵坡地甘蔗機械化收獲技術規程
- T/CAQP 002-2017汽車零部件倉儲信息追溯編碼規范
- T/CAQI 66-2019車載空氣凈化器
- T/CAQI 315-2023山區多級一體化供水泵站技術規范
- T/CAQI 200-2021小型清潔生物質采暖爐具
- 2024年度江蘇省二級建造師之二建礦業工程實務模擬試題(含答案)
- 爾雅茶藝考試題及答案
- T/CAFFCI 68-2023化妝品滋養功效測試方法
- 機場領導面試題及答案
- 火龍罐療法經典課件
- 關于長城的簡介資料200字
- 評標自動計算表(區間復合平均價法)
- 2023年匹茲堡睡眠質量指數量表
- 綠化苗木自產自銷證明
- 精神科藥物不良反應及處理課件
- 手術室護理實踐指南側臥位的擺放
- 當HR遇見AI:用人工智能重新定義人力資源管理
- 物流客戶服務試卷doc資料
- 2003奧迪a8原廠維修手冊帶電路圖自學
- 砂卡井的處理方法
評論
0/150
提交評論