【恢復】非歸檔模式下因誤刪除資料檔案導致資料庫無法OPEN的故障處理
模擬一下這個資料庫故障,同時給出一個“簡單”的恢復處理過程。
1.查詢獲得TBS_SEC_D表空間對應的資料檔案資訊
sys@ora10g> col FILE_NAME for a40
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
FILE_NAME FILE_ID STATUS
---------------------------------------- ---------- ---------
/oracle/oradata/ora10g/tbs_sec_d_01.dbf 5 AVAILABLE
/oracle/oradata/ora10g/hou.dbf 13 AVAILABLE
2.非歸檔模式下模擬誤刪除資料檔案
1)確認資料庫的歸檔模式
sys@ora10g> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /oracle/arch/ora10g
Oldest online log sequence 1541
Current log sequence 1543
2)模擬誤刪除hou.dbf資料檔案
sys@ora10g> !rm -f /oracle/oradata/ora10g/hou.dbf
3)此時的資料庫狀態沒有異樣
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
FILE_NAME FILE_ID STATUS
---------------------------------------- ---------- ---------
/oracle/oradata/ora10g/tbs_sec_d_01.dbf 5 AVAILABLE
/oracle/oradata/ora10g/hou.dbf 13 AVAILABLE
3.重啟資料庫觀察一系列的報錯資訊
1)關閉資料庫過程中的報錯資訊
sys@ora10g> shutdown immediate;
ORA-03113: end-of-file on communication channel
2)啟動資料過程中的報錯資訊
NotConnected@> startup;
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 2071640 bytes
Variable Size 125830056 bytes
Database Buffers 75497472 bytes
Redo Buffers 6316032 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 13 - see DBWR trace file
ORA-01110: data file 13: '/oracle/oradata/ora10g/hou.dbf'
這裡提示無法定位13號資料檔案。
此時資料庫僅處於mount狀態。
NotConnected@> select open_mode from v$database;
OPEN_MODE
----------
MOUNTED
4.恢復方法
既然資料檔案被誤刪除了,而且我們又沒有有效的備份可用,同時資料庫又處於非歸檔的狀態(“杯具”到了極致),那我們只能容忍資料的丟失(如果13號資料檔案存有資料的情況下)。
1)在mount狀態下使用offline drop命令將資料檔案與表空間之間的關係隔斷。
NotConnected@> col name for a50
NotConnected@> select FILE#,STATUS,ENABLED,NAME from v$datafile where name like '%hou%';
FILE# STATUS ENABLED NAME
---------- ------- ---------- ---------------------------------------
13 ONLINE READ WRITE /oracle/oradata/ora10g/hou.dbf
NotConnected@> alter database datafile '/oracle/oradata/ora10g/hou.dbf' offline drop;
Database altered.
NotConnected@> select FILE#,STATUS,ENABLED,NAME from v$datafile where name like '%hou%';
FILE# STATUS ENABLED NAME
---------- ------- ---------- ----------------------------------------
13 RECOVER READ WRITE /oracle/oradata/ora10g/hou.dbf
2)此時我們便可以順利的OPEN資料庫
NotConnected@> alter database open;
Database altered.
5.收尾工作
即便按照上述的方法簡單處理了這個故障,但是在資料庫中還是遺留了一下“垃圾”資訊。
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
FILE_NAME FILE_ID STATUS
---------------------------------------- ---------- ---------
/oracle/oradata/ora10g/tbs_sec_d_01.dbf 5 AVAILABLE
/oracle/oradata/ora10g/hou.dbf 13 AVAILABLE
此時表明物理上已經不存在的“/oracle/oradata/ora10g/hou.dbf”檔案還是歸屬於表空間TBS_SEC_D。如何徹底的斷絕這樣的無意義的關係?
這裡給出“簡單粗暴”的重建表空間方法。
大體步驟如下:
1)想辦法邏輯備份表空間中包含的資料
2)刪除表空間
sys@ora10g> drop tablespace TBS_SEC_D including contents and datafiles;
Tablespace dropped.
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
no rows selected
3)重建表空間
sys@ora10g> create tablespace TBS_SEC_D datafile '/oracle/oradata/ora10g/tbs_sec_d_01.dbf' size 10m;
Tablespace created.
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
FILE_NAME FILE_ID STATUS
---------------------------------------- ---------- ---------
/oracle/oradata/ora10g/tbs_sec_d_01.dbf 5 AVAILABLE
4)使用邏輯備份恢復表空間的內容
6.小結
又一次實踐證明,【無備份、非歸檔】是DBA界最可怕的場景。
假設這個故障發生之前存在有效的備份,恢復的過程將會非常的簡便,也不會冒著丟失資料的風險。
珍愛DBA生命,請及時完善備份策略並定期安排備份介質有效性驗證等常規“枯燥”任務,只有“她們”才是最美麗的!
Good luck.
secooler
10.06.02
-- The End --
1.查詢獲得TBS_SEC_D表空間對應的資料檔案資訊
sys@ora10g> col FILE_NAME for a40
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
FILE_NAME FILE_ID STATUS
---------------------------------------- ---------- ---------
/oracle/oradata/ora10g/tbs_sec_d_01.dbf 5 AVAILABLE
/oracle/oradata/ora10g/hou.dbf 13 AVAILABLE
2.非歸檔模式下模擬誤刪除資料檔案
1)確認資料庫的歸檔模式
sys@ora10g> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /oracle/arch/ora10g
Oldest online log sequence 1541
Current log sequence 1543
2)模擬誤刪除hou.dbf資料檔案
sys@ora10g> !rm -f /oracle/oradata/ora10g/hou.dbf
3)此時的資料庫狀態沒有異樣
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
FILE_NAME FILE_ID STATUS
---------------------------------------- ---------- ---------
/oracle/oradata/ora10g/tbs_sec_d_01.dbf 5 AVAILABLE
/oracle/oradata/ora10g/hou.dbf 13 AVAILABLE
3.重啟資料庫觀察一系列的報錯資訊
1)關閉資料庫過程中的報錯資訊
sys@ora10g> shutdown immediate;
ORA-03113: end-of-file on communication channel
2)啟動資料過程中的報錯資訊
NotConnected@> startup;
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 2071640 bytes
Variable Size 125830056 bytes
Database Buffers 75497472 bytes
Redo Buffers 6316032 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 13 - see DBWR trace file
ORA-01110: data file 13: '/oracle/oradata/ora10g/hou.dbf'
這裡提示無法定位13號資料檔案。
此時資料庫僅處於mount狀態。
NotConnected@> select open_mode from v$database;
OPEN_MODE
----------
MOUNTED
4.恢復方法
既然資料檔案被誤刪除了,而且我們又沒有有效的備份可用,同時資料庫又處於非歸檔的狀態(“杯具”到了極致),那我們只能容忍資料的丟失(如果13號資料檔案存有資料的情況下)。
1)在mount狀態下使用offline drop命令將資料檔案與表空間之間的關係隔斷。
NotConnected@> col name for a50
NotConnected@> select FILE#,STATUS,ENABLED,NAME from v$datafile where name like '%hou%';
FILE# STATUS ENABLED NAME
---------- ------- ---------- ---------------------------------------
13 ONLINE READ WRITE /oracle/oradata/ora10g/hou.dbf
NotConnected@> alter database datafile '/oracle/oradata/ora10g/hou.dbf' offline drop;
Database altered.
NotConnected@> select FILE#,STATUS,ENABLED,NAME from v$datafile where name like '%hou%';
FILE# STATUS ENABLED NAME
---------- ------- ---------- ----------------------------------------
13 RECOVER READ WRITE /oracle/oradata/ora10g/hou.dbf
2)此時我們便可以順利的OPEN資料庫
NotConnected@> alter database open;
Database altered.
5.收尾工作
即便按照上述的方法簡單處理了這個故障,但是在資料庫中還是遺留了一下“垃圾”資訊。
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
FILE_NAME FILE_ID STATUS
---------------------------------------- ---------- ---------
/oracle/oradata/ora10g/tbs_sec_d_01.dbf 5 AVAILABLE
/oracle/oradata/ora10g/hou.dbf 13 AVAILABLE
此時表明物理上已經不存在的“/oracle/oradata/ora10g/hou.dbf”檔案還是歸屬於表空間TBS_SEC_D。如何徹底的斷絕這樣的無意義的關係?
這裡給出“簡單粗暴”的重建表空間方法。
大體步驟如下:
1)想辦法邏輯備份表空間中包含的資料
2)刪除表空間
sys@ora10g> drop tablespace TBS_SEC_D including contents and datafiles;
Tablespace dropped.
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
no rows selected
3)重建表空間
sys@ora10g> create tablespace TBS_SEC_D datafile '/oracle/oradata/ora10g/tbs_sec_d_01.dbf' size 10m;
Tablespace created.
sys@ora10g> select FILE_NAME,FILE_ID,STATUS from dba_data_files where TABLESPACE_NAME='TBS_SEC_D';
FILE_NAME FILE_ID STATUS
---------------------------------------- ---------- ---------
/oracle/oradata/ora10g/tbs_sec_d_01.dbf 5 AVAILABLE
4)使用邏輯備份恢復表空間的內容
6.小結
又一次實踐證明,【無備份、非歸檔】是DBA界最可怕的場景。
假設這個故障發生之前存在有效的備份,恢復的過程將會非常的簡便,也不會冒著丟失資料的風險。
珍愛DBA生命,請及時完善備份策略並定期安排備份介質有效性驗證等常規“枯燥”任務,只有“她們”才是最美麗的!
Good luck.
secooler
10.06.02
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-664275/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 非歸檔模式下恢復利用offline drop命令誤刪除的資料檔案模式
- 歸檔模式下,線上刪除資料檔案的完全恢復模式
- 無備份恢復(歸檔模式)已刪除資料檔案模式
- 非歸檔模式恢復資料庫模式資料庫
- 非歸檔資料檔案誤刪除解決辦法
- 【故障恢復】因spfile修改錯誤導致資料庫無法啟動的恢復方法資料庫
- 非歸檔模式下恢復資料庫兩例模式資料庫
- 誤刪除資料檔案、控制檔案的非RMAN恢復方法
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- 非歸檔庫誤刪表空間後的資料恢復資料恢復
- linux下恢復誤刪除的資料檔案Linux
- 非歸檔模式下資料檔案被誤刪的解決方法模式
- Oracle恢復誤刪除的資料檔案Oracle
- 非歸檔模式下異常斷電導致的資料庫無法啟動的問題修復模式資料庫
- 【故障處理】DG環境主庫丟失歸檔情況下資料檔案的恢復
- 【備份恢復】非歸檔模式下丟失任意資料檔案 恢復操作模式
- 歸檔日誌滿導致的資料庫掛起故障處理資料庫
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- 歸檔模式下資料檔案丟失的恢復模式
- 歸檔日誌無法歸檔導致資料庫hang住資料庫
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- 誤刪資料庫資料檔案的處理方法資料庫
- oracle RMAN 非歸檔資料庫恢復Oracle資料庫
- 資料檔案誤刪--但有資料檔案的copy恢復
- 恢復案例:歸檔模式下丟失全部資料檔案的恢復模式
- REDO日誌損壞,非歸檔模式資料檔案恢復模式
- 恢復案例:歸檔模式下丟失非系統表空間資料檔案的恢復模式
- 使用檔案描述符恢復誤刪除的資料檔案
- rman恢復--歸檔模式無備份,丟失資料檔案的恢復模式
- 【恢復】使用控制檔案的trace備份恢復因異常斷電導致所有控制檔案損壞的資料庫故障資料庫
- 歸檔日誌滿導致的資料庫掛起故障處理【轉載】資料庫
- rman 非歸檔模式下open庫備份與mount恢復模式
- 誤刪出資料檔案,透過dbca無法刪除資料庫問題資料庫
- 誤刪資料檔案在沒有歸檔的情況下恢復實驗
- 歸檔模式下資料庫全恢復的過程模式資料庫
- 歸檔模式下丟失普通資料檔案並恢復模式
- 歸檔問題導致的資料庫無法啟動資料庫
- 通過控制程式碼恢復Linux下誤刪除的資料庫資料檔案Linux資料庫