2012-11-06 35 views
1
import java.sql.SQLException; 
import oracle.jdbc.pool.OracleDataSource; 
import java.sql.Statement; 
import java.util.Properties; 
import oracle.jdbc.OracleConnection; 

public class Test { 

static final String url2= "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP 

(HOST=192.168.1.171)(PORT=5521))"+"(CONNECT_DATA =(SERVICE_NAME = rdbms)))"; 

public static void main(String[] args) throws SQLException { 

      OracleDataSource ds = new OracleDataSource(); 
      Properties prop = new Properties(); 
      prop.setProperty("user","system"); 
      prop.setProperty("password","manager"); 
      prop.setProperty("internal_logon","sysdba"); 
      prop.setProperty("prelim_auth","true"); 
      ds.setConnectionProperties(prop); 
      ds.setURL(url2); 
      OracleConnection conn = (OracleConnection)ds.getConnection(); 
      conn.startup(OracleConnection.DatabaseStartupMode.NO_RESTRICTION); 
      conn.close(); 
    } 
} 

在11g中啓動SQL數據庫越來越無法通過jdbc.Getting的Java SQL例外

Exception in thread "main" 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 

任何人都可以在這方面幫助?

回答

0

你必須明白,當涉及到異常,多次JDBC只是作爲一個包裝錯誤發生在數據庫端,
或傳播的驅動程序特定的(即 - PostgreSQL JDBC驅動,Oracle JDBC驅動程序)的特定錯誤。
你應該谷歌的錯誤,你會發現我相信是一個清晰的解釋:
http://ora-12514.ora-code.com/
如果您看到其中一條建議,則需要幾秒鐘後重試並重新連接。

+0

:哎呦!我遲到了19秒:) –

1

原因:
監聽器接收到建立到數據庫或其他服務的連接的請求。偵聽器接收到的連接描述符爲服務(通常是數據庫服務)指定服務名稱,該服務尚未動態向偵聽器註冊,或者尚未爲偵聽器靜態配置。這可能是一種臨時情況,例如在偵聽器啓動之後,但在數據庫實例向偵聽器註冊之前。

操作: - 稍等片刻,嘗試再次連接。

  • 檢查其服務目前被聽者知道通過執行程序:lsnrctl服務

  • 檢查中使用的網絡服務名的連接描述符的SERVICE_NAME參數指定由聽衆已知的服務。

  • 如果使用簡單連接命名連接標識符,請檢查指定的服務名稱是否是偵聽器已知的服務。

  • 檢查listener.log文件中的事件。