jdbc:oracle:thin:@//<host>:<port>/<service_name>
Example:
jdbc:oracle:thin:@//192.168.2.1:1521/orcl.example.com
Oracle 11G 不能直接链接 RAC 的 VIP
jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.10)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.20)(PORT = 1521)) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.example.com) (FAILOVER_MODE =(TYPE = SELECT )(METHOD = BASIC)(RETRIES = 120)(DELAY = 5))) )
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=16.50.26.29)(PORT=1521))(LOAD_BALANCE=yes)(FAILOVER=ON)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl.example.com)(FAILOVER_MODE=(TYPE=SESSION)(METHOD=BASIC))))
package cn.netkiller.zabbix; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * Java JDBC Oracle Demo! * */ public class Oracle { String url = null; // 数据库链接地址 String username = null;// 用户名,系统默认的账户名 String password = null;// 你安装时选设置的密码 public void openConfig() { String connectionfig = "jdbc.properties"; Properties properties = new Properties(); try { properties.load(new FileInputStream(connectionfig)); this.url = properties.getProperty("jdbc.url"); this.username = properties.getProperty("jdbc.username"); this.password = properties.getProperty("jdbc.password"); } catch (FileNotFoundException e) { System.out.println( e.getMessage() + " Working Directory = " + System.getProperty("user.dir") + "/" + connectionfig); } catch (IOException e) { System.out.println(e.getMessage()); } if (this.url == null || this.username == null || this.password == null) { System.out.println("This Propertie file is invalid"); // throw new Exception(""); } } public void testOracle() { Connection connection = null;// 创建一个数据库连接 ResultSet result = null;// 创建一个结果集对象 Statement statement = null; try { Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序 connection = DriverManager.getConnection(this.url, this.username, this.password); String sql = "select current_date from dual"; statement = connection.createStatement(); result = statement.executeQuery(sql); result.next(); System.out.printf("%s %s", result.getDate(1), result.getTime(1)); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } catch (SQLException e) { System.out.println(e.getMessage()); } finally { try { if (result != null) result.close(); if (connection != null) connection.close(); } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) { Oracle oracle = new Oracle(); oracle.openConfig(); oracle.testOracle(); } }
直接连接 RAC VIP 提示
java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
解决方案
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=16.50.26.29)(PORT=1521))(LOAD_BALANCE=yes)(FAILOVER=ON)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl.example.com)(FAILOVER_MODE=(TYPE=SESSION)(METHOD=BASIC))))
检查 /srv/jdk1.8.0_60/jre/lib/ext/ 是否有jdbc包,然后运行下面程序检查是否已经载入
# java -verbose:class JdbcTest | grep jdbc [Loaded oracle.jdbc.driver.OracleDriver from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleDriver from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleDriverExtension from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleDriver$1 from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.ClassRef from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.ClassRef$XMLTypeClassRef from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.ClassRef$Locale from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.ClassRef$LocaleCategoryClassRef from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.DiagnosabilityMXBean from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleDiagnosabilityMBean from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.DatabaseError from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleSQLException from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.SQLStateMapping from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.SQLStateMapping$Tokenizer from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.Message from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.Message11 from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleConnection from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.OracleConnection from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.ClientDataSupport from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleConnectionWrapper from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleConnection from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.PhysicalConnection from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.T4CDriverExtension from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OraclePreparedStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleCallableStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.OracleStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.OraclePreparedStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.OracleCallableStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.ScrollRsetStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OraclePreparedStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleCallableStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.T4CCallableStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.T4CStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.T4CPreparedStatement from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleBufferedStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleInputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.T4CInputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.BfileDBAccess from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.BlobDBAccess from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.ClobDBAccess from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.T4CConnection from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.OracleDatumWithConnection from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleClob from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.OracleClob from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.Datum from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.DatumWithConnection from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.CLOB from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleNClob from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.OracleNClob from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.NCLOB from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleSQLPermission from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.AdditionalDatabaseMetaData from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleDatabaseMetaData from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleDatabaseMetaData from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleSavepoint from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.PhysicalConnection$2 from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.aq.AQMessage from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.NTFRegistration from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.NotificationRegistration from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.dcn.DatabaseChangeRegistration from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.NTFDCNRegistration from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleTypeMetaData from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.ObjectData from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.ORAData from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleData from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.TypeDescriptor from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleTypeMetaData$Struct from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.StructDescriptor from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.OracleTypeMetaData$Array from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.sql.ArrayDescriptor from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleClobInputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleBlobInputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleConversionInputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleConversionReader from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.NetException from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.aq.AQNotificationRegistration from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.NTFAQRegistration from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleBlobOutputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleClobOutputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleClobReader from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.OracleClobWriter from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.internal.XSEvent from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.NTFXSEvent from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.Communication from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.CRC64 from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.NTFManager from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.jdbc.driver.PhysicalConnection$1 from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.SQLnetDef from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.NSProtocol from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.NetOutputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.nl.NLException from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.NetInputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.SessionAtts from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.nl.NVFactory from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.nl.InvalidSyntaxException from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.nl.NVNavigator from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.resolver.AddrResolution from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.TNSAddress.SOException from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.ClientProfile from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.nt.ConnStrategy from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.TNSAddress.SchemaObjectFactoryInterface from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.resolver.NavSchemaObjectFactory from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.TNSAddress.SchemaObject from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.resolver.NavSchemaObject from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.TNSAddress.ServiceAlias from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.resolver.NavServiceAlias from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.nl.NVTokens from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.nl.UninitializedObjectException from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.nl.NVPair from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.TNSAddress.Description from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.resolver.NavDescription from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.TNSAddress.Address from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.resolver.NavAddress from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.jdbc.TNSAddress.DescriptionList from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.resolver.NavDescriptionList from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.nt.ConnOption from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.nt.NTAdapter from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.nt.TcpNTAdapter from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.Packet from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.DataPacket from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.DataDescriptorPacket from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.BreakNetException from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ano.Ano from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ano.AnoNetInputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ano.AnoNetOutputStream from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ano.Service from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ano.AnoComm from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ano.SupervisorService from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ano.AuthenticationService from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ano.EncryptionService from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.aso.g from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ano.DataIntegrityService from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.aso.d from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.aso.i from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.aso.b from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.ConnectPacket from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar] [Loaded oracle.net.ns.RedirectPacket from file:/srv/jdk1.8.0_60/jre/lib/ext/ojdbc6.jar]
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。