亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

RMAN 還原與恢復

系統(tǒng) 1625 0

--====================

-- RMAN 還原與恢復

--====================

?

??? Oracle 中,三大文件即控制文件,數(shù)據(jù)文件,日志文件的丟失與破壞都將需要使用還原或恢復來使數(shù)據(jù)庫正常化。而 RMAN 還原與恢復

是實現(xiàn)數(shù)據(jù)庫完整性、可靠性必不可少的手段之一。還原簡言之即是將所需的文件從備份中復制到原來文件所在的路徑。還原通常可以包括

數(shù)據(jù)庫、表空間、數(shù)據(jù)文件級別的還原。通常還原后的內容會滯后于最新的數(shù)據(jù)庫 SCN ,因此將歸檔日志、聯(lián)機重做日志文件中的內容更新到

還原的數(shù)據(jù)文件中,這個過程稱之為恢復。

?

??? 恢復的幾種情形

??????? 1. mount open 階段完成的災難恢復

??????????? 非系統(tǒng)表空間, undo 表空間,所有的數(shù)據(jù)文件

??????? 2. nomount 階段完成的災難恢復

??????????? 控制文件 (controlfile)

??????? 3. mount 階段完成的災難恢復

??????????? 系統(tǒng)表空間,聯(lián)機重做日志文件

???

??? 有關恢復、介質恢復、一致性或非一致性恢復的詳細概念請參考: Oracle 基于用戶管理恢復的處理

???

一、 RMAN 在歸檔模式下的還原與恢復的簡化例子

??? RMAN > connect target /

??? RMAN > startup mount ;

??? RMAN > restore database ;

??? RMAN > recover database ;

??? RMAN > alter database open ;

?

二、使用 RMAN 進行還原與恢復 ( catalog 方式 ) ??

?

??? 1. 數(shù)據(jù)文件丟失的恢復處理

??????? -- 設定客戶端環(huán)境變量并連接到數(shù)據(jù)庫

??????????? C : / > set NLS_LANG = AMERICAN_AMERICA . AL32UTF8

?

??????????? C : / > rman target sys / redhat@dedicated nocatalog

???????

??????? -- 對數(shù)據(jù)庫做全備

??????????? RMAN > backup as backupset ????????????????

??????????? 2 > format ? '/u01/bk/rmbk/wb_%U'

??????????? 3 > tag = Whole_bak database ;

?

??????????? RMAN > sql ? 'alter system archive log current' ;

???????????

??????? -- 對數(shù)據(jù)庫做級增量備份

??????????? RMAN > run{ ?????????????????????????????????

??????????? 2 > allocate channel ch1 type disk ;

??????????? 3 > backup incremental level 0 database

??????????? 4 > format '/u01/bk/rmbk/Inc_0_%U'

??????????? 5 > tag = Inc_0 ;

??????????? 6 > release channel ch1 ;}

?

??????? -- 對表插入新記錄并切換日志

??????????? SQL > select * from tb2 ;

?

??????????????????? ID NAME

??????????? ---------- ---------------------------------------------

??????????????????? ? 1 Robinson

??????????????????? ? 2 Henry

?

??????????? SQL > insert into tb2 select 3 , 'Danny' from dual ;

?

??????????? SQL > commit ;

?

??????????? SQL > alter system checkpoint ;

?

??????????? SQL > alter system switch logfile ;

???????????

??????? -- 對數(shù)據(jù)庫做級增量備份

??????????? RMAN > run{ ?????????????????????????????

??????????? 2 > ? allocate channel ch1 type disk ;

??????????? 3 > ? backup incremental level 1 database

??????????? 4 > ? format '/u01/bk/rmbk/Inc_1%U'

??????????? 5 > ? tag = Inc_1 ;

??????????? 6 > ? release channel ch1 ;}

?

??????????? SQL > shutdown immediate ; ?? -- 關閉數(shù)據(jù)庫

?

??????????? SQL > ho rm $ORACLE_BASE / oradata / orcl /*.dbf ? -- 刪除所有的數(shù)據(jù)文件 */

