Oracle RAC 客戶端FAILOVER LOADBALANCE特性的配置方法

尛樣兒發表於2010-03-31

RAC客戶端配置常見的報錯:
ORA-12545: 因目標主機或物件不存在,連線失敗。


1    RAC 客戶端配置方法

1.1    配置hosts
修改C:\Windows\System32\drivers\etc\hosts(Windows)

/etc/hosts(Linux|AIX)

100.51.41.131 bwgl_db1
100.51.41.132 bwgl_db2
100.51.41.133 bwgl_db1-vip
100.51.41.134 bwgl_db2-vip

bwgl_db1,bwgl_db2一定要和節點伺服器的機器名相同,bwgl_db1-vip,bwgl_db2-vip和伺服器端配置的VIP名稱相同。

1.2    配置TNSNAMES.ORA
修改$ORACLE_HOME/network/admin/tnsnames.ora(在手動修改tnsnames.ora請注意不要用TAB鍵,都是空格)
FZFWDB =
  (DESCRIPTION =
    (FAILOVER = on)
    (LOAD_BALANCE = yes)
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = bwgl_db1-vip)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = bwgl_db2-vip)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = fzfwdb)
      (FAILOVER_MODE=

          (TYPE = select)
          (METHOD = basic)
          (RETRIES = 180)
          (DELAY = 5)
      )
    )
  )

這裡需要注意的是雖然配置只用到了vip地址,而且也只需要用到vip地址就夠了,但是依然要在hosts檔案中配置public ip的對映關係,否則依然會報錯。因為Oracle伺服器很有可能返回public 的名稱讓客戶端來重新連線,所以需要此public的配置。

2    JDBC叢集負載均衡的配置方法
jdbc:oracle:thin:@(DESCRIPTION =(FAILOVER=on)(LOAD_BALANCE=yes)(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = bwgl_db1-vip)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = bwgl_db2-vip)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = FZFWDB)))

bwgl_db1-vip bwgl_db2-vip 不可以用IP代替,需要在JDBC客戶端配置hosts。

從效能的角度來看,在RAC環境中,更應該使用service+server TAF來提供連線。這樣拆分模組,應用分別部署,例項之間沒有太多互動,能夠一定程度的提高應用的效能。因為RAC環境中,瓶頸可能在cache fusion,減少對它的使用,能夠提高應用的整體執行能力。例如:我有10個模組,我讓5個模組固定連線到例項1,我讓另外5個模組連線到例項2。或者我有多個應用,一部分固定連線到例項1,一部分固定連線到例項2。如何使用這種固定連線方式喃?首先不能直接使用jdbc連線到instance1或者連線到instance2,這樣連線當例項1機器當掉後,透過例項1連線的模組或應用就無法使用了。這個時候service的優勢就體現出來了,使用service的一大好處就是當例項1當掉之後會切換到備用例項上,這樣就能保證不會造成對應用的影響了。使用service的另一個好處就是可以使用server TAF,可以不用使用客戶端的TAF,透過dbms_service包來配置server TAF。server TAF可以減輕客戶端的配置負擔,統一配置保證所有的連線都能實現FAILOVER的功能。

如果是使用了server TAF客戶端就可以配置成如下形式:
SERVICE1 =
  (DESCRIPTION =
    (FAILOVER = on)

    (LOAD_BALANCE = yes)
    (ADDRESS_LIST=
      (ADDRESS = (PROTOCOL = TCP)(HOST = rhel1-vip)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = rhel2-vip)(PORT = 1521))
    )
      (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = service1)
    )
  )

jdbc也可以做相應的調整了。

相關檢視:
http://space.itpub.net/471666/viewspace-224943
Oracle RAC Failover詳解:http://blog.csdn.net/tianlesoftware/archive/2010/03/03/5340788.aspx

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-630945/,如需轉載,請註明出處,否則將追究法律責任。

相關文章