I'm connecting to an Oracle 11g database from a Java application. I'm getting the following exception:
Caused by: java.sql.SQLException: Connection property: format error: Property is 'v$session.program' and value is '<My Maven application's name>'
at oracle.jdbc.driver.T4CConnection.validateConnectionProperties(T4CConnection.java:4540)
at oracle.jdbc.driver.PhysicalConnection.readConnectionProperties(PhysicalConnection.java:2345)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:517)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)
at oracle.ucp.jdbc.DataSourceConnectionFactoryAdapter.createConnection(DataSourceConnectionFactoryAdapter.java:100)
How do I fix this?
We figured it out. Our application name was one character too long: it was 49 characters instead of 48 or fewer.
Here's a list of the v$session properties and their length limits:
v$session.machine: 64v$session.iname: no limitv$session.ename: no limitv$session.process: 24v$session.program: 48v$session.terminal: 30v$session.osuer: 30Also, none of the properties can match this regex: .*[\00\(\)].*, which I think means no parentheses.
If you are getting the error and want to see the code, just add an exception breakpoint in your IDE for SQLException. You should end up in a class called T4CConnection.class.
Here's the decompiled code for the method, validateConnectionProperties():
void validateConnectionProperties() throws SQLException {
super.validateConnectionProperties();
String var1 = ".*[\\00\\(\\)].*";
SQLException var2;
if(this.thinVsessionOsuser == null || !this.thinVsessionOsuser.matches(var1) && this.thinVsessionOsuser.length() <= 30) {
if(this.thinVsessionTerminal == null || !this.thinVsessionTerminal.matches(var1) && this.thinVsessionTerminal.length() <= 30) {
if(this.thinVsessionMachine != null && (this.thinVsessionMachine.matches(var1) || this.thinVsessionMachine.length() > 64)) {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.machine\' and value is \'" + this.thinVsessionMachine + "\'");
var2.fillInStackTrace();
throw var2;
} else if(this.thinVsessionProgram == null || !this.thinVsessionProgram.matches(var1) && this.thinVsessionProgram.length() <= 48) {
if(this.thinVsessionProcess == null || !this.thinVsessionProcess.matches(var1) && this.thinVsessionProcess.length() <= 24) {
if(this.thinVsessionIname != null && this.thinVsessionIname.matches(var1)) {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.iname\' and value is \'" + this.thinVsessionIname + "\'");
var2.fillInStackTrace();
throw var2;
} else if(this.thinVsessionEname != null && this.thinVsessionEname.matches(var1)) {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.ename\' and value is \'" + this.thinVsessionEname + "\'");
var2.fillInStackTrace();
throw var2;
}
} else {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.process\' and value is \'" + this.thinVsessionProcess + "\'");
var2.fillInStackTrace();
throw var2;
}
} else {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.program\' and value is \'" + this.thinVsessionProgram + "\'");
var2.fillInStackTrace();
throw var2;
}
} else {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.terminal\' and value is \'" + this.thinVsessionTerminal + "\'");
var2.fillInStackTrace();
throw var2;
}
} else {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.osuser\' and value is \'" + this.thinVsessionOsuser + "\'");
var2.fillInStackTrace();
throw var2;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With