解决sql plus能连接上本地库但用pl/sql developer却连接不上的问题

时间:2024-03-31 19:11:45

【吐个槽先】:oracle的维护真是老大难的问题!于我而言解决sql plus能连接上本地库但用pl/sql developer却连接不上的问题

 

今天用PL/SQL Developer启动本地库时,报错ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务。。想着自己之前也遇过类似问题,并且在本分类里面有过解决方案。但是尝试用sql plus连接本地库时,发现竟然能成功。。——觉得特诡异。

 

网上寻找解决办法,首选是在无登录状态下修改:Tools->preference,如图:



解决sql plus能连接上本地库但用pl/sql developer却连接不上的问题
 
 

之前红色区域的两个确实都是空白未指定的,故而指定。。

 

【注:】我之前指定OCI Library的时候是指定另外一个oacle相应的oci.dll——我发现自己装了2个oracle。。重启监听服务之后,再重启developer出现:

 err while trying to retrieve text for error ora-12514
之后我查看环境变量,发现Path里面根本指定的是我现在如图所示Oracle对应的oci.dll(一般而言,会有一个下拉的供你选择,选那个就ok了。。)——即:在你装了多个oracle的情形下,该pl/sql developer指向的是哪个oracle示例要搞清楚!
一定要和环境变量里面对应的Oracle对应上,否则就会报错 err while trying to retrieve text for error ora-12514
之后,又看tnsnames.ora有没有少这一行:LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521));发现没有。
重点来了,还需检查与tnsnames.ora同目录下的listener.ora文件,发现是这样的:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = e:\app\Connor\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:e:\app\Connor\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
 
ADR_BASE_LISTENER = e:\xxx\yyyy

少了东西,要在SID_LIST_LISTENER =里面加上:(SID_DESC =      (GLOBAL_DBNAME = ORCL)      (ORACLE_HOME = b:\orcl\product\11.2.0\dbhome_1)     (SID_NAME = ORCL)     ),于是就变成:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = CLRExtProc)

      (ORACLE_HOME = e:\app\Connor\product\11.2.0\dbhome_1)

      (PROGRAM = extproc)

      (ENVS = "EXTPROC_DLLS=ONLY:e:\app\Connor\product\11.2.0\dbhome_1\bin\oraclr11.dll")

    )

(SID_DESC =      (GLOBAL_DBNAME = ORCL)      (ORACLE_HOME = b:\orcl\product\11.2.0\dbhome_1)     (SID_NAME = ORCL)     )

 

  )

 

(首先获取这些文件的修改权限:右键->属性->安全->更改权限->编辑,否则无法保存!)

 

修改完毕,保存,重启相关监听服务。重启PL/SQL Developer,输入用户名密码,登陆成功,,OK,,大功告成!

 

--------------------------------------------

PS:出现这种情况并不一定就是我这样做,因为造成这个错可能由其他原因引起,只不过我记录下我的解决过程,说不定碰到同样问题的兄弟同样可以通过这种方式解决!