Performing User-Managed Database-18.7、Performing Complete User-Managed Media Recovery
18.7、Performing Complete User-Managed Media Recovery
完畢一致性備份,把數據庫恢復到當前的scn是最好的結果。能夠恢復整個數據庫。恢復單個表空間。或恢復數據文件。一致性恢復不須要resetlogs打開數據庫,非一致性恢復須要resetlogs打開數據庫。Backup and Recovery Basics提供了關于介質恢復的信息。
18.7.1、Performing Closed Database Recovery
能夠在一個操作中恢復全部損壞的數據文件。也能夠分開操作恢復每一個損壞的數據文件。
18.7.1.1、Preparing for Closed Database Recovery
(1)關閉數據庫,檢查出現故障的介質設備
(2)假設引起介質失敗的問題是暫時的,假設數據沒有損壞(比方,磁盤或控制器掉電),不須要介質恢復:僅僅需啟動數據庫。又一次開始操作。
假設不能修復,就進行下面步驟
18.7.1.2、Restoring Backups of the Damaged or Missing Files
(1)推斷哪些數據文件須要恢復
(2)找到損壞的數據文件的近期備份。只還原損壞的數據文件:不要還原沒有損壞的數據文件或不論什么重做日志文件。假設沒有不論什么備份。只能創建一個數據文件(有歸檔)
alter database create datafile 'xxx' as 'xxx' size xxx reuse
(3)使用操作系統命令把數據文件還原到默認位置或新的位置。
alter database rename file 'xxx' to 'xxx';
18.7.1.3、Recovering the Database
(1)使用系統管理員權限連接數據庫,啟動數據庫到mount
(2)查詢v$datafile獲得數據文件名稱和狀態
(3)須要恢復的數據文件必須是在線的,除了offline normal的表空間或read-only表空間
select 'alter dabase datafile ' || name || ' online;' from? v$datafile;
(4)運行recover database,recover tablespace xxx,recover datafile 'xxx'等語句
(5)沒有自己主動地恢復,必須接受或拒絕每一個指出的日志。假設自己主動地恢復,數據庫自己主動地應用日志。
(6)介質恢復完畢,數據庫返回:Media recovery complete。
(7)alter database open
18.7.2、Performing Datafile Recovery in an Open Database
當數據庫處于打開狀態時,出現介質失敗。不能被寫時返回錯誤。一般表空間的僅僅是損壞的數據文件離線,不能查詢時返回錯誤,一般表空間的僅僅是損壞的數據文件不會離線。
當數據庫處于打開狀態時,該恢復過程不能用做system表空間的全然介質恢復。
假設system表空間的數據文件損壞,數據庫自己主動關閉。
18.7.2.1、Preparing for Open Database Recovery
(1)數據庫處于打開,發現須要恢復,把包括損壞的數據文件的表空間離線。
(2)假設引起介質失敗的問題是暫時的,假設數據沒有損壞(比方。磁盤或控制器掉電),不須要介質恢復:僅僅需啟動數據庫,又一次開始操作。假設不能修復,就進行下面步驟
18.7.2.2、Restoring Backups of the Inaccessible Datafiles
(1)推斷哪些數據文件須要恢復
(2)找到損壞的數據文件的近期備份。
只還原損壞的數據文件:不要還原沒有損壞的數據文件或不論什么重做日志文件。假設沒有不論什么備份,只能創建一個數據文件(有歸檔)
alter database create datafile 'xxx' as 'xxx' size xxx reuse
SQL> alter database create datafile '/oracle/oradata/boss/testtbs04_01.dbf' as '/oracle/oradata/boss/testtbs04_01.dbf' size 10m reuse;
(3)使用操作系統命令把數據文件還原到默認位置或新的位置。
alter database rename file 'xxx' to 'xxx';
18.7.2.3、Recovering Offline Tablespaces in an Open Database
(1)運行recover database,recover tablespace xxx,recover datafile 'xxx'等語句
(2)沒有自己主動地恢復,必須接受或拒絕每一個指出的日志。假設自己主動地恢復,數據庫自己主動地應用日志。
(3)介質恢復完畢,數據庫返回:Media recovery complete。
SQL> recover automatic tablespace testtbs04;?
(4)alter database open
模擬1、創建表空間testtbs04,創建一個表,刪除相應的數據文件,做關閉數據庫的恢復
(1)
SQL> create tablespace testtbs04
? 2??? datafile '/oracle/oradata/boss/testtbs04_01.dbf' size 10m
? 3??? autoextend on next 1m maxsize unlimited
? 4??? logging
? 5??? extent management local autoallocate
? 6??? blocksize 8k
? 7??? segment space management auto
? 8??? flashback on;
(2)
SQL> create table test04(id number, name varchar2(30)) tablespace testtbs04;
SQL> insert into test04 values(1, 'xxxxx');
SQL> insert into test04 values(2, 'yyyyy');
SQL> commit;
(3)
SQL> select group#,members,sequence#,archived,status,first_change# from v$log;
??? GROUP#??? MEMBERS? SEQUENCE# ARC STATUS?????????? FIRST_CHANGE#
---------- ---------- ---------- --- ---------------- -------------
???????? 1????????? 1????????? 0 YES UNUSED?????????????????????? 0
???????? 2????????? 1????????? 0 YES UNUSED?????????????????????? 0
???????? 3????????? 1????????? 1 NO? CURRENT???????????????? 697986
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> select group#,members,sequence#,archived,status,first_change# from v$log;
??? GROUP#??? MEMBERS? SEQUENCE# ARC STATUS?????????? FIRST_CHANGE#
---------- ---------- ---------- --- ---------------- -------------
???????? 1????????? 1????????? 2 YES INACTIVE??????????????? 707835
???????? 2????????? 1????????? 3 YES INACTIVE??????????????? 707837
???????? 3????????? 1????????? 4 NO? CURRENT???????????????? 707840
(4)
$ rm -rf testtbs04_01.dbf
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup open;
SQL> col "文件名稱" for a40;
SQL> col "表空間名" for a10
SQL> set linesize 150
SQL>
select
? ts.name "表空間名"
? , df.file# "文件號"
? , df.checkpoint_change# "檢查點"
? , df.name "文件名稱"
? , df.status "在線狀態"
? , rf.error "恢復原因"
? , rf.change# "系統變更號"
? , rf.time
? from v$tablespace ts,v$datafile df,v$recover_file rf
where ts.ts#=df.ts# and df.file#=rf.file#
order by df.file#;
SQL> select
? 2??? ts.name "表空間名"
? 3??? , df.file# "文件號"
? 4??? , df.checkpoint_change# "檢查點"
? 5??? , df.name "文件名稱"
? 6??? , df.status "在線狀態"
? 7??? , rf.error "恢復原因"
? 8??? , rf.change# "系統變更號"
? 9??? , rf.time
?10??? from v$tablespace ts,v$datafile df,v$recover_file rf
?11? where ts.ts#=df.ts# and df.file#=rf.file#
?12? order by df.file#;
表空間名?????? 文件號???? 檢查點 文件名稱?????????????????????????????????? 在線狀? 恢復原因?????????? 系統變更號 TIME
---------- ---------- ---------- ---------------------------------------- ------- ------------------ ---------- ------------
TESTTBS02?????????? 8???? 652783 /oracle/oradata/boss/testtbs02_01.dbf??? OFFLINE OFFLINE NORMAL????????????? 0
TESTTBS04????????? 10???? 707840 /oracle/oradata/boss/testtbs04_01.dbf??? ONLINE? FILE NOT FOUND????????????? 0
(5)
SQL> alter database create datafile '/oracle/oradata/boss/testtbs04_01.dbf' as '/oracle/oradata/boss/testtbs04_01.dbf' size 10m reuse;
SQL> select file#,name,status,CHECKPOINT_CHANGE#,recover from v$datafile_header where file#=10;
???? FILE# NAME???????????????????????????????????? STATUS? CHECKPOINT_CHANGE# REC
---------- ---------------------------------------- ------- ------------------ ---
??????? 10 /oracle/oradata/boss/testtbs04_01.dbf??? ONLINE????????????? 707602 YES
(6)
SQL> recover automatic tablespace testtbs04;?
Media recovery complete.
SQL> alter database open;
SQL> select * from test04;
??????? ID NAME
---------- ----------------------------------------
???????? 1 xxxxx
???????? 2 yyyyy
總結
以上是生活随笔為你收集整理的Performing User-Managed Database-18.7、Performing Complete User-Managed Media Recovery的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法与数据结构之二分查找
- 下一篇: UVA-10954 Add All