我对使用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)?
答案 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 [..]