确实也有很久没有到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等文件