完全恢復:
3.恢復打開的數據庫(數據庫故障引起宕機);
介質或者硬件故障導致數據庫關閉
7*24小時運行,損壞的文件不屬于系統表空間和回滾表空間
例子:
rm -rf /database/oradata/skyread/sf01.dbf?
數據庫已經因硬盤故障關閉,以上的sf01.dbf在改硬盤上
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount; ?--啟動數據到mount狀態
ORACLE instance started.
Total System Global Area 5049942016 bytes
Fixed Size ? ? ? ? ? ? ? ? ?2090880 bytes
Variable Size ? ? ? ? ? ?1375733888 bytes
Database Buffers ? ? ? ? 3657433088 bytes
Redo Buffers ? ? ? ? ? ? ? 14684160 bytes
Database mounted.
SQL> alter database open;--由于數據文件損壞無法打開數據庫
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 26 - see DBWR trace file
ORA-01110: data file 26: '/database/oradata/skyread/sf01.dbf'
SQL> alter database datafile '/database/oradata/skyread/sf01.dbf' offline drop; --脫機故障的表空間
Database altered.
SQL> alter database open; --脫機故障文件后打開
Database altered.
SQL> alter database rename file '/database/oradata/skyread/sf01.dbf' to '/home/oracle/sf01.dbf'; 由于硬盤故障無法使用,這里使用備份數據文件
Database altered.
SQL> recover datafile 26; --進行介質恢復
Media recovery complete.
SQL> alter database datafile '/home/oracle/sf01.dbf' online; --數據文件online
Database altered.
SQL> col NAME for a50
SQL> set linesize 150
SQL> SELECT d.file# f#, d.name, d.status, h.status
? 2 ?FROM v$datafile d, v$datafile_header h
? 3 ?WHERE d.file# = h.file#;
? ? ? ? F# NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? STATUS ?STATUS
---------- -------------------------------------------------- ------- -------
? ? ? ? ?1 /database/oradata/skyread/system01.dbf ? ? ? ? ? ? SYSTEM ?ONLINE
? ? ? ? ?3 /database/oradata/skyread/sysaux01.dbf ? ? ? ? ? ? ONLINE ?ONLINE
? ? ? ? ?4 /database/oradata/skyread/users01.dbf ? ? ? ? ? ? ?ONLINE ?ONLINE
? ? ? ? 18 /database2/oradata/skyread/TBS_MRPMUSIC01.dbf ? ? ?ONLINE ?ONLINE
? ? ? ? 26 /home/oracle/sf01.dbf ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ONLINE ?ONLINE
? ? ? ? 31 /database2/oradata/skyread/undotbs02 ? ? ? ? ? ? ? ONLINE ?ONLINE
通過以上步驟恢復正常
4.在沒有備份的情況先恢復數據文件
沒有備份的數據文件故障的恢復,一定要有該文件創建以來的所有歸檔
文件不屬于系統表空間和回滾表空間
控制文件知道這個文件的名稱
SQL> create tablespace tbs_test datafile '/database/oradata/skyread/tbs_test.dbf' size 10M; --創建測試表空間
Tablespace created.
SQL> create table t1 (a int) tablespace tbs_test; --創建測試表
Table created.
SQL> insert into t1 values(1); --插入數據
1 row created.
SQL> commit;
Commit complete.
SQL> select file_name,tablespace_name from dba_data_files where tablespace_name='TBS_TEST';
FILE_NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?TABLESPACE_NAME
-------------------------------------------------- ------------------------------
/database/oradata/skyread/tbs_test.dbf ? ? ? ? ? ? TBS_TEST
rm -rf /database/oradata/skyread/tbs_test.dbf ? ?--模擬故障刪除該數據文件
SQL> ?alter tablespace tbs_test offline immediate; ?--回到數據庫offline表空間,如果數據庫關閉的,那么數據庫打開到mount狀態,數據文件脫機
Tablespace altered.
SQL> select * from v$recover_file; --查看需要恢復的數據文件
? ? ?FILE# ONLINE ?ONLINE_ ERROR ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- -------------------
? ? ? ? ?2 OFFLINE OFFLINE FILE NOT FOUND ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0
SQL> alter database create datafile '/database/oradata/skyread/tbs_test.dbf'; --手工創建數據文件如果原來的不能使用,可以加上as '老的數據文件'
Database altered.
SQL> ?select * from v$recover_file;
? ? ?FILE# ONLINE ?ONLINE_ ERROR ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- -------------------
? ? ? ? ?2 OFFLINE OFFLINE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.2269E+11 2013-05-02 16:09:33
SQL> recover tablespace tbs_test; --介質恢復
Media recovery complete.
SQL> alter tablespace tbs_test online; --聯機表空間
Tablespace altered.
SQL> select * from t1; ?--數據恢復了
? ? ? ? ?A
----------
? ? ? ? ?1
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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