c3p0和jdbcTemplate配置oracle集羣RAC記錄

PERAC =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.137)(PORT = 1521))     (ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.138)(PORT = 1521))     (LOAD_BALANCE = yes)     (FAILOVER = ON)     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = pe)       (FAILOVER_MODE =         (TYPE = SELECT)         (METHOD = BASIC)         (RETRIES=180)         (DELAY=5)       )     )   ) 要我在程序配置好這一串鏈接,其實很簡單。只須要把上面這一串放在之前只放置一條url鏈接的url標籤就能夠了。之前配置的時候只是一個地址。如今有兩個,須要用上面那一串。 配置c3p0沒問題,以下: <property name="connection.url">jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.137)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.138)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = pe)))</property> 但有些操做用到的是Spring的jdbcTemplate來作的。若是我想c3p0同樣把兩個地址寫在url標籤裏。會報錯,以下: Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=169870336)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='(ADDRESS=(PROTOCOL=TCP)(HOST=131.197.17.138)(PORT=1521))'))(ERROR=(CODE=305)(EMFI=1)))) 剛開始我覺得是138這個機器連不上,由於它提示的是138,因而我只用了137的機器去鏈接,結果仍是報這個錯,最後換成了138去連,放而沒問題了!不過不能同時寫137和138,其實只用到了一個地址。哪怕寫一個地址的時候。也要這樣寫: <value>jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.138)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA = (SERVICE_NAME=pe)))</value> 不能簡單的url+端口+sid,否則會報錯: Could not get JDBC Connection; nested exception is java.sql.SQLException: Io 異常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169870336)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) 我還在嘗試,如何才能在spring的jdbcTemplate配置雙地址。難道是是由於org.springframework.jdbc.datasource.DriverManagerDataSource有關?要改爲鏈接池?我嘗試下吧!反正以上是能夠用了。 最後問題解決了!其實直接把鏈接串寫在url標籤就能夠了。只須要你的數據庫驅動是最新的!這個很重要。我以前有的是class12.jar,用這個驅動的話很不穩定,時好時壞,因而換了ojdbc.jar,好傢伙!怎麼折騰都沒事!問題解決! 如下是網上轉載的,留檔學習: 順便記錄下配置連接字符串的參數: address後面就是鏈接的IP和端口號沒什麼說的。load_balance=yes;表示是否負載均衡。server = dedicated;表示專用服務器模式,感受能夠去掉。service_name=orcl;要操做數據庫的服務名。TYPE = SESSION表示當一個鏈接好的會話的實例發生故障,系統會自動將會話切換到其餘可用的實例,前臺應用無須再度發起鏈接,但會話正在執行的SQL 須要從新執行。METHOD = BASIC表示初始鏈接就鏈接一個接點,他還有個選項是preconnect,表示初始鏈接全部的接點。RETRIES:重試次數。DELAY:重試的延 遲(以秒爲單位)。 而且集羣中若是ORACLE服務器的LISTENER配置的是本機的機器名,則應用方面最好把winnt下的system32\drivers\etc\hosts文件更改一下。最後加上IP對應的機器名,好比: 10.37.27.111 linux1-vip 10.37.27.112 linux2-vip
相關文章
相關標籤/搜索