ora-00119错误是Oracle数据库实例启动阶段出现的典型报错,该错误一般伴随ora-00132错误同时出现,核心原因是数据库无法识别或加载本地监听相关的参数配置,导致实例启动流程中断。

ora-00119错误的常见原因
该错误的触发场景主要有以下几类:
- 数据库参数文件中的
local_listener参数配置错误,比如指向了不存在的监听地址或者格式不符合要求 - 参数文件中的
instance_name参数和实际的实例名称不匹配 - tnsnames.ora文件中没有配置和
local_listener参数对应的监听条目 - 参数文件损坏或者权限不足,导致数据库启动时无法读取正确的参数内容
排查ora-00119错误的步骤
第一步:查看完整报错信息
首先登录服务器,切换到Oracle用户,使用sqlplus连接数据库,尝试启动实例查看完整报错:
-- 登录sqlplus sqlplus / as sysdba -- 尝试启动实例 startup -- 此时会输出类似如下的报错 ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'
第二步:检查参数文件内容
查看当前使用的参数文件中local_listener的配置值:
-- 查看local_listener参数当前值 show parameter local_listener -- 查看参数文件位置 show parameter spfile
如果使用的是spfile参数文件,需要先创建pfile文件来查看和修改参数:
-- 从spfile创建pfile,默认路径在$ORACLE_HOME/dbs目录下 create pfile from spfile;
第三步:核对tnsnames.ora配置
检查$ORACLE_HOME/network/admin/tnsnames.ora文件,看是否存在和local_listener参数值对应的条目,比如参数值是LISTENER_ORCL,那么tnsnames.ora中需要有对应的LISTENER_ORCL配置。
解决ora-00119错误的方法
方法一:修改local_listener参数
如果local_listener参数配置错误,可以直接在sqlplus中修改该参数,然后重启实例:
-- 如果实例已经启动到nomount状态,先关闭 shutdown immediate -- 启动到nomount状态 startup nomount -- 修改local_listener参数为正确的监听地址,格式为(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)) alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))' scope=spfile; -- 关闭实例 shutdown immediate -- 重新启动实例 startup
方法二:编辑pfile文件后启动
如果spfile文件损坏或者修改参数失败,可以编辑pfile文件,修改local_listener参数后,用pfile启动实例,再重新生成spfile:
-- 编辑pfile文件,路径根据实际show parameter spfile的结果调整 vi $ORACLE_HOME/dbs/initorcl.ora -- 在文件中找到local_listener参数,修改为正确值,比如 *.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))' -- 保存退出后,用pfile启动实例 sqlplus / as sysdba startup pfile='$ORACLE_HOME/dbs/initorcl.ora' -- 启动成功后,重新生成spfile create spfile from pfile;
方法三:补充tnsnames.ora配置
如果是tnsnames.ora缺少对应条目,可以编辑该文件,添加对应的监听配置:
-- 编辑tnsnames.ora文件 vi $ORACLE_HOME/network/admin/tnsnames.ora -- 添加如下内容,名称和local_listener参数值一致 LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) -- 保存后重启数据库实例即可
验证解决效果
实例启动完成后,可以查看监听状态和参数配置,确认错误已经解决:
-- 查看local_listener参数是否正确 show parameter local_listener -- 查看实例状态 select status from v$instance;
如果实例状态显示为OPEN,且local_listener参数值为正确的监听地址,说明ora-00119错误已经成功解决。