首页 > 代码库 > 解决oracle11g的ORA-12505问题

解决oracle11g的ORA-12505问题

今天在使用SQL Developer的时候连不上去,报ORA-12505错误,但是SQLPLUS可以连接。

检查服务名,是OracleServiceORCL,那SID应当就是orcl,但是使用该SID仍然无法连接。

查阅资料后解决方法如下:

1.  打开数据库实例的目录(我的是C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN)

找到listener.ora文件(listener监听器进程的配置文件),使用文本编辑器打开。

内容如下:

[plain] view plaincopy
  1. # listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora  
  2. # Generated by Oracle configuration tools.  
  3.   
  4. SID_LIST_LISTENER =  
  5.   (SID_LIST =  
  6.     (SID_DESC =  
  7.       (SID_NAME = CLRExtProc)  
  8.       (ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)  
  9.       (PROGRAM = extproc)  
  10.       (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")  
  11.     )  
  12.   )  
  13.   
  14. LISTENER =  
  15.   (DESCRIPTION_LIST =  
  16.     (DESCRIPTION =  
  17.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))  
  18.       (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))  
  19.     )  
  20.   )  
  21.   
  22. ADR_BASE_LISTENER = C:\app\Administrator  


 

2.  添加SID信息(红色字体部分)

[plain] view plaincopy
  1. # listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora  
  2. # Generated by Oracle configuration tools.  
  3. SID_LIST_LISTENER =  
  4.   (SID_LIST =  
  5.     (SID_DESC =  
  6.       (SID_NAME = CLRExtProc)  
  7.       (ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)  
  8.       (PROGRAM = extproc)  
  9.       (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")  
  10.     )  
  11.     <span style="color:#ff0000;">(SID_DESC =  
  12.       (GLOBAL_DBNAME = orcl)  
  13.       (ORACLE_HOME =  C:\app\Administrator\product\11.2.0\dbhome_1)  
  14.       (SID_NAME = orcl)  
  15.     )  
  16. </span>  )  
  17. LISTENER =  
  18.   (DESCRIPTION_LIST =  
  19.     (DESCRIPTION =  
  20.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))  
  21.       (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))  
  22.     )  
  23.   )  
  24. ADR_BASE_LISTENER = C:\app\Administrator  

3.  重新启动 OracleServiceORCL 和OracleOraDb11g_home1TNSListener 服务。最后试一试,连接成功!

附:

PL/SQL DEVELOPER 和 SQLPLUS 采用 service_name 进行连接

而应用程序是按照 sid_name 进行连接,所以出现 PL/SQL DEVELOPER和SQLPLUS能够连接而应用程序却无法连接的问题。

使用 SELECT INSTANCE_NAME FROM V$INSTANCE语句,就可以查看当前数据库实例的sid_name了。

出处:http://blog.csdn.net/mdifferent/article/details/7887832

解决oracle11g的ORA-12505问题