1. 程式人生 > >Oracle - 連線發生 ERROR: ORA-12560: TNS: 協議介面卡錯誤

Oracle - 連線發生 ERROR: ORA-12560: TNS: 協議介面卡錯誤

今天使用Java連線Oracle時,程式丟擲SQLException:

java.sql.SQLException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
 
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at sql.Oracle.getConn(Oracle.java:23)
	at sql.Oracle.query(Oracle.java:55)
	at sql.Test.main(Test.java:8)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor

從出錯log中我們可以看出,ORA-12514 是因為監聽器拒絕了連線。

發生這樣的原因大致有兩種,一個是監聽器沒有開啟,一個是服務名出錯。

考慮到我們昨天程式碼執行正常,所以第二種情況可以排除。

為了證明我們車猜想,我們開啟SQL*Plus,嘗試連線

SQL*Plus: Release 11.2.0.1.0 Production on 星期日 10月 14 09:14:19 2018

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

請輸入使用者名稱:  system
輸入口令:
ERROR:
ORA-12560: TNS: 協議介面卡錯誤

錯誤程式碼更新為:ORA-12560 :TNS :協議介面卡錯誤。

發生這個問題 :原因也有三個。監聽器問題,例項問題,以及登錄檔問題。

登錄檔,如果大家沒有隨意修改,應該不會有錯。

對於前兩者問題,我們則有比較簡單有效的辦法。

開啟服務。

對Oracle開頭的服務全部啟動。

 

再次嘗試連線,成功。

SQL*Plus: Release 11.2.0.1.0 Production on 星期日 10月 14 09:14:19 2018

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

請輸入使用者名稱:  system
輸入口令:
ERROR:
ORA-12560: TNS: 協議介面卡錯誤


請輸入使用者名稱:  system
輸入口令:

連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>