在處理Oracle數據庫時,經常會遇到各種錯誤提示。最近遇到了一個ORA-01033錯誤,具體表現為數據庫初始化或關閉過程中。這個問題發生在Windows 2000 Server操作系統上,內存為128M,運行的是Oracle 8i R2 (8.1.6) for NT企業版,安裝路徑為C:\ORACLE。由于誤操作,一個數據文件被誤刪,導致SQL*Plus無法連接數據庫,顯示錯誤信息為ORA-01033: ORACLE initialization or shutdown in progress。為了模擬這個現象,我們進行了以下步驟:首先關閉所有Oracle相關服務,然后通過命令行關閉數據庫,并刪除了test.ora文件。重新啟動服務后,盡管OracleServiceORADB顯示為已啟動狀態,但SQL*Plus仍無法連接,再次顯示了ORA-01033錯誤。解決這個問題的方法是讓損壞的數據文件脫機,然后打開數據庫。具體操作如下:首先通過svrmgrl連接到數據庫,然后執行shutdown命令,之后使用startup mount命令將數據庫掛載。在ARCHIVELOG模式下,文件名需要大寫,執行alter database datafile 'C:\TEST.ORA' offline;或alter database datafile 'C:\TEST.ORA' offline drop;,最后執行alter database open;命令。為了查詢數據文件的狀態,可以使用SQL命令:select file#,name,status from v$datafile;。如果要丟棄表空間test,可以執行drop tablespace test;。當丟失聯機日志文件時,需要分兩種情況進行處理。如果是非活動的日志文件,且該日志文件組具有多個成員,可以先將數據庫shutdown,然后使用操作系統命令將損壞的日志成員文件覆蓋,或者將其拷貝到新的驅動器上,通過alter database rename file ‘xxxx’ to ‘xxxx’命令改變文件位置。如果日志組只有一個成員,則先mount上數據庫,轉換為noarchivelog模式,增加一個成員,刪除損壞的日志文件,備份控制文件,然后將數據庫改回archivelog模式,做一個冷備份。如果是當前激活的日志文件丟失,數據庫沒有鏡像且所有成員均變為不可用,首先將數據庫shutdown abort,從最近的一次全備份中恢復所有數據文件,啟動到mount狀態。如果原日志文件物理位置不可用,使用alter database rename file ‘xxx’ to ‘xxx’命令改變文件位置。然后使用recover database until cancel命令恢復數據庫,直至最后一個歸檔日志使用完畢,輸入cancel。最后用alter database open resetlogs命令打開數據庫,并進行冷備份。需要注意的是,所有包含在損壞的redo log中的信息將會丟失,這意味著數據庫崩潰前已經提交的數據有可能會丟失。因此,應盡量使每個日志組具有多個日志成員,并且放置在不同的驅動器上,以防止介質故障。