JDBC 连接 Oracle 11gR2 集群环境


使用Oracle 11gR2新组件 scan 方式连接(假设scan_vip为192.168.100.217)
String url = "jdbc:oracle:thin:@192.168.100.217:1521/prod"
也可以使用 11gr2以前vip方式连接
String url = "jdbc:oracle:thin:@(DESCRIPTION ="
              + "(ADDRESS_LIST ="
              + "(ADDRESS=(PROTOCOL=TCP)(HOST=el1)(PORT=1521))"
              + "(ADDRESS=(PROTOCOL=TCP)(HOST=el2)(PORT=1521))"
              + "(LOAD_BALANCE = yes)"
              + ")" + "(CONNECT_DATA=" + "(SERVER=DEDICATED)"
              + "(SERVICE_NAME=prod )" + ")" + ")";

注:jdbc thin使用 11gr2以前 vip方式连接, host中不可以直接使用 ip,否则会出现NL Exception was generated 错误。需要使用别名。并且在 hosts文件中定义。

例如本例中两台机器的 vip为 192.168.100.123和 192.168.100.124并且,别名为 el1, el2。那么在 hosts文件中需要有下面两行
192.168.100.123 el1
192.168.100.124 el2

host文件位置:
Linux|Unix:/etc/hosts
Windows:$系统盘\WINDOWS\system32\drivers\etc\hosts

下面是一个完整的实例:

  1. package jdbc.dex.com; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5. import java.sql.ResultSet; 
  6. import java.sql.SQLException; 
  7. import java.sql.Statement; 
  8.  
  9. import org.junit.Test; 
  10.  
  11. public class JDBC1 { 
  12.      
  13.     public static void main(String[] args){ 
  14.         String urlVip = "jdbc:oracle:thin:@(DESCRIPTION ="   
  15.                 + "(ADDRESS_LIST ="   
  16.                 + "(ADDRESS=(PROTOCOL=TCP)(HOST=el1)(PORT=1521))"   
  17.                 + "(ADDRESS=(PROTOCOL=TCP)(HOST=el2)(PORT=1521))"   
  18.                 + "(LOAD_BALANCE = yes)" 
  19.                 + ")" + "(CONNECT_DATA=" + "(SERVER=DEDICATED)"   
  20.                 + "(SERVICE_NAME=prod )" + ")" + ")";   
  21.          
  22.         String urlScan1="jdbc:oracle:thin:@(DESCRIPTION ="
  23.                     "(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.217)(PORT = 1521))"
  24.                     "(CONNECT_DATA ="
  25.                       "(SERVER = DEDICATED)"
  26.                       "(SERVICE_NAME = prod)"
  27.                     ")"
  28.                   ")"
  29.          
  30.         String urlScan2="jdbc:oracle:thin:@192.168.100.217:1521/prod" ; 
  31.         String driver="oracle.jdbc.driver.OracleDriver" ; 
  32.         Connection con ; 
  33.         Statement st ; 
  34.         ResultSet rs ; 
  35.         try { 
  36.             Class.forName(driver) ; 
  37.             con = DriverManager.getConnection(urlVip,"dexter","xiaojun"); 
  38.             st=con.createStatement() ; 
  39.             rs=st.executeQuery("select 2 from dual ") ; 
  40.             while(rs.next()) { 
  41.                 System.out.println(rs.getString(1)); 
  42.             } 
  43.         } catch (ClassNotFoundException e) { 
  44.             // TODO Auto-generated catch block  
  45.             e.printStackTrace(); 
  46.         } catch (SQLException e) { 
  47.             // TODO Auto-generated catch block  
  48.             e.printStackTrace(); 
  49.         } 
  50.          
  51.     } 

相关内容