Oracle (und sicher auch andere DBMS) bieten die Möglichkeit, für Sessions einen Programm-Namen zu hinterlegen. Dies ist insbesondere beim Debugging hilfreich. Oder um den Schuldigen zu finden, der eine Verbindung nicht wieder ordentlich geschlossen hat. Die JDBC API scheint hierfür keine Möglichkeit zu kennen, man muss den entsprechenden Parameter daher in einer Properties ablegen und beim Erzeugen der Connection mitgeben:
public static void main(String[] args) throws SQLException {
Properties connectionProps = new Properties();
connectionProps.put("v$session.program", "ProgrammName" );
connectionProps.put("user", "scott");
connectionProps.put("password", "tiger");
Connection con = null;
try {
Class<?> driverClass = Class.forName("oracle.jdbc.driver.OracleDriver");
DriverManager.registerDriver((Driver) driverClass.newInstance());
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:devel", connectionProps);
// ...
} catch (Exception e) {
e.printStackTrace();
} finally {
if(null != con) {
con.close();
}
}
}
Ein Select auf die v$session sollte jetzt solange die Connection offen einen Eintrag mit 'ProgrammName' liefern.Das ist natürlich auch nur geklaut ;)
0 comments:
Post a Comment