ORACLE備份&恢復案例(3)

jss001發表於2009-02-14

4.2歸檔模式下丟失或損壞一個資料檔案

4.2.1 OS備份方案

在歸檔方式下損壞或丟失一個資料檔案,如果存在相應的備份與該備份以來的歸檔日誌,恢復還是比較簡單的,可以作到儘量少的Down機時間,並能作到資料庫的完全恢復。

1、連線資料庫,建立測試表並插入記錄

SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003

(c) Copyright 1999 Oracle Corporation. All rights reserved.

SQL> connect internal/password as sysdba;

Connected.

SQL> create table test(a int) tablespace users;

Table created

SQL> insert into test values(1);

1 row inserted

SQL> commit;

Commit complete

2、備份資料庫

SQL> @hotbak.sql 或在DOS svrmgrl @hotbak.sql

3、繼續在測試表中插入記錄

SQL> insert into test values(2);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from test;

A

---------------------------------------

1

2

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

4、關閉資料庫,模擬丟失資料檔案

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down

C:>del D:ORACLEORADATATESTUSERS01.DBF

模擬媒體毀壞

5、啟動資料庫錯誤,離線該資料檔案

SQL> startup

ORACLE instance started.

Total System Global Area 102020364 bytes

Fixed Size 70924 bytes

Variable Size 85487616 bytes

Database Buffers 16384000 bytes

Redo Buffers 77824 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

ORA-01110: data file 3: 'D:ORACLEORADATATESTUSERS01.DBF'

還可以檢視報警檔案(見上一個恢復案例)或動態檢視v$recover_file

SQL> select * from v$recover_file;

FILE# ONLINE ERROR CHANGE# TIME

---------- ------- ------------------ ---------- -----------

3 ONLINE 1013500 2003-05-07

離線資料檔案

SQL> alter database datafile 3 offline drop;

Database altered.

6、開啟資料庫,複製備份回來(restore),恢復(recover)該資料檔案,並聯機

SQL> alter database open;

Database altered.

複製備份從備份處

copy d:databak users01.dbf d:oracleoradatatest;

恢復該資料檔案

SQL> recover datafile 3;

ORA-00279: change 1053698 generated at 05/07/2003 17:51:26 needed for thread 1

ORA-00289: suggestion : D:ORACLEORADATATESTARCHIVETESTT001S00304.ARC

ORA-00280: change 1053698 for thread 1 is in sequence #304

Specify log: {=suggested | filename | AUTO | CANCEL}

AUTO

ORA-00279: change 1053701 generated at 05/07/2003 17:51:39 needed for thread 1

ORA-00289: suggestion : D:ORACLEORADATATESTARCHIVETESTT001S00305.ARC

ORA-00280: change 1053701 for thread 1 is in sequence #305

ORA-00278: log file 'D:ORACLEORADATATESTARCHIVETESTT001S00304.ARC' no

longer needed for this recovery

Log applied.

Media recovery complete.

恢復成功,聯機該資料檔案

SQL> alter database datafile 3 online;

Database altered.

7、檢查資料庫的資料(完全恢復)

SQL> select * from test;

A

---------------------------------------

1

2

說明:

1、採用熱備份,需要執行在歸檔模式下,可以實現資料庫的完全恢復,也就是說,從備份後到資料庫崩潰時的資料都不會丟失。

2、可以採用全備份資料庫的方式備份,對於特殊情況,也可以只備份特定的資料檔案,如只備份使用者表空間(一般情況下對於某些寫特別頻繁的資料檔案,可以單獨加大備份頻率)

3、如果在恢復過程中,發現損壞的是多個資料檔案,即可以採用一個一個資料檔案的恢復方法(第5步中需要對資料檔案一一離線,第6步中需要對資料檔案分別恢復),也可以採用整個資料庫的恢復方法。

4、如果是系統表空間的損壞,不能採用此方法

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1017352/,如需轉載,請註明出處,否則將追究法律責任。

相關文章