2013-02-25 39 views
1

我试图通过应用程序中的休眠模式连接到Oracle 11g XE。 当我部署应用程序在tomcat(7.0)我得到下面的消息。java.sql.SQLException:ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID

java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

当我运行应用程序并通过UI调用对Dao类的请求时,我正在处理异常消息。

org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

我的DB属性文件是

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver 
jdbc.url=jdbc:oracle:thin:@localhost:1522:XE 
jdbc.username=system 
jdbc.password=oracle 

我已经安装的Oracle11g XE和论文是我tnanames.ora listener.ora和文件。我应该在哪里做出改变。

的listener.ora

SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
     (SID_NAME = PLSExtProc) 
     (ORACLE_HOME = D:\oracleXE\app\oracle\product\11.2.0\server) 
     (PROGRAM = extproc) 
    ) 
    (SID_DESC = 
     (SID_NAME = CLRExtProc) 
     (ORACLE_HOME = D:\oracleXE\app\oracle\product\11.2.0\server) 
     (PROGRAM = extproc) 
    ) 
) 

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
     (ADDRESS = (PROTOCOL = TCP)(HOST = SIPLDT0019-PC)(PORT = 1522)) 
    ) 
) 

DEFAULT_SERVICE_LISTENER = (XE) 

的tnsnames.ora

XE = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = SIPLDT0019-PC)(PORT = 1522)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = XE) 
    ) 
) 

EXTPROC_CONNECTION_DATA = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
     (SID = PLSExtProc) 
     (PRESENTATION = RO) 
    ) 
) 

ORACLR_CONNECTION_DATA = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
     (SID = CLRExtProc) 
     (PRESENTATION = RO) 
    ) 
) 

回答

0

SID是 '为您DDBB唯一的名称'。

您必须在连接URL像这样给它:

jdbc:postgresql://<IP-PORT>/<your_SID>?useUnicode=true&amp;characterEncoding=ISO-8859-1 

在这种情况下,这是一个Postgres数据库和网址是在一个Apache Tomcat服务器(server.xml中)的数据源定义(里面)。

(当然你也可以配置Hibernate游泳池补充说:

<property name="connection.url">jdbc:postgresql://<IP-PORT>/<your_SID></property> 

是不一样的,但你自己看着办,你应该在URL规范的地方插入DDBB SID。

希望这会有所帮助。

+0

可以请您详细说明。这里我使用oracle 11g xe。 – cherry 2013-02-25 09:41:26

+0

ü可以在我的问题中看到的网址我给 – cherry 2013-02-25 09:44:01

+0

应该是这样的: 'jdbc.url =的jdbc:神谕:薄:@localhost:1522:XE/' 或者: 'JDBC .url = jdbc:oracle:thin:@localhost:1522:XE/ /' 当您使用DDBB资源管理器时,SID是您的表的根容器的名称 - 无论您使用何种GUI - – inigoD 2013-02-25 10:30:46

相关问题