ORA-24324&ORA-01041重啟資料庫報錯
昨天在重啟Oracle資料庫時報錯,報了ORA-24324和ORA-01041錯誤,下面還原一下報錯過程以及解決問題的過程。
1.環境準備
我們在Oracle 10g+Windows Server 2008中進行實驗。需要說明的是,伺服器上建立了多個資料庫,因此登陸需要指定服務名。
C:\\Users\\Administrator>sqlplus /@hoegh as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期二 5月 19 11:25:33 2015
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
串連到:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for 64-bit Windows: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
SQL>
2.報錯
首先執行shutdown關閉資料庫,然後執行startup mount重啟資料庫,報了ORA-24324和ORA-01041錯誤。
SQL> shutdown immediate
資料庫已經關閉。
已經卸載資料庫。
ORACLE 常式已經關閉。
SQL>
SQL>
SQL> startup mount;
ORA-24324: 未初始化服務控制代碼
ORA-01041: 內部錯誤, hostdef 副檔名不存在
SQL>
然後,我嘗試重新登入sqlplus,依然報了ORA-01041錯誤
SQL>
SQL> exit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
C:\\Users\\Administrator>sqlplus /@hoegh as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期三 5月 20 09:28:00 2015
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
ERROR:
ORA-01041: 內部錯誤, hostdef 副檔名不存在
請輸入使用者名稱:
3.Trouble-shooting
通過尋找原因,知道這個報錯的根本原因是監聽中已經沒有了執行個體的註冊資訊;可能和多資料庫有關,於是我嘗試指定ORACLE_SID,問題順利解決。
C:\\Users\\Administrator>
C:\\Users\\Administrator>set ORACLE_SID=HOEGH
C:\\Users\\Administrator>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期三 5月 20 09:31:03 2015
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
已串連到空閑常式。
SQL> startup mount;
ORACLE 常式已經啟動。
Total System Global Area 2415919104 bytes
Fixed Size 2165960 bytes
Variable Size 1767568184 bytes
Database Buffers 637534208 bytes
Redo Buffers 8650752 bytes
資料庫裝載完畢。
SQL>
4.總結
現在明白這個報錯的根本原因是監聽中已經沒有了執行個體的註冊資訊,我是通過指定ORACLE_SID,進而提供了執行個體資訊,順利解決了問題;以上內容只是給大家提供一種解決問題的思路,我看網上也有其他不同的解決辦法,可能是故障情境不盡相同,大家在解決類似問題時都可以參考一下,包括:
1.重啟監聽程式;
2.重啟sqlplus;
3.登陸伺服器本機重啟資料庫;