I haven’t done much JDBC tracing yet, but recently for a Kerberos KCM + ANO case I wanted more traces. In the old doc, on google and myoraclesupport, you’ll often see about the _g suffix. Like using ojdbc8_g.jar and -Doracle.jdbc.Trace=true and -Doracle.jdbc.diagnostic.enableLogging=true.
But chance are, you use a recent jar and find no _g one.
Here the explanation: You don’t need it any more! You can find more info about Diagnosability in JDBC in the 26ai doc.
There are two main differences.
- First one, while you can activate it with -D or a config file, it is dynamic parameter that can be activate with a mbean and invoke(“enableLogging”).
From the doc:
Object loader = oracle.jdbc.driver.OracleDriver.class.getClassLoader();
String loaderName = (loader == null ? "nullLoader" : loader.getClass().getName());
String name = loaderName + "@" + Integer.toHexString( (loader == null ? 0 : loader.hashCode()));
System.out.println("name = " + name);
javax.management.ObjectName diagnosticMBeanObjectName = new javax.management.ObjectName("com.oracle.jdbc:type=diagnosability,name=" + name);
javax.management.MBeanServer mbs = java.lang.management.ManagementFactory.getPlatformMBeanServer();
System.out.println("LoggingEnabled = " + mbs.getAttribute(diagnosticMBeanObjectName, "LoggingEnabled"));
mbs.invoke(diagnosticMBeanObjectName, "enableLogging", null, null);
- Second one, you won’t see any sensitive info. If you need to trace security packets, there are two important properties to permit and enable sensitive diagnostics
java -Doracle.jdbc.diagnostic.enableLogging=true -Djava.util.logging.config.file=logging.config -Doracle.jdbc.diagnostic.permitSensitiveDiagnostics=true -Doracle.jdbc.diagnostic.enableSensitiveDiagnostics=true -cp ojdbc17.jar:. MyClass # logging.config oracle.jdbc.level=ALL oracle.jdbc.Trace=true oracle.net.ns.level=255 oracle.net.ano.level=255 handlers=java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level=ALL java.util.logging.ConsoleHandler.formatter=oracle.jdbc.diagnostics.OracleSimpleFormatter Jun 02, 2026 4:00:21 PM oracle.net.ano.CryptoNIONSDataChannel decryptAndChecksum FINEST: U:thread-1 main CONNECTION_ID=Olmo0KoJTF+3MIwBDXwIzQ==,TENANT=MYDB,SQL=select 'OK!' txt from dual,Packet size after decryption 169. Packet Dump : 04 01 01 01 03 00 02 2F |......./| ED 00 00 00 00 00 00 00 |........| 00 00 00 00 00 00 00 00 |........| 00 00 01 00 00 00 00 00 |........| 00 02 2F ED 00 43 4F 52 |../..COR| 41 2D 31 32 32 36 39 3A |A-12269:| 20 63 6C 69 65 6E 74 20 |.client.| 75 73 65 73 20 77 65 61 |uses.wea| 6B 20 65 6E 63 72 79 70 |k.encryp| 74 69 6F 6E 2F 63 72 79 |tion/cry| 70 74 6F 2D 63 68 65 63 |pto-chec| 6B 73 75 6D 6D 69 6E 67 |ksumming| 20 76 65 72 73 69 6F 6E |.version| 0A A1 B6 98 B5 88 1A BA |.......|
Now you should see all network traces without an ojdbc8_g.jar or ojdbc17_g.jar