ORA-24324ORA-01041重启数据库报错
昨天在重启Oracle数据库时报错,报了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.登陆服务器本机重启数据库;
上一篇: PHP延迟静态捆绑Late Static Bindings
下一篇: 工具类
推荐阅读
-
详解Ubuntu Server下启动/停止/重启MySQL数据库的三种方式
-
解决php用mysql方式连接数据库出现Deprecated报错问题
-
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
-
Linux 初始化MySQL 数据库报错解决办法
-
使用cmd运行mysql数据库的时候,报错:"不是内部命令也不是可有运行的程序"问题的解决办法
-
oracle 实际值超过数据库某个字段指定长度报错解决
-
mysql数据库使用insert语句插入中文数据报错
-
配置c3p0-config.xml数据库连接池,jdbcurl配置项报错Type The reference to entity "useUnicode" must end with the ';' delimiter.
-
关系型数据库管理系统RDBMS的特点、MySQL安装处理报错
-
Linux启动/停止/重启Mysql数据库的简单方法(推荐)