2011-09-02 32 views
1

我正在嘗試連接到我的遠程oracle數據庫,並且它已被鎖定,並且有一個可以連接的用戶和PC的白名單。但是,當我嘗試連接時,oracle不提供OSUSER,因此我拒絕了。從java程序連接時Oracle不提供osuser

這是怎麼了連接:

public static final String CONNECTION_STRING = "jdbc:oracle:thin:@myip:port:db"; 
public static final java.util.Properties CONNECTION_PROPERTIES = new java.util.Properties(); 
static { 
    CONNECTION_PROPERTIES.setProperty("password","password"); 
    CONNECTION_PROPERTIES.setProperty("user","dbuser"); 
    CONNECTION_PROPERTIES.put("v$session.osuser", System.getProperty("user.name").toString()); 
    try { 
     CONNECTION_PROPERTIES.put("v$session.machine", InetAddress.getLocalHost().getCanonicalHostName()); 
    } catch (UnknownHostException e) { 
     System.out.println("Failed to determine hostname. Attempting with Localhost, this is unlikely to succeed."); 
     e.printStackTrace(); 

     CONNECTION_PROPERTIES.put("v$session.machine", "localhost"); 
    } 
    CONNECTION_PROPERTIES.put("v$session.program", "GDS_Reports"); 
} 

,我作出這樣的連接:

DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); 
    Connection conn = DriverManager.getConnection(GlobalConstants.CONNECTION_STRING, GlobalConstants.CONNECTION_PROPERTIES); 

但表報告這些連接:

MACHINE            OSUSER    DBUSER    FTIME 
---------------------------------------- -------------------- -------------------- ----------------- 
wn7-18tl6m1.domain           dbuser    02-SEP-2011 14:46 
wn7-18tl6m1.domain           dbuser    02-SEP-2011 14:46 
wn7-18tl6m1.domain           dbuser    02-SEP-2011 14:46 
wn7-18tl6m1.domain           dbuser    02-SEP-2011 14:46 
+0

您使用的是哪個版本的oracle jdbc驅動程序? – Mark

+0

我正在使用odbjc14.jar。這有幫助嗎? – Malfist

+0

不,我要求重新getDriverVersion()按照http://download.oracle.com/docs/cd/B19306_01/java.102/b14355/getsta.htm#i1008663 – Mark

回答

1

有些Oracle JDBC驅動程序有一個錯誤,以便OSUSER未設置請參閱fixed bugs in 10.2.0.4,因此您需要升級到較新的版本版本來解決這個問題。

+0

我將我的驅動程序更新到了11.2.0.2.0,而且我仍然遇到同樣的問題。 – Malfist

+0

嘗試不設置v $ session.osuser作爲默認應該是user.name - 也檢查user.name的值 – Mark

-2

Oracle不提供osuser - 它必須由客戶端告知它。你可以將它編碼到Java程序中。 Details here

顯然,因爲你可以做到這一點,所以將它列入白名單是一種毫無意義的安全措施。

+0

dba的設置,而不是我。 – Malfist

+0

該文檔說,用戶名可能被欺騙,而不是Oracel不提供它。 – Mark

相關問題