ORA-24324&ORA-01041重启数据库报错

2015-07-16 12:08:11 · 作者: · 浏览: 2

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.登陆服务器本机重启数据库;