如何啟動JDBC Debug模式,打印JDBC診斷日誌
1.下載Debug版本jar包 首先要下載一個Debug版本的JDBC jar包,Debug版本的jar包命名形式為jdbcX_g.jar(如下圖所示),如Oracle11g的Debug版本的jar包為jdbc6_g.jar。點擊這裏下載:https://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
2.啟動Logging模式
第一種方式:設置運行環境變量java -Doracle.jdbc.Trace=true ...(elipse中run->run configurations->arguments一欄)
第二種方式:在程序中控製(建議采用這種方式)
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
String loader = Thread.currentThread().getContextClassLoader().toString().replaceAll("[,=:\"]+", "");
ObjectName pattern = new ObjectName("com.oracle.jdbc:type=diagnosability,name=" + loader);
ObjectName diag = ((ObjectName[]) (mbs.queryNames(pattern, null).toArray(new ObjectName[0])))[0];
mbs.setAttribute(diag, new Attribute("LoggingEnabled", true));
System.out.println("LoggingEnabled = " + mbs.getAttribute(diag, "LoggingEnabled"));
如果用的是Oracle 10g,直接執行:
/**oracle 10g 啟動方法*/ oracle.jdbc.driver.OracleLog.setTrace(true); // enable logging oracle.jdbc.driver.OracleLog.setTrace(false); // disable logging
3.配置log文件
jdbc使用的是java.util.logging包中的Logger對象打印log。
/**配置log文件*/
Handler fh = new FileHandler("./oracle_jdbc_log.log");
fh.setLevel(Level.ALL);
fh.setFormatter(new SimpleFormatter());
Logger.getLogger("").addHandler(fh);
Logger.getLogger("").setLevel(Level.ALL);
4.下麵給大家一個完成的Demo
import javax.management.Attribute; import javax.management.AttributeNotFoundException; import javax.management.InstanceNotFoundException; import javax.management.InvalidAttributeValueException; import javax.management.MBeanException; import javax.management.MBeanServer; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.ReflectionException;
public void run() throws SQLException {
DriverManager.registerDriver(new OracleDriver());
//需在加載OracleDriver之後開啟log
enableOracleLogging();
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
try {
conn = getConnection();
System.out.println("Connection retrieved..");
stmt = conn.createStatement();
rset = stmt.executeQuery("select empno from emp");
while (rset.next()) {
System.out.println(rset.getInt(1));
}
} catch (SQLException sqle) {
sqle.printStackTrace();
} finally {
if (rset != null) {
rset.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}
public static void enableOracleLogging() {
try {
/** 配置log文件 */
Handler fh = new FileHandler("./oracle_jdbc_log.log");
fh.setLevel(Level.ALL);
fh.setFormatter(new SimpleFormatter());
Logger.getLogger("").addHandler(fh);
Logger.getLogger("").setLevel(Level.ALL);
/** oracle 11g 啟動方法 */
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
String loader = Thread.currentThread().getContextClassLoader().toString().replaceAll("[,=:\"]+", "");
ObjectName pattern = new ObjectName("com.oracle.jdbc:type=diagnosability,name=" + loader);
ObjectName diag = ((ObjectName[]) (mbs.queryNames(pattern, null).toArray(new ObjectName[0])))[0];
mbs.setAttribute(diag, new Attribute("LoggingEnabled", true));
System.out.println("LoggingEnabled = " + mbs.getAttribute(diag, "LoggingEnabled"));
/** oracle 10g 啟動方法 */
// oracle.jdbc.driver.OracleLog.setTrace(true); // enable logging
// oracle.jdbc.driver.OracleLog.setTrace(false); // disable logging
} catch (Exception e) {
e.printStackTrace();
}
}
最後更新:2017-04-03 07:57:17
上一篇:
HTML5學習資料推薦
下一篇:
tomcat的安裝使用
多點最優路徑規劃 - (商旅問題,拚車,餐飲配送,包裹配送,包裹取件,回程單)
未能及其遇見某種現象者為
蓋茨表示Win8是未來微軟操作係統的基礎
Swift學習之十三:函數(Functions)
Oracle Partition 分區詳細總結
Virtual PC虛擬機怎樣退出全屏模式
《雲數據管理:挑戰與機遇》2.1.3 互斥和仲裁集
ubuntu12.04 64位係統配置jdk1.6和jdk-6u20-linux-i586.bin下載地址
oracle中報ora-01033:oracle initializationg or shutdown in progress錯
《機器人自動化:建模、仿真與控製》一一2.3仿真