oracle10G 的ORA-12505问题解决方法

连接 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>

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