我正在查看使用JDBC連接來連接到Oracle 11g數據庫(11.2.0)的Web應用程序。該應用程序不工作了一段時間的任何問題(約一小時),然後我得到:ORA-12505,TNS:監聽器當前不知道Tomcat應用程序中的連接描述符中給出的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
我試圖重新啓動Oracle和Oracle服務OracleServiceXE和OracleXETNSListener但誤差不會走的方式。它在我重啓機器後纔會消失。
我沒有更改我的Tomcat或Oracle中的任何數據庫參數。
這裏是我的tnsnames.ora
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(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)
)
)
這裏是我的JDBC配置:
String serverName = "localhost";
String portNumber = "1521";
String sid = "xe";
String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
String username = "xxx";
String password = "yyy";
當 「XE」 工作正常,如果我檢查lsnrctl的狀態,我可以看到
Service "XEXDB" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "xe" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
The command completed successfully
一旦我得到異常,當我檢查lsnrctl狀態時,我沒有看到實例「xe」。
我想知道爲什麼我在一段時間後得到這個異常以及如何解決這個問題。如果沒有,我怎樣才能避免重新啓動我的機器?謝謝。