java oracle thin 和 oci 連接配接方式實作多資料庫的故障切換
一、thin方式
該種方式簡便易用非經常見。
當中URL為
jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=10.132.111.14)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=busi_db)))
當中LOAD_BALANCE=on表示負載開啟,java以随機的方式建立會話連接配接;
LOAD_BANLANCE=off表示負載關閉,java以順序的方式建立會話連接配接,僅僅有
當第一個資料庫出現問題無法連接配接時才會選擇第二個資料庫進行會話連接配接。
二、oci方式
windows系統下:
1. 詳細程式部署的本機須要安裝oracleclient:路徑為ORALC_HOME;
2. 在系統環境變量PATH追加 ;%ORACLE_HOME%/bin 。
3. 在系統環境變量中加入NLS_LANG系統環境變量,其字元集與資料庫及client一緻如:NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
4. 若系統環境變量中配置了CLASSPATH,則在該變量後追加;%ORACLE_HOME%/lib
5. oracleclient裡自帶的jdbc驅動(ORACLE_HOME/jdbc/lib/ojdbc*.jar)到自己的project項目。
unix or linux系統下:
1. 詳細程式部署的本機須要安裝oracleclient:路徑為ORALC_HOME;
2. 系統環境變量PATH設定例如以下:
PATH=$ORACLE_HOME/bin:$PATH
export PATH
3. 系統環境變量LD_LIBRARY_PATH設定例如以下:
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
4. 在系統環境變量中設定NLS_LANG變量,其字元集與資料庫及client一緻如:
NLS_
export NLS_LANG
5. oracleclient裡自帶的jdbc驅動(ORACLE_HOME/jdbc/lib/ojdbc*.jar)考到自己的項目中進而保持與資料庫的一緻。否則easy出現無法連接配接本地方法的異常。
在此列舉一個oracleclientTNSNAMES.ORA檔案的配置例如以下:
HA_DB =
(DESCRIPTION_LIST =
(LOAD_BALANCE = on)
(FAILOVER = on)
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE=OFF)
(FAILOVER=ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = db1)
(INSTANCE_NAME = db1)
(FAILOVER_MODE=(TYPE=session)(METHOD=basic)(RETRIES=4)(DELAY=1))
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE=OFF)
(FAILOVER=ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.132.111.14)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = db2)
(INSTANCE_NAME = db2)
(FAILOVER_MODE=(TYPE=session)(METHOD=basic)(RETRIES=4)(DELAY=1))
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE=OFF)
(FAILOVER=ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.112.11.161)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = db3)
(INSTANCE_NAME = db3)
(FAILOVER_MODE=(TYPE=session)(METHOD=basic)(RETRIES=4)(DELAY=1))
)
)
)
關于當中的配置參數作用請查相關資料
然後Java程式jdbc oci連接配接時,url寫成java:oracle:oci:@ha_db就可以。