数据库报错完美解决:ORA-01034以及ORA-00119、ORA-00132

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/whandgdh/article/details/88709699

今天学习监听时,配置监听后,重启数据库后,用sqlplus以dba连接数据库时
报错, ORA-01034: ORACLE not available
在这里插入图片描述

错误提示数据库不可以用,查看实例是否启动

select  status  from  v$instance

在这里插入图片描述
根据上面信息 表示 实例都没有启动,数据库启动的三个阶段第一个阶段没有完成
数据库启动第一个阶段:oracle 会读取一个参数文件,这个文件可以是初始化参数文件(PFILE
或者读取服务器参数文件(SPFILE) 后进行内存分配,所以就推测是在获取参数文件中的某个参数时出错了。

我门先通过参数文件启动 看看具体报错信息,startup 命令 默认从服务器参数文件启动,因为服务器参数文件是二进制文件,不方便修改,通过文本修改后,数据库依然不能启动的。所以改用参数文件启动。
参数文件存储位置 oracle_home\dbs\ 下 init+sid.orl
spfile 文件位置 oracle_home\database\ 下 spfile+sid.orl。
本例中参数文件:D:\software\oracle11\product\11.2.0\dbhome_1\dbs\INITORCL.ORL
本例中服务器文件:D:\software\oracle11\product\11.2.0\dbhome_1\database\SPFILEORCL.ORA

如果没有找到参数文件pfile 可以根据服务器文件spfile 创建参数文件 命令如下:

create    pfile='D:\software\oracle11\product\11.2.0\dbhome_1\dbs\INITORCL.ORL'
        from
SPFILE='D:\software\oracle11\product\11.2.0\dbhome_1\database\SPFILEORCL.ORA' ;

根据参数文件启动命令如下:

 startup pfile='D:\software\oracle11\product\11.2.0\dbhome_1\dbs\INITORCL.ORL'

在这里插入图片描述
错误信息:
ORA-00119: invalid specification for system parameter DISPATCHERS
ORA-00132: syntax error or unresolved network name ‘orcl’。
根据报错信息知道 跟报错信息相关的两个参数 一个是dispatchers:调度服务器的参数
另一个是本地监听器参数local_listener,报错信息提示的是不能指定具体的调度器服务器,
不能解析监听服务器orcl
我们打开参数文件 INITORCL.ORL 如下图:
在这里插入图片描述
意思是不能解析监听器LISTENER_ORCL,这个参数对应客户端监听配置文件tnsnames.ora.即数据库启动时会在该监听文件中寻找对应的监听器,我们查看监听文件中是否没有配置该监听,文件在TNS_ADMIN环境变量路径下。
本例位置为:
D:\software\oracle11\product\11.2.0\dbhome_1\NETWORK\ADMIN
打开tnsnames.ora. 文件看到是没有问题,是LISTENER_ORCL监听的
在这里插入图片描述

那我们再来看看,监听器是否启动
重新进入cmd界面
输入 lsnrctl
在这里插入图片描述
在弹框里面输入status 看到监听是正常启动的
在这里插入图片描述

到这里,既然监听没有问题,那我们可以重新配置参数文件试一下

方法一:简单粗暴,既然是参数文件说这两个参数文件不能解析,那就把这两个参数注释掉
在这里插入图片描述
然后再使用参数文件启动
startup pfile=‘D:\software\oracle11\product\11.2.0\dbhome_1\dbs\INITORCL.ORL’

数据库 终于能正常启动了
在这里插入图片描述

好多同学到这里就结束了,但是由于数据库启动命令startup命令默认是采用服务器参数文件启动的,所以为了防止以后启动数据库报错,我们还需要把服务器参数文件重建一下

create    SPFILE='D:\software\oracle11\product\11.2.0\dbhome_1\database\SPFILEORCL.ORA' 
 from   pfile='D:\software\oracle11\product\11.2.0\dbhome_1\dbs\INITORCL.ORL';

在这里插入图片描述
方法二:修改参数文件
修改参数文件中 参数 local_listener 并把 dispatchers 注释掉

local_listener='(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=localhost)(Port=1521)))'

在这里插入图片描述

关闭数据数据库

shutdown immediate;

再次用参数文件启动

startup pfile='D:\software\oracle11\product\11.2.0\dbhome_1\dbs\INITORCL.ORL'

数据库仍然能正常启动
在这里插入图片描述

当然最后还是不要忘记重建spfile

本文涉及到知识点有:
1、数据库启动原理
2、数据库参数文件以及服务器参数文件
3、数据库监听文件
以后有时间再整理三个知识点

猜你喜欢

转载自blog.csdn.net/whandgdh/article/details/88709699
今日推荐