ORA-01157 / 無法連接到數據庫
這是這個問題的後續。
首先讓我說我不是DBA,所以我真的很迷茫。
幾週前,我們與我們的一個 SID 失去了聯繫。所有其他服務都在工作,但特別是這個不是。
我們在嘗試連接時得到的是這條消息
ORA-01033: ORACLE 初始化或關閉正在進行中
試圖
alter database open
結束ORA-01157: cannot identify/lock data file 6 - see DBWR trace file ORA-01110: data file 6: '/u01/app/oracle/oradata/xxx/xxx_data.dbf'
我試圖關閉/重新啟動數據庫,但收到此消息。
Total System Global Area 566231040 bytes Fixed Size 1220604 bytes Variable Size 117440516 bytes Database Buffers 444596224 bytes Redo Buffers 2973696 bytes Database mounted. ORA-01157: cannot identify/lock data file 6 - see DBWR trace file ORA-01110: data file 6: '/u01/app/oracle/oradata/xxx/xxx_data.dbf'
當一切繼續相同時,我刪除了 dbf 文件(rm xxx_data.dbf xxx_index.dbf),並使用
touch xxx_data.dbf
.我還嘗試使用重新創建表空間
`CREATE TABLESPACE DATA DATAFILE XXX_DATA.DBF`
並得到
Database not open
正如我所說,我不知道這有多糟糕,或者我距離訪問我的數據庫還有多遠(好吧,至少對於這個 SID,其他人正在工作)。
我想最後一個資源是扔掉所有東西,然後重新創建它,但我不知道怎麼做,我希望有一個破壞性較小的解決方案。
任何幫助將不勝感激 。提前致謝。
刪除 dbf 文件幾乎破壞了您的數據庫。您將需要一些專家幫助才能使用現有數據庫。
您將需要從備份中恢復。你有備份,對吧?
如果您沒有備份,則需要從頭開始重新創建數據庫,並從另一個實例導入數據。
您可以嘗試打開數據庫的其餘部分。正如 DCookie 之前所說,刪除文件(xxx_data.dbf xxx_index.dbf)已經嚴重損壞了您的數據庫。如果您沒有任何備份並且數據對您來說非常重要,我只能強調不要再擺弄該系統並從 oracle 的專業服務中獲得一些幫助的重要性。
如果您想嘗試對自己進行恢復,您可以使損壞的表空間離線,然後從數據庫的其餘部分解除安裝數據。
export ORACLE_SID=<your_lost_SID> sqlplus /nolog conn / as sysdba startup mount select TABLESPACE_NAME , FILE# from v$datafile_header where FILE# = 6;
此時可以查詢數據庫中損壞的表空間的名稱。現在我們將其離線。並啟動數據庫的其餘部分。
alter database datafile '/u01/app/oracle/oradata/xxx/xxx_data.dbf' offline;
如果你得到類似的東西:
ORA-01145: offline immediate disallowed unless media recovery enabled
您正在以 noarchivelog 模式執行數據庫。在這種情況下這真的很糟糕,你應該在這裡停下來尋求幫助!現在不要再進一步了。請!只需關閉實例。也許專家可以提供幫助。
如果表空間處於離線狀態,您可以繼續並使數據庫的其餘部分聯機。
alter database open;
祝你好運!