对于JDBC thin client连接,ORA-28040 and SQLNET.ALLOWED_LOGON_VERSION_CLIENT的问题

目标:

对于JDBC THIN clients来说,SQLNET.ALLOWED_LOGON_VERSION_CLIENT有等价物么?

或者说

当使用JDBC THIN driver时,怎么解决ORA-28040: No matching authentication protocol error问题?


解决方案:

当使用JDBC Thin client时,The property “oracle.jdbc.allowedLogonVersion”可以被设置来配置Oracle client需要的最低的authentication protocol。

该参数值为12a,12,11,10等等,与SQLNET.ALLOWED_LOGON_VERSION_CLIENT的取值一样。JDBC属性是在12.1 版本中引入的。

请注意:SQLNET.ALLOWED_LOGON_VERSION_CLIENT 仅仅对OCI client生效。

使用 PBKDF2的密码验证器需要JDK8(Also the latest password verifier which uses PBKDF2 requires JDK8.)


ALLOWED_LOGON_VERSION_SERVER 是一个server端的参数,它指定了server端需要的最低的authentication protocol,因此适用于连接到db的任何的client(including JDBC Thin and OCI)

例子:

OracleDataSource ods = new OracleDataSource();
ods.setURL(jdbcURL);
ods.setUser("scott");
ods.setPassword("tiger");
Properties props = new Properties();
props.put("oracle.jdbc.allowedLogonVersion", 12);
ods.setConnectionProperties(props);
Connection con = ods.getConnection();