2006年08月18日
沒有備份但遺失了非system的datafile補救方法(noarchive mode)
os:win2000
oracle:10.0.2
oracle:10.0.2
1、測試前的環境檢查
2、建立測試的tablespace和增加資料進去,最後關畢db
3、刪除剛才建立的datafile,然後開起db
4、查看相關的訊習
5、建立刪除的datafile
6、再次查看訊習 (檔案已存在了)
7、進行recover了
8、查看是否真的ok了
以上是redo log file都沒有switch過,不過當redo log file被switch一圈後的情況,將會無法進行還原了,所以要求資料不遺失的話最好是在archive mode情況下才行。然而現在因為無法開database了,所以要先把有問題的datafile offline,才能開的起,這部份就如有人實做有問題的話,我們再來討論吧~~^o^
附上如何drop datafile的說明 link
| SQL> archive log list; 資料庫日誌模式 無儲存模式 可自動儲存 關閉 儲存目的地 D:\oracle\product\10.2.0\db_1\RDBMS 最早的線上日誌順序 1 目前日誌順序 2 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- ---------- --- ---------------- FIRST_CHANGE# FIRST_TIME ------------- ------------------- 1 1 2 52428800 1 NO CURRENT 543297 2006-08-18 10:53:59 2 1 0 52428800 1 YES UNUSED 0 3 1 1 52428800 1 NO INACTIVE 534907 2006-08-18 10:53:02 SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSTEM01.DBF D:\ORACLE\PRODUCT\10.2.0\BINHU\UNDOTBS01.DBF D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSAUX01.DBF D:\ORACLE\PRODUCT\10.2.0\BINHU\USERS01.DBF |
2、建立測試的tablespace和增加資料進去,最後關畢db
| SQL> create tablespace test datafile
'd:/oracle\product\10.2.0\binhu\test.dbf' size 10M; 已建立表格空間. SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSTEM01.DBF D:\ORACLE\PRODUCT\10.2.0\BINHU\UNDOTBS01.DBF D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSAUX01.DBF D:\ORACLE\PRODUCT\10.2.0\BINHU\USERS01.DBF D:\ORACLE\PRODUCT\10.2.0\BINHU\TEST.DBF SQL> create table test (id int) tablespace test; 已建立表格. SQL> insert into test values (1); 已建立 1 個資料列. SQL> commit; 確認完成. SQL> shutdown immediate; 資料庫關閉. 資料庫已卸載. 已關閉 ORACLE 執行處理. |
3、刪除剛才建立的datafile,然後開起db
| SQL> startup ORACLE 執行處理已啟動. Total System Global Area 167772160 bytes Fixed Size 1247900 bytes Variable Size 71304548 bytes Database Buffers 92274688 bytes Redo Buffers 2945024 bytes 資料庫已掛載. ORA-01157: 無法識別/鎖定資料檔 5 - 請參閱 DBWR 追蹤檔 ORA-01110: 資料檔 5: 'D:\ORACLE\PRODUCT\10.2.0\BINHU\TEST.DBF' SQL> select status from v$instance; STATUS ------------ MOUNTED |
4、查看相關的訊習
| SQL> select file#,error from v$recover_file; FILE# ERROR ---------- ----------- 5 FILE NOT FOUND 0 |
5、建立刪除的datafile
| SQL> alter database create datafile
'd:/oracle/product/10.2.0/binhu/test.dbf'; 已更改資料庫. |
6、再次查看訊習 (檔案已存在了)
| SQL> select file#,error from
v$recover_file; FILE# ERROR ---------- ------------------ 5 |
7、進行recover了
| SQL> recover datafile 5; 媒體恢復執行完成. SQL> alter database open; 已更改資料庫. |
8、查看是否真的ok了
| SQL> select * from test; ID ---------- 1 |
以上是redo log file都沒有switch過,不過當redo log file被switch一圈後的情況,將會無法進行還原了,所以要求資料不遺失的話最好是在archive mode情況下才行。然而現在因為無法開database了,所以要先把有問題的datafile offline,才能開的起,這部份就如有人實做有問題的話,我們再來討論吧~~^o^
附上如何drop datafile的說明 link
引用URL
http://cgi.blog.roodo.com/trackback/2034660