Oracle JDBC客户端Net跟踪

时间:2017-03-09 20:00:52

标签: java oracle logging jdbc

我对使用Oracle JDBC瘦客户端生成Oracle网络跟踪文件感兴趣。特别是,我对网络加密协商的细节感兴趣,并验证用于连接的特定算法。

从其他Oracle客户端(例如SQL * Plus),可以通过使用以下内容更新$ORACLE_HOME/network/admin/sqlnet.ora文件来完成此操作:

DIAG_ADR_ENABLED=off
TRACE_DIRECTORY_CLIENT=/tmp
TRACE_FILE_CLIENT=nettrace
TRACE_LEVEL_CLIENT=16

这会产生一个跟踪文件,其中包含我感兴趣的所有细节,例如

(2017502720) [09-MAR-2017 13:43:25:133] na_tns:     Authentication is not active
(2017502720) [09-MAR-2017 13:43:25:133] na_tns:     Encryption is active, using AES256
(2017502720) [09-MAR-2017 13:43:25:133] na_tns:     Crypto-checksumming is active, using SHA1

我想从我的Java应用程序中完成同样的事情。

我已经通过执行以下操作在我的应用中启用了Oracle跟踪:

  • 在类路径中包含ojdbc7_g.jar
  • 使用logging.properties
  • 创建oracle.level = ALL文件
  • 指定以下系统属性:-Doracle.jdbc.Trace=true -Djava.util.logging.config.file=/path/to/logging.properties

这提供了详细的Oracle jdbc日志记录,包括一些oracle.net日志消息,但不包含与sqlnet.ora中配置的跟踪相同的详细内容(具体来说,例如,我无法看到正在使用加密算法。)

如何从Oracle JDBC应用程序中获取此详细的网络跟踪?是否有任何相应的瘦客户端连接属性可以提供给我的OracleDataSource(我没有注意到任何相关的oracle.jdbc.OracleConnection常量,这是我设置一些通常在sqlnet中指定的其他属性的地方.ORA)?

1 个答案:

答案 0 :(得分:0)

这是一个旧的白皮书,但也许仍然可以像这样为瘦客户端启用它:

https://www.oracle.com/technetwork/database/enterprise-edition/11-2.pdf

[..] 并非所有问题都可以通过查看 JDBC 日志消息来解决。对于某些人来说,查看驱动程序与服务器交换的网络数据包会很有帮助。 OCI C 库具有提供此信息的网络跟踪模式。这是有据可查的,可以在 OCI 文档中找到。 Thin 驱动程序不使用 OCI C 库,因此在您使用 Thin 驱动程序时没有帮助。从 Oracle 数据库 11.2 版开始,OracleJDBC 瘦驱动程序包括网络跟踪功能。与所有其他 JDBC 日志记录一样,它使用 java.util.logging。为了生成网络级跟踪信息,请将以下行添加到您的配置文件中:oracle.net.ns.level = FINEST [..]