如何启动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仿真