ORACLE -- RAC JDBC 配置


     我們都知道,ORACLE 對外提供服務有 這么幾種方式 THIN CONNECT ,OCI CONNECT ,DATALINK等數據連接方式。

    1.THIN Connect

    在單實例情況下,JDBC Connect String : jdbc:oracle:thin:10.11.1.243:1521/orcl

   其中IP 10.11.1.243:1521 服務器IP地址和Lisener監聽端口。

    orcl 為數據服務名。

    在RAC環境中,JDBC Connect String :  

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)

      (HOST = 10.11.1.231)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)

      (HOST = 10.11.1.232)(PORT = 1521))(LOAD_BALANCE = yes)(FAILOVER = ON)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdb.its)(FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 20)(DELAY = 15))))

      其中HOST為兩個幾點的Lisener的配置。FAILOVER關鍵字 為配置故障切換。Load_balance為負載均衡打開設置。

     SERVICE_NAME 為RAC系統的數據庫實例名。

   以下為JAVA系統的代碼:

  

java demo
 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.ResultSet;
 4 import java.sql.Statement;
 5 
 6 public class Test {
 7 
 8 public static void main(String arg[]) {
 9 try {
10 Class.forName("oracle.jdbc.driver.OracleDriver");
11 String url="jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))(LOAD_BALANCE = yes)(FAILOVER = ON)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = db.domain)(FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 20)(DELAY = 15))))";
12 Connection c = DriverManager.getConnection(url,"aa","aa");
13 Statement s = c.createStatement();
14 ResultSet r = s.executeQuery("select 1 from dual");
15 while(r.next()) {
16 System.out.println(r.getString(1));
17 }
18 }catch(Exception e) {
19 System.out.println(e.toString());
20 }
21 }
22 
23 }

   2.OCI 連接的配置 也就是通常的TNS 配置

      單實例的情況:很簡單 不多做累贅

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.1.243)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

   

      RAC情況:

  

RACDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb1-vip.its)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = racdb)
      (INSTANCE_NAME = racdb1)
    )
  )

RACDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb1-vip.its)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb2-vip.its)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = racdb)
    )
  )

LISTENERS_RACDB =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb1-vip.its)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb2-vip.its)(PORT = 1521))
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =

RACDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb1-vip.its)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb2-vip.its)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = racdb)
    )
  )

LISTENERS_RACDB =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb1-vip.its)(PORT = 1521))    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb2-vip.its)(PORT = 1521))
  )
EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
RACDB2 =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = racdb2-vip.its)(PORT = 1521))    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = racdb)
      (INSTANCE_NAME = racdb2)
    )
  )

 

 

    2.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM