连接 jdbc Oracle10g 错误 ,JDBC代码无问题,服务也启动,连接字符串也是对的,但是在eclipse 下报错,错误信息如下:<o:p></o:p>
java.sql.SQLException: Listener refused the connection with the following error:<o:p></o:p>
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor<o:p></o:p>
The Connection descriptor used by the client was:<o:p></o:p>
localhost:1521:orcl<o:p></o:p>
<o:p></o:p>
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)<o:p></o:p>
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:279)<o:p></o:p>
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:318)<o:p></o:p>
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:343)<o:p></o:p>
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:147)<o:p></o:p>
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31)<o:p></o:p>
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:545)<o:p></o:p>
at java.sql.DriverManager.getConnection(Unknown Source)<o:p></o:p>
at java.sql.DriverManager.getConnection(Unknown Source)<o:p></o:p>
at cn.com.db.DBAccess.getConnection(DBAccess.java:33)<o:p></o:p>
at cn.com.db.DBAccess.main(DBAccess.java:95)<o:p></o:p>
Null<o:p></o:p>
在CMD下snrctl status ,tnsping orcl 显示都正常。 <o:p></o:p>
在pl/SQL下用<o:p></o:p>
select open_mode from v$database;<o:p></o:p>
show parameter instance;<o:p></o:p>
select INSTANCE_NAME from v$instance;<o:p></o:p>
sqlplus sys/oracle@orcl<o:p></o:p>
查询都显示正常,就是用pl/sql 登录时 填“数据库名” orcl 就无法登陆,报ora -12514 <o:p></o:p>
l最后有效的解决方法:<o:p></o:p>
修改listener.ora文件 <o:p></o:p>
原listener.ora文件:<o:p></o:p>
# listener.ora Network Configuration File: D:\oracle\product\10.1.0\Db_4\network\admin\listener.ora<o:p></o:p>
# Generated by Oracle configuration tools.<o:p></o:p>
<o:p></o:p>
SID_LIST_LISTENER =<o:p></o:p>
(SID_LIST =<o:p></o:p>
(SID_DESC =<o:p></o:p>
(SID_NAME = PLSExtProc)<o:p></o:p>
(ORACLE_HOME = D:\oracle\product\10.1.0\Db_4)<o:p></o:p>
(PROGRAM = extproc)<o:p></o:p>
)<o:p></o:p>
)<o:p></o:p>
<o:p></o:p>
LISTENER =<o:p></o:p>
(DESCRIPTION_LIST =<o:p></o:p>
(DESCRIPTION =<o:p></o:p>
(ADDRESS_LIST =<o:p></o:p>
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))<o:p></o:p>
)<o:p></o:p>
(ADDRESS_LIST =<o:p></o:p>
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))<o:p></o:p>
)<o:p></o:p>
)<o:p></o:p>
)<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
修改后的文件:<o:p></o:p>
---------------------------------------------------------------------------------------<o:p></o:p>
# listener.ora Network Configuration File: D:\oracle\product\10.1.0\Db_4\network\admin\listener.ora<o:p></o:p>
# Generated by Oracle configuration tools.<o:p></o:p>
<o:p></o:p>
SID_LIST_LISTENER =<o:p></o:p>
(SID_LIST =<o:p></o:p>
(SID_DESC =<o:p></o:p>
(SID_NAME = PLSExtProc)<o:p></o:p>
(ORACLE_HOME = D:\oracle\product\10.1.0\Db_4)<o:p></o:p>
(PROGRAM = extproc)<o:p></o:p>
<o:p></o:p>
)<o:p></o:p>
<o:p></o:p>
(SID_DESC =<o:p></o:p>
(GLOBAL_DBNAME = orcl)<o:p></o:p>
(ORACLE_HOME = D:\oracle\product\10.1.0\Db_4) <o:p></o:p>
(SID_NAME = orcl)<o:p></o:p>
)<o:p></o:p>
)<o:p></o:p>
<o:p></o:p>
LISTENER =<o:p></o:p>
(DESCRIPTION_LIST =<o:p></o:p>
(DESCRIPTION =<o:p></o:p>
(ADDRESS_LIST =<o:p></o:p>
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))<o:p></o:p>
)<o:p></o:p>
(ADDRESS_LIST =<o:p></o:p>
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))<o:p></o:p>
)<o:p></o:p>
)<o:p></o:p>
)<o:p></o:p>
-----------------------------------------------------------------<o:p></o:p>
如果错误还存在,也可以那试一下:
set oracle_sid=<sid_name>
sqlplus /nolog
connect sys/pwd as sysdba
start<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
<o:p></o:p>