方式一:
java.sql.Connection conn = DriverManager.getConnection(“jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=orcl)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))”,”scott”,”tiger”);
方式二:
java.sql.Connection conn = DriverManager.getConnection(“jdbc:oracle:thin:@orcl:1521/orcl”,”scott”,”tiger”);
前面orcl为数据库域名
使用下面脚本将客户端连接执行过程打印
cat Demo.javaimport java.sql.DriverManager;import java.util.logging.*;import javax.management.*;import java.lang.management.*;public class Demo{public static void main(String[] args) throws Exception{Class.forName("oracle.jdbc.driver.OracleDriver");enableOracleLogging();// 方法一java.sql.Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xiamen)))","scott","tiger");// 方法二//java.sql.Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@orcl:1521/orcl","scott","tiger");java.sql.Statement stmt = conn.createStatement();java.sql.ResultSet rs = stmt.executeQuery("select instance_name from v$instance");while(rs.next()){System.out.println(rs.getString(1));}}private static void enableOracleLogging(){try {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);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));}catch(Exception e) {e.printStackTrace();}}}
编译:javac Demo.java如果报错,换一个办法编译[root@orcl ~]# javac -versionjavac 1.8.0_301使用ojdbc6进行连接java -classpath /u01/app/oracle/product/11.2.0/db_1/jdbc/lib/ojdbc6_g.jar:./ Demo
方法一的日志:(直接将完整字符串发送到数据库,让数据库的dns进行解析)
如果数据库服务器上没有配置DNS解析,就会报ORA-12516的错误
Aug 18, 2021 2:21:45 PM oracle.net.ns.Packet sendTRACE_20: 3F0EE7CB Debug:00 E3 00 00 01 00 00 00 |........|01 36 01 2C 0C 41 20 00 |.6.,.A..|7F FF 4F 98 00 00 00 01 |..O.....|00 A9 00 3A 00 00 00 00 |...:....|81 81 00 00 00 00 00 00 |........|00 00 00 00 00 00 00 00 |........|00 00 00 00 00 00 00 00 |........|00 00 28 44 45 53 43 52 |..(DESCR|49 50 54 49 4F 4E 3D 28 |IPTION=(|41 44 44 52 45 53 53 5F |ADDRESS_|4C 49 53 54 3D 28 41 44 |LIST=(AD|44 52 45 53 53 3D 28 50 |DRESS=(P|52 4F 54 4F 43 4F 4C 3D |ROTOCOL=|54 43 50 29 28 48 4F 53 |TCP)(HOS|54 3D 6F 72 63 6C 29 28 |T=orcl)(|50 4F 52 54 3D 31 35 32 |PORT=152|31 29 29 29 28 43 4F 4E |1)))(CON|4E 45 43 54 5F 44 41 54 |NECT_DAT|41 3D 28 43 49 44 3D 28 |A=(CID=(|50 52 4F 47 52 41 4D 3D |PROGRAM=|4A 44 42 43 20 54 68 69 |JDBC.Thi|6E 20 43 6C 69 65 6E 74 |n.Client|29 28 48 4F 53 54 3D 5F |)(HOST=_|5F 6A 64 62 63 5F 5F 29 |_jdbc__)|28 55 53 45 52 3D 6F 72 |(USER=or|61 63 6C 65 29 29 28 53 |acle))(S|45 52 56 49 43 45 5F 4E |ERVICE_N|41 4D 45 3D 6F 72 63 6C |AME=orcl|29 29 29 |))) |Aug 18, 2021 2:21:45 PM oracle.net.ns.Packet send
方法二的日志:(在应用端解析完后,再将IP发送给数据库)
Aug 18, 2021 2:28:05 PM oracle.net.ns.Packet sendTRACE_20: 7DC36524 Debug:01 1B 00 00 01 00 00 00 |........|01 36 01 2C 0C 41 20 00 |.6.,.A..|7F FF 4F 98 00 00 00 01 |..O.....|00 E1 00 3A 00 00 00 00 |...:....|81 81 00 00 00 00 00 00 |........|00 00 00 00 00 00 00 00 |........|00 00 00 00 00 00 00 00 |........|00 00 28 44 45 53 43 52 |..(DESCR|49 50 54 49 4F 4E 3D 28 |IPTION=(|41 44 44 52 45 53 53 3D |ADDRESS=|28 50 52 4F 54 4F 43 4F |(PROTOCO|4C 3D 54 43 50 29 28 48 |L=TCP)(H|4F 53 54 3D 31 39 32 2E |OST=192.|31 36 38 2E 32 34 37 2E |168.247.|31 37 31 29 28 50 4F 52 |171)(POR|54 3D 31 35 32 31 29 29 |T=1521))|28 43 4F 4E 4E 45 43 54 |(CONNECT|5F 44 41 54 41 3D 28 43 |_DATA=(C|49 44 3D 28 50 52 4F 47 |ID=(PROG|52 41 4D 3D 4A 44 42 43 |RAM=JDBC|20 54 68 69 6E 20 43 6C |.Thin.Cl|69 65 6E 74 29 28 48 4F |ient)(HO|53 54 3D 5F 5F 6A 64 62 |ST=__jdb|63 5F 5F 29 28 55 53 45 |c__)(USE|52 3D 6F 72 61 63 6C 65 |R=oracle|29 29 28 53 45 52 56 49 |))(SERVI|43 45 5F 4E 41 4D 45 3D |CE_NAME=|6F 72 63 6C 29 28 43 49 |orcl)(CI|44 3D 28 50 52 4F 47 52 |D=(PROGR|41 4D 3D 4A 44 42 43 20 |AM=JDBC.|54 68 69 6E 20 43 6C 69 |Thin.Cli|65 6E 74 29 28 48 4F 53 |ent)(HOS|54 3D 5F 5F 6A 64 62 63 |T=__jdbc|5F 5F 29 28 55 53 45 52 |__)(USER|3D 6F 72 61 63 6C 65 29 |=oracle)|29 29 29 |))) |Aug 18, 2021 2:28:05 PM oracle.net.ns.Packet send
