ORA-12514监听报错无法连接Oracle数据库问题求助
ORA-12514报错的核心原因是你当前使用的1522端口的FORTUNATO监听没有注册你的orcl实例的服务信息,监听不知道怎么转发连接请求到数据库实例。你现有的SID列表配置只绑定了1521端口的BOH NOME LISTENER监听,没有适配你在用的1522端口监听。
第一步:修改listener.ora配置
给FORTUNATO监听添加对应的SID列表配置,修改后的listener.ora完整内容如下,只需要新增SID_LIST_FORTUNATO段,原有内容保留即可:
# listener.ora Network Configuration File: C:\oracle_home\NETWORK\ADMIN\listener.ora # Generated by Oracle configuration tools. # 新增以下SID_LIST_FORTUNATO配置段 SID_LIST_FORTUNATO = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\oracle_home) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:C:\oracle_home\bin\oraclr19.dll") ) # 新增你的orcl实例配置 (SID_DESC = (GLOBAL_DBNAME = orcl.station) (ORACLE_HOME = C:\oracle_home) (SID_NAME = orcl) ) ) SID_LIST_BOH NOME LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\oracle_home) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:C:\oracle_home\bin\oraclr19.dll") ) ) FORTUNATO = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-VVEP6NE.station)(PORT = 1522)) ) ) BOH NOME LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-VVEP6NE.station)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
第二步:重启FORTUNATO监听生效
打开Windows命令提示符(需右键选择以管理员身份运行),依次执行以下命令:
- 停止FORTUNATO监听:
lsnrctl stop FORTUNATO - 启动FORTUNATO监听:
lsnrctl start FORTUNATO - 验证服务注册状态:
lsnrctl service FORTUNATO
验证时输出结果里如果能看到
orcl.station服务,说明配置生效
第三步:测试数据库连接
执行以下命令测试连接是否正常:sqlplus 你的数据库用户名/你的数据库密码@ORCL
如果能正常进入sqlplus命令行,说明连接修复完成。
注意:如果测试连接仍然报错,可打开tnsnames.ora,将ORCL配置段中的
(SERVER = SHARED)修改为(SERVER = DEDICATED)后重试,大部分默认安装的Oracle实例都没有开启共享服务器模式,用专用服务器模式即可。
如果不想用静态SID注册,也可以登录数据库实例后执行以下命令,让数据库自动动态注册到1522端口的监听:alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=DESKTOP-VVEP6NE.station)(PORT=1522))' scope=both;
执行后等待1分钟左右,监听就能自动识别数据库服务,不需要手动配置SID_LIST。
内容的提问来源于stack exchange,提问作者santocielo99

