Oracle物理結構故障是指構成數據庫的各個物理文件損壞而導致的各種數據庫故障。這些故障可能是由於硬件故障造成的,也可能是人為誤操作而引起。所以我們首先要判斷問題的起因,如果是硬件故障則首先要解決硬件問題。在無硬件問題的前提下我們才能按照下面的處理方發來進一步處理。
控制文件損壞:
控制文件記錄了關於Oracle的重要配置信息,如數據庫名、字符集名字、各個數據文件、日志文件的位置等等信息。控制文件的損壞,會導致數據庫異常關閉。一旦缺少控制文件,數據庫也無法啟動,這是一種比較嚴重的錯誤。
損壞單個控制文件:
1. 確保數據庫已經關閉,如果沒有用下面的命令來關閉數據庫:
svrmgrl>shutdown immediate;
2. 查看初始化文件$Oracle_BASE/admin/pfile/initORCL.ora,確定所有控制文件的路徑。
3. 用操作系統命令將其它正確的控制文件覆蓋錯誤的控制文件。
4. 用下面的命令重新啟動數據庫:
svrmgrl>startup;
5. 用適當的方法進行數據庫全備份。
損壞所有的控制文件:
1. 確保數據庫已經關閉,如果沒有用下面的命令來關閉數據庫:
svrmgrl>shutdown immediate;
2. 從相應的備份結果集中恢復最近的控制文件。對於沒有采用帶庫備份的點可以直接從磁帶上將最近的控制文件備份恢復到相應目錄;對於采用帶庫備份的點用相應的rman腳本來恢復最近的控制文件。
3. 用下面的命令來創建產生數據庫控制文件的腳本:
svrmgrl>startup mount;
svrmgrl>alter database backup controlfile to trace noresetlogs;
4. 修改第三步產生的trace文件,將其中關於創建控制文件的一部分語句拷貝出來並做些修改,使得它能夠體現最新的數據庫結構。假設產生的sql文件名字為createcontrol.sql.
注意:
Trace文件的具體路徑可以在執行完第3)步操作後查看$Oracle_BASE/admin/bdump/alert_ORCL.ora文件來確定。
5. 用下面命令重新創建控制文件:
svrmgrl>shutdown abort;
svrmgrl>startup nomount;
svrmgrl>@createcontrol.sql;
6. 用適當的方法進行數據庫全備份。
重做日志文件損壞:
數據庫的所有增、刪、改都會記錄入重做日志。如果當前激活的重做日志文件損壞,會導致數據庫異常關閉。非激活的重做日志最終也會因為日志切換變為激活的重做日志,所以損壞的非激活的重做日志最終也會導致數據庫的異常終止。在ipas/mSwitch中每組重做日志只有一個成員,所以在下面的分析中只考慮重做日志組損壞的情況,而不考慮單個重做日志成員損壞的情況。
確定損壞的重做日志的位置及其狀態:
1. 如果數據庫處於可用狀態:
select * from v$logfile;
svrmgrl>select * from v$log;
2. 如果數據庫處於已經異常終止:
svrmlgr>startup mount;
svrmgrl>select * from v$logfile;
svrmgrl>select * from v$log;