?

??????????? SQL > startup mount

?

??????? -- 使用 RMAN 連接到未 mount 狀態(tài)的數(shù)據(jù)庫

??????????? RMAN > connect target sys / redhat@dedicated

?

??????????? connected to target database : ORCL ( DBID = 1257415066 , not open )

?

??????? -- 執(zhí)行數(shù)據(jù)庫還原

??????? -- 注意當存在完整備份也同時存在級增量備份時, Oracle 會自動使用級增量備份來還原數(shù)據(jù)庫

??????????? RMAN > restore database ; ?

??????????? piece handle =/ u01 / bk / rmbk / Inc_0_0alqu132_1_1 tag = INC_0 ?? -- 下面可以看出還原的數(shù)據(jù)來自級增量備份

?

??????? -- 執(zhí)行數(shù)據(jù)庫恢復

??????????? RMAN > recover database ;

??????????? piece handle =/ u01 / bk / rmbk / Inc_10clqu1fe_1_1 tag = INC_1

?

??????? -- 打開數(shù)據(jù)庫驗證恢復

??????????? RMAN > alter database open ;

?

??????????? SQL > select * from bk . tb2 ;

?

??????????????????? ID NAME

??????????? ---------- ---------------------------------------------

??????????????????? ? 1 Robinson

??????????????????? ? 2 Henry

??????????????????? ? 3 Danny

???

??? 2. 磁盤損壞導致數(shù)據(jù)文件無法恢復到原始位置或不想恢復到原始位置的處理

??????? 使用 set newname 命令將數(shù)據(jù)文件還原到新路徑

??????????? set newname for datafile 1 to '<newdir>/system01.dbf' ; -- 為恢復的數(shù)據(jù)文件指定新路徑或重命名

??????? 使用 switch 命令將變更更新到控制文件

??????????? switch datafile n | all ; ????? -- 等同于 alter database rename file 命令,該命令將恢復的數(shù)據(jù)文件重命名更新到控制文件

???????

??????? -- 下面的示例首先刪除 tbs01.dbf ,接下來將其恢復到 oradata 目錄中

???????

??????????? SQL > ho rm $ORACLE_BASE / oradata / orcl / tbs01 . dbf

?

??????????? SQL > startup mount force ;

?

??????????? RMAN > connect target sys / redhat@dedicated

?

??????????? connected to target database : ORCL ( DBID = 1257415066 , not open )

?

??????????? RMAN > run{

??????????? 2 > set newname for datafile 6 to '/u01/app/oracle/oradata/tbs01.dbf' ;

??????????? 3 > restore database ;

??????????? 4 > switch datafile all;

??????????? 5 > recover database ;

??????????? 6 > alter database open ;}

?

??????????? SQL > select file# , name , status from v$datafile where file# = 6 ;

?

??????????????? ? FILE# NAME ??????????????????????????????? ??????????????? STATUS

??????????? ---------- -------------------------------------------------- -------

??????????????????? ? 6 / u01 / app / oracle / oradata / tbs01 . dbf ????????????????? ONLINE

??????????????????? ?

??????????? SQL > select count ( 1 ) from bk . tb2 ; ? -- tb2 位于 tbs01.dbf

?

??????????? ? COUNT ( 1 )

??????????? ----------

??????????????????? ? 3

?

??? 3. 恢復表空間

???????

??????? -- 刪除表空間內的數(shù)據(jù)文件,刪除后在針對位于該表空間的表進行插入記錄以及實施檢查點進程

??????????? SQL > ho rm $ORACLE_BASE / oradata / tbs01 . dbf

?

??????????? SQL > insert into bk . tb2 select 4 , 'Jackson' from dual ;

?

??????????? SQL > commit ;

?

??????????? SQL > alter system checkpoint ;

???????

??????? -- 強制檢查點后,告警日志出現(xiàn)錯誤提示,視圖 v$recover_file 給出了故障數(shù)據(jù)文件

??????????? [oracle@oradb ~]$ tail - n 50 $ORACLE_BASE / admin / orcl / bdump / alert_orcl . log

