Oracle

ORA-01157 / 無法連接到數據庫

  • February 22, 2012

這是這個問題的後續。

首先讓我說我不是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;

祝你好運!

引用自:https://serverfault.com/questions/124006