1. 程式人生 > >oracle ORA-01033錯誤的解決方案

oracle ORA-01033錯誤的解決方案

問題描述:本人那次用C#程式操作影像資料——將多幅影像合成一幅影像,由於影像較大,通過oracle 資料庫來儲存,不過由於程式運行了一段時間後系統消耗的資源太多,結果程式為響應,我就把程式關閉。結果oracle資料庫崩掉了。

通過Oracle Enterprise Manager Console連線資料庫,就彈出ORA-01033: ORACLE initialization or shutdown in progress提示資訊。

(1)我到網上找到了相依的解決,如下

客戶Oracle伺服器進入PL/SQL Developer時報ora-01033:oracle initializationg or shutdown in progress 錯誤提示,應用系統無法連線Oracle服務。經遠端指導解決問題。過程如下:

1、進入CMD,執行set ORACLE_SID=fbms,確保連線到正確的SID;
2、執行sqlplus "/as sysdba"
      SQL>shutdown immediate      停止服務
     SQL>startup                          啟動服務,觀察啟動時有無資料檔案載入報錯,並記住出錯資料檔案標號
     SQL>shutdown immediate      再次停止服務
     SQL>startup mount
     SQL> recover datafile 2         恢復出錯的資料檔案
     SQL>shutdown immediate      再次停止服務
    SQL>startup                          啟動服務,此次正常。
3、進入PL/SQL Developer檢查,沒有再提示錯誤。

執行結果如下:

C:/Documents and Settings/江毅>set ORACLE_SID=supermapdb

C:/Documents and Settings/江毅>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 9月 26 20:06:13 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> shutdown immediate
ORA-01109: 資料庫未開啟


已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             230689668 bytes
Database Buffers          373293056 bytes
Redo Buffers                7135232 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 4 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 4:
'E:/DATABASE/ORACLE/PRODUCT/10.2.0/ORADATA/SUPERMAPDB/.DBF'


SQL> shutdown immediate
ORA-01109: 資料庫未開啟


已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             230689668 bytes
Database Buffers          373293056 bytes
Redo Buffers                7135232 bytes
資料庫裝載完畢。
SQL> recover datafile 4
ORA-00283: 恢復會話因錯誤而取消
ORA-01110: 資料檔案 4:
'E:/DATABASE/ORACLE/PRODUCT/10.2.0/ORADATA/SUPERMAPDB/.DBF'
ORA-01157: 無法標識/鎖定資料檔案 4 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 4:
'E:/DATABASE/ORACLE/PRODUCT/10.2.0/ORADATA/SUPERMAPDB/.DBF'


SQL> shutdown immediate
ORA-01109: 資料庫未開啟


已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             230689668 bytes
Database Buffers          373293056 bytes
Redo Buffers                7135232 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 4 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 4:
'E:/DATABASE/ORACLE/PRODUCT/10.2.0/ORADATA/SUPERMAPDB/.DBF'


SQL>

這顯示按他的方法是沒辦法解決該問題的。

結果我仔細發現   E:/DataBase/oracle/product/10.2.0/oradata/SuperMapDB   資料夾下沒有.DBF檔案。只有  SUPERMAPDB.DBF  檔案。我想這個SUPERMAPDB.DBF有可能就是  .DBF  檔案  所以我就是把SUPERMAPDB.DBF檔案更改成.DBF。在重試了上面的方法。結果出現了ORA-16038、 ORA-19809、 ORA-00312錯誤!

我又按照下面解決方法,

Oracle 10g預設的歸檔日誌存放在flash_recovery_area,而預設安裝的時候該區間選擇了1G大小
當歸檔日誌超過1G的時候,空間不足,於是無法歸檔,當時手工刪除歸檔日誌檔案,Oracle是無法識別空間是否釋放。導致資料庫無法啟動

解決辦法:
1、mount資料庫
sql> startup mount            (注意,這時候還會報錯,但是可以更改系統引數)

2、 更改系統引數
sql> alter system set  db_recovery_file_dest_size=2g scope=spfile;

{或者 ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=4G SCOPE=BOTH;}
引數db_recovery_file_dest_size的值根據磁碟剩餘空間大小和實際需要來設定,沒有定論

3、開啟資料庫
sql> alter database open


4、刪除失效歸檔日誌.
rmanRMAN> connect target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
RMAN> exit

5、重新啟動資料庫

sql> shutdown immediate
sql> startup


我的supermapdb資料庫又重新恢復了

OK,一切正常!真是慚愧,感謝大家支援和幫助。