今天学习监听时,配置监听后,重启数据库后,用sqlplus以dba连接数据库时

报错, ORA-01034: ORACLE not available

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

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

select  status  from  v$instance

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


根据上面信息 表示 实例都没有启动,数据库启动的三个阶段第一个阶段没有完成

数据库启动第一个阶段: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-01034以及ORA-00119、ORA-00132_参数文件_03


错误信息:

ORA-00119: invalid specification for system parameter DISPATCHERS

ORA-00132: syntax error or unresolved network name ‘orcl’。

根据报错信息知道 跟报错信息相关的两个参数 一个是dispatchers:调度服务器的参数

另一个是本地监听器参数local_listener,报错信息提示的是不能指定具体的调度器服务器,

不能解析监听服务器orcl

我们打开参数文件 INITORCL.ORL 如下图:

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


意思是不能解析监听器LISTENER_ORCL,这个参数对应客户端监听配置文件tnsnames.ora.即数据库启动时会在该监听文件中寻找对应的监听器,我们查看监听文件中是否没有配置该监听,文件在TNS_ADMIN环境变量路径下。

本例位置为:

D:\software\oracle11\product\11.2.0\dbhome_1\NETWORK\ADMIN

打开tnsnames.ora. 文件看到是没有问题,是LISTENER_ORCL监听的

数据库报错完美解决:ORA-01034以及ORA-00119、ORA-00132_参数文件_05

那我们再来看看,监听器是否启动

重新进入cmd界面

输入 lsnrctl

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


在弹框里面输入status 看到监听是正常启动的

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

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

方法一:简单粗暴,既然是参数文件说这两个参数文件不能解析,那就把这两个参数注释掉

数据库报错完美解决:ORA-01034以及ORA-00119、ORA-00132_参数文件_08


然后再使用参数文件启动

startup pfile=‘D:\software\oracle11\product\11.2.0\dbhome_1\dbs\INITORCL.ORL’数据库 终于能正常启动了

数据库报错完美解决:ORA-01034以及ORA-00119、ORA-00132_参数文件_09

好多同学到这里就结束了,但是由于数据库启动命令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';

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


方法二:修改参数文件

修改参数文件中 参数 local_listener 并把 dispatchers 注释掉

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

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

关闭数据数据库

shutdown immediate;

再次用参数文件启动

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

数据库仍然能正常启动

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

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

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