??????????? Errors in file / u01 / app / oracle / admin / orcl / bdump / orcl_ckpt_4724 . trc :

??????????? ORA - 01110 : data file 6 : '/u01/app/oracle/oradata/tbs01.dbf'

??????????? ORA - 01116 : error in opening database file 6

??????????? ORA - 01110 : data file 6 : '/u01/app/oracle/oradata/tbs01.dbf'

??????????? ORA - 27041 : unable to open file

??????????? Linux Error : 2 : No such file or directory

???????????

??????????? SQL > select * from v$recover_file ;

?

??????????????? ? FILE# ONLINE ? ONLINE_ ERROR ???????????????? CHANGE# TIME

??????????? ---------- ------- ------- ------------------ ---------- ---------

??????????????????? ? 6 OFFLINE OFFLINE FILE NOT FOUND ????????????? 0

?

??????????? SQL > select name , status from v$datafile where file# = 6 ;

?

??????????? NAME ????????? ????????????????????????????????????? STATUS

??????????? -------------------------------------------------- -------

??????????? / u01 / app / oracle / oradata / tbs01 . dbf ????????????????? RECOVER

???????

??????? -- 使用 RMAN 命令恢復數(shù)據(jù)文件,此時數(shù)據(jù)庫處于 OPEN 狀態(tài),因此首先需要將表空間脫機,恢復完成之后再將其聯(lián)機

??????????? RMAN > run{

??????????? 2 > sql 'alter tablespace tbs1 offline immediate' ;

??????????? 3 > set newname for datafile 6 to '/u01/app/oracle/oradata/orcl/tbs01.dbf' ;

??????????? 4 > restore tablespace tbs1 ;

??????????? 5 > switch datafile all;

??????????? 6 > recover tablespace tbs1 ;

??????????? 7 > sql 'alter tablespace tbs1 online' ;}

?

??????????? SQL > select name , status from v$datafile where file# = 6 ; ? -- 位置變動到 orcl 子目錄下,狀態(tài)變?yōu)? online

?

??????????? NAME ?????????????????????????????????????????????? STATUS

??????????? -------------------------------------------------- -------

??????????? / u01 / app / oracle / oradata / orcl / tbs01 . dbf ???????????? ONLINE

?

??????? -- 也可以使用下面的命令完成同樣的功能

??????? -- 注意如果表空間內有多個數(shù)據(jù)文件,而僅有單個數(shù)據(jù)文件損壞則采用下面的方式處理更為妥當

??????????? RMAN > run{

??????????? 2 > sql 'alter database datafile 6 offline immediate' ;

??????????? 3 > set newname for datafile 6 to '/u01/app/oracle/oradata/tbs01.dbf' ;

??????????? 4 > restore datafile 6 ;

??????????? 5 > switch datafile all;

??????????? 6 > recover datafile 6 ;

??????????? 7 > sql 'alter databaes datafile 6 online' ;}

?

??? 4.RMAN 實現(xiàn)不完全恢復

??????? 對于 RMAN 的不完全恢復,使用 Oracle 的閃回特性的處理有更多的優(yōu)勢。關于閃回請參考: Oracle 閃回特性

??????? 步驟

??????????? a . 加載數(shù)據(jù)到 mount 狀態(tài) ( 建議恢復前先做備份 )

??????????? b . 為高并發(fā)分配多個通道

??????????? c . 還原所有 ( 所需 ) 的數(shù)據(jù)文件

??????????? d. 使用 until time,until sequence,until scn 來恢復數(shù)據(jù)庫

??????????? e. 使用 resetlogs 打開數(shù)據(jù)庫

??????????? f . 全備數(shù)據(jù)庫

???????

??????? 演示 RMAN 基于 until time 的例子

??????????? SQL > show user ;

??????????? USER is "BK"

??????????? SQL > create table tb1 ( id int , name varchar2 ( 10 ));

?

??????????? SQL > insert into tb1 select 1 , 'Lancy' from dual ;

?

