ORA-12505

确实也有很久没有到JavaEye来发表一下文章了。 今天主要对ORA-12505,TNS:listener does not currently know of SID given in connect descriptor。
The Connection descriptor used by the client was:
127.0.0.1:1521:ORCL
这个问题进行一个分析,平时在使用JDBC进行数据库连接的时候会出现上面经常报错

1、在用SQL*PLUS来连接数据库时候,会用到Oracle网络配置的三个文件listener.ora、sqlnet.ora、tnsnames.ora。

(1)tnsnames.ora这个文件主要用来客户端连接Oracle服务器的时候,Oracle会首先检查的文件。

例如:我现在想连接一个IP地址为10.0.0.110的Oracle服务器,那么客服端工具SQL*PLUS、PLSQL Developer想要登录到该主机,就必须在tnsnames.ora文件中进行配置。配置内容如下

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.110)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )


上面的配置信息的意思:想要连接到IP地址为10.0.0.110的Oracle服务器上,且该Oracle服务器的服务名为orcl,端口号为1521,网络服务名为ORCL。

只要IP地址为10.0.0.110的Oracle服务器的监听没有问题,数据库实例没有问题,那么在SQL*PLUS中输入: sqlplus lisi/lisi@ORCL就能成功的连上。

(2)listener.ora这个文件时Oracle服务器的监听文件。主要配置了Oracle中的SID信息,非常重要。如果大家在用JDBC编程的时候出现。 ORA-12505,TNS:listener does not currently know of SID given in connect descriptor。
The Connection descriptor used by the client was:
127.0.0.1:1521:ORCL
这个问题,有很大的嫌疑是出这个问题上的。

那么解决这个问题,可以在listener.ora中配置如下信息

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
     (SID_NAME = PLSExtProc)
     (ORACLE_HOME = D:\oracle\product\10.1.0\Db_1)
     (PROGRAM = extproc)
    )
	
(SID_DESC = 
      (GLOBAL_DBNAME = ORCL) 
      (ORACLE_HOME = D:\oracle\product\10.1.0\Db_1) 
      (SID_NAME = ORCL) 
    ) 
  )


(3)sqlnet.ora这个文件是当用户输入:sqlplus lisi/lisi@ORCL时候,会引导Oracle服务器去查看哪个客户端的配置文件,如:tnsnames.ora等文件



你可能感兴趣的:(oracle,sql,编程,jdbc)