首页 > 代码库 > ora-12514 tns listener does not currently know of service requested in connect descriptor

ora-12514 tns listener does not currently know of service requested in connect descriptor

具体消息为:
ora-12514 tns listener does not currently know of service requested in connect descriptor

环境
windows7 x64
oracle 11g

问题起因:
大致是之前本机安装了
一个oracle10g的client
一个oracle11g的client,
一个oracle11g的服务端
本人卸载了其中的oracle10g的client,之后重新通过sqlplus连接本机oracle,提示上面的消息,但以上消息是否是由于
卸载操作引起,尚未能证实,目前仅记录下,出现该问题时的解决方法。


处理问题步骤如下:
一、
此类问题首先检查windows服务中 OracleOraDb11g_home1TNSListener以及OracleServiceORCL是否已经正常启动
如果已经正常启动,则表示当前出现的问题可能由于监听程序的配置不正确引起,最直接的方法为重新配置oracle监听程序

步骤为:开始菜单 -> Oracle - OraDb11g_home1 -> 配置和移植工具 ->Net Configuration Assistant -> 监听程序配置
提示:配置监听程序过程中,将要求重启当前监听程序,建议在配置完成后,
通过手动再次重启OracleOraDb11g_home1TNSListener以及OracleServiceORCL这两个windows 服务

二、
完成第一步工作,首先通过sqlplus连接本地oracle,尝试用户scott/tiger(默认密码并未修改),此时系统报出如下错误:
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

三、
根据网上查询资料,切换为sys用户登录,
请输入用户名: sys as sysdba
输入口令: change_on_install (默认密码并未修改)

提示如下:
已连接到空闲例程。

表示连接成功。

四、
此时输入startup命令启动oracle例程
提示如下错误:
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ora-00132 syntax error or unresolved network name ‘listener_orcl‘

由此看仍然存在监听程序配置问题,
经由google查找oracle官方论坛,找到如下提问以及回答,与本人遇到情况相同
https://community.oracle.com/message/10157153

此处提取出其中解决方案:(本人环境为oracle11g)
步骤1:
检查你的oracle安装目录%ORACLE_HOME%\network\admin下的 listener.ora和tnsnames.ora以及sqlnet.ora三个文件配置是否正确
声明:若是之前提到的Net Configuration Assistant工具配置, listener.ora和tnsnames.ora这两个文件将由工具生成,
默认情况下,此两个文件中的host地址为你的本机的网络ip,本人将其统一修改为127.0.0.1。

执行如下命令
以如下用户以及身份在sqlplus中连接oracle:
sys/change_on_install as sysdba

执行如下命令:
(1)
SQL> create pfile from spfile;

File created(文件已创建)

(2)
此时在%ORACLE_HOME%\database目录下(有一些google的解决方案中,提到该文件被创建在%ORACLE_HOME%\dbs目录中
,但本人oracle11g环境是建立在%ORACLE_HOME%\database中),创建了一个新文件,该文件名为INIT%ORACLE_SID.ORA。
其中%ORACLE_SID为listener.ora文件中对应的sid名称(默认是orcl),

(3)
此时打开INIT%ORACLE_SID.ORA文件,找到内容段local_listener=‘LISTENER_ORCL2‘,并将其删除(记得!是删除!)

(4)
安装该提问中的解决方案,是接着执行startup nomount pfile=‘<your pfile here>‘,
其中‘<your pfile here>‘表示刚才建立的INIT%ORACLE_SID.ORA路径,
但本人执行该命令时并未成功,并提示 参数错误的情况,因此跳过了该步骤,尝试直接执行

create spfile from pfile;
并提示文件创建成功

(5)
最后执行
SQL>startup
提示ORACLE 例程已经启动。以及数据库装载完毕。

(6)
此时再次切换回scott用户
connect scott/tiger
提示连接成功。

就此问题问题得以解决,总结问题的出现,大致与本机的oracle服务配置相关。出现类似问题需要按步骤排查。

 

ora-12514 tns listener does not currently know of service requested in connect descriptor