??????????? SQL > ho strings $ORACLE_BASE / oradata / orcl / redo02 . log | grep Lancy ? -- 查看聯(lián)機日志文件中不存在剛剛插入的記錄

?

??????????? SQL > commit ; ?????????????????????????????????????????????????????? -- 注意 commit 是將日志緩沖內容寫入到日志文件

?

??????????? SQL > ho strings $ORACLE_BASE / oradata / orcl / redo02 . log | grep Lancy ? -- 提交后聯(lián)機日志文件中才有新增的記錄

??????????? Lancy

?

??????????? SQL > alter system switch logfile ;

?

??????????? SQL > ho ls $ORACLE_BASE / oradata / arch

??????????? log_1_1_732989230 . arc ? log_1_1_732989889 . arc

?

??????????? RMAN > run{

??????????? 2 > allocate channel ch1 type disk ;

??????????? 3 > allocate channel ch2 type disk ;

??????????? 4 > backup as compressed backupset database plus archivelog delete input

??????????? 5 > format '/u01/bk/rmbk/wh_lg_%U'

??????????? 6 > tag = 'Wholebak_Pluslog' ;

??????????? 7 > release channel ch1 ;

??????????? 8 > release channel ch2 ;}

?

??????????? 18 : 10 : 36 SQL > drop table tb1 ;

?

??????????? RMAN > run{

??????????? 2 > allocate channel ch1 type disk ;

??????????? 3 > allocate channel ch2 type disk ;

??????????? 4 > set until time "to_date('2010-10-21 18:10:36','yyyy-mm-dd hh24:mi:ss')" ;

??????????? 5 > restore database ;

??????????? 6 > recover database ;

??????????? 7 > alter database open resetlogs ;

??????????? 8 > release channel ch1 ;

??????????? 9 > release channel ch2 ;}

?

??????????? SQL > select * from tb1 ;

?

??????????????????? ID NAME

??????????? ---------- ----------

??????????????????? ? 1 Lancy

?

??? 5. SPFILE 文件丟失的恢復

??????? SPFILE 參數(shù)文件可以在 RMAN 中進行備份,因此可以使用 RMAN 來恢復 SPFILE 文件。可以自動備份 SPFILE

??????? SPFILE 的自動備份是隨著控制文件的備份一起被完成的,因此可以通過自動備份控制文件來實現(xiàn)自動備份 SPFILE 文件的目的

??????? 其次,在備份系統(tǒng)表空間時將引發(fā)控制文件的自動備份,而不論是否設置自動備份參數(shù)為 ON ,此時同樣也備份 SPFILE 文件

???????

???????

??????? 有關 SPFILE 文件請參考: Oracle 參數(shù)文件

??????????????????????? ? ?? ? SPFILE 錯誤導致數(shù)據(jù)庫無法啟動(ORA-01565)

???????

??????? SPFILE 文件恢復步驟

??????????? a. startup nomount [force];

??????????? b. set dbid=dbid_no;

??????????? c. restore spfile from autobackup | '<dir>'

??????????? d. startup force; ?? 如果 d 執(zhí)行失敗則轉到 e f ,否則不用執(zhí)行 e f

??????????? e. set dbid=dbid_no;

??????????? f. startup;

???????

??????? 下面設定控制文件的自動備份以及設置其備份路徑 ( 注意要預先知道目標數(shù)據(jù)庫的 DBID ,此次演示的 DBID )

???????

??????????? RMAN > configure controlfile autobackup on ;

??????????? RMAN > configure controlfile autobackup format for device type disk to '/u01/bk/rmbk/auto_ctl_%d_%F' ;

???????????

??????????? RMAN > exit

??????????? sys@ORCL > alter tablespace users add datafile '$ORACLE_BASE/oradata/orcl/users02.dbf' size 5m ;

??????????? [oracle@oradb rmbk]$ ls auto * ????? -- 執(zhí)行上一條 alter tablespace users add datafile 語句將引發(fā)控制文件的自動備份

??????????? auto_ctl_ORCL_c - 1263182651 - 20101124 - 00

??????????? sys@ORCL > shutdown immediate ;

???????????

??????????? [oracle@oradb dbs]$ mv spfileorcl . ora spfileorcl . ora . bak ?? -- 將原來的 spfile 文件重命名

???????????

??????????? [oracle@oradb ~]$ rman target / nocatalog

??????????? RMAN > startup nomount force ;

??????????? RMAN > set dbid = 1263182651 ;

??????????? RMAN > restore spfile from autobackup ; ?? -- 此處并沒有找到文件路徑,按 Oracle 聯(lián)機文檔,在 nomount 狀態(tài)應該可以找到

??????????? RMAN - 06172 : no autobackup found or specified handle is not a valid copy or piece

??????????? RMAN > restore spfile from '/u01/bk/rmbk/auto_ctl_ORCL_c-1263182651-20101124-00' ; ??? -- 手動指定路徑

??????????? RMAN > startup force ;

???

??? 6. 聯(lián)機重做日志文件丟失的恢復請參考:

??????? 基于 catalog RMAN 備份與恢復

??????? Oracle 聯(lián)機重做日志文件(ONLINE LOG FILE)

???

??? 7. 控制文件的恢復處理

??????? 控制文件中描述了數(shù)據(jù)庫的相關物理信息,如創(chuàng)建時間、 DBID 、數(shù)據(jù)文件、日志文件等相關信息,因此一旦控制文件丟失數(shù)據(jù)庫將

??? 不能啟動,鑒于其重要性,控制文件的備份與恢復將單獨列出。有關控制文件請參考下列

??????? 基于 catalog RMAN 備份與恢復

??????? Oracle 控制文件的備份與恢復

???

三、更多參考 ???

有關基于用戶管理的備份和備份恢復的概念請參考:

??????? Oracle 冷備份

??????? Oracle 熱備份

??????? Oracle 備份恢復概念

??????? Oracle 實例恢復

??????? Oracle 基于用戶管理恢復的處理 ( 詳細描述了介質恢復及其處理 )

???????

??? 有關 RMAN 的恢復與管理請參考:

??????? RMAN 概述及其體系結構

??????? RMAN 配置、監(jiān)控與管理

??????? RMAN 備份詳解

??????? RMAN 還原與恢復

???????

??? 有關 Oracle 體系結構請參考:

??????? Oracle 實例和Oracle 數(shù)據(jù)庫(Oracle 體系結構)

??????? Oracle 表空間與數(shù)據(jù)文件

??????? Oracle 密碼文件

??????? Oracle 參數(shù)文件

Oracle 數(shù)據(jù)庫實例啟動關閉過程

??????? Oracle 聯(lián)機重做日志文件(ONLINE LOG FILE)

??????? Oracle 控制文件(CONTROLFILE)

??????? Oracle 歸檔日志

?

RMAN 還原與恢復


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久99热| 成人欧美一区二区三区视频不卡 | 老司机深夜福利影院 | 深夜福利免费 | 久久久久国产成人精品亚洲午夜 | 极品女神西比尔久久精品 | 毛片在线视频观看 | 91网红福利精品区一区二 | 久久伊人免费视频 | 欧美色视频网 | 色丁香六月| 99精品免费视频 | 成人精品视频一区二区三区 | 天天看片夜夜爽 | 亚洲性色视频 | 久久r精品 | 久久精品亚洲一区二区 | 高清不卡日本v在线二区 | 免费人成在线观看网站品爱网 | 夜夜天天操 | 欧美一级毛片特黄黄 | 久草免费在线视频 | 97se亚洲综合在线天天 | 国产精品不卡视频 | 久久精品加勒比中文字幕 | 国产高清视频在线 | 国产一级爱c片免费播放 | 亚洲天堂三区 | 91久久国产视频 | 久久这里有精品视频 | 精品一本久久中文字幕 | 亚洲美女亚洲精品久久久久 | 91国在线观看| 久草五月天| 色综合久久九月婷婷色综合 | 久久久青青 | 精品日产 | 亚洲欧美国产毛片在线 | 一区二区三区国产精品 | 久久视频免费 | 国产免费一级精品视频 |