1. 程式人生 > >Oracle RAC failover 測試(TAF方式)

Oracle RAC failover 測試(TAF方式)

    Oracle RAC 客戶端故障轉移(failover),當採用TAF方式時,對於已經建立連線的客戶端,在連線的例項或節點出現故障時,客戶端無需再次發出連線請求,仍然可以繼續之前的資料庫操作,此稱之為透明故障轉移。本文描述基於Oracle 10g rac,客戶端TAF方式的故障轉移並給出示例。

1、TAF描述    
  #下面關於TAF來自Oracle 的官方描述 ID 453293.1
  Transparent Application Failover (TAF) is a feature of the Oracle Call Interface (OCI) driver at client side. 
  It enables the application to automatically reconnect to a database, if the database instance to which the connection is 
  made fails. In this case, the active transactions roll back. 
  Tnsnames Parameter: FAILOVER_MODE 

     When an instance to which a connection is established fails or is shutdown, the connection on the client side becomes 
  stale and would throw exceptions to the caller trying to use it. TAF enables the application to transparently reconnect 
  to a preconfigured secondary instance creating a fresh connection, but identical to the connection that was established 
  on the first original instance.
  
  #簡單一點來說,就是說對於那些已經成功連線到特定例項的客戶端,如果該例項或節點異常宕機,客戶端會自動重新發出到剩餘例項的連
  #接請求。使得客戶端感覺不到它所連線的例項或節點已經出現故障,這個就稱之為透明轉移。但其間的活動事務將被回滾。
  #通過在客戶端的tnsnames.ora中配置FAILOVER_MODE項實現TAF

2、伺服器端、客戶端的環境
  #伺服器端環境,host資訊
  
[email protected]
:~> cat /etc/hosts |grep vip 192.168.7.61 bo2dbp-vip.2gotrade.com bo2dbp-vip 192.168.7.62 bo2dbs-vip.2gotrade.com bo2dbs-vip #伺服器端環境,叢集資訊 [email protected]:~> ./crs_stat.sh Resource name Target State -------------- ------ ----- ora.GOBO4.GOBO4A.inst OFFLINE OFFLINE on bo2dbp #此時節點1上的例項被關閉 ora.GOBO4.GOBO4B.inst ONLINE ONLINE on bo2dbs ora.GOBO4.db ONLINE ONLINE on bo2dbp ora.bo2dbp.ASM1.asm ONLINE ONLINE on bo2dbp ora.bo2dbp.LISTENER_BO2DBP.lsnr ONLINE ONLINE on bo2dbp ora.bo2dbp.LISTENER_ORA10G_BO2DBP.lsnr ONLINE ONLINE on bo2dbp ora.bo2dbp.gsd ONLINE ONLINE on bo2dbp ora.bo2dbp.ons ONLINE ONLINE on bo2dbp ora.bo2dbp.vip ONLINE ONLINE on bo2dbp ora.bo2dbs.ASM2.asm ONLINE ONLINE on bo2dbs ora.bo2dbs.LISTENER_BO2DBS.lsnr ONLINE ONLINE on bo2dbs ora.bo2dbs.LISTENER_ORA10G_BO2DBS.lsnr ONLINE ONLINE on bo2dbs ora.bo2dbs.gsd ONLINE ONLINE on bo2dbs ora.bo2dbs.ons ONLINE ONLINE on bo2dbs ora.bo2dbs.vip ONLINE ONLINE on bo2dbs ora.ora10g.db ONLINE ONLINE on bo2dbp #客戶端環境
[email protected]
:~> cat /etc/issue Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel \r (\l). [email protected]:~> sqlplus -v SQL*Plus: Release 10.2.0.3.0 - Production #客戶端tnsnames配置 GOBO4_TAF = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = GOBO4) (FAILOVER_MODE = #FAILOVER_MODE項引數 (TYPE = session) (METHOD = basic) (RETRIES = 180 (DELAY = 5) ) ) ) 3、FAILOVER_MODE項分析 FAILOVER_MODE項是實現TAF的主要配置內容,下面對其進行描述. METHOD: 使用者定義何時建立到其例項的連線,有BASIC 和 PRECONNECT 兩種可選值 BASIC: 客戶端通過地址列表成功建立連線後,即僅當客戶端感知到節點故障時才建立到其他例項的連線 PRECONNECT: 預連線模式,是在最初建立連線時就同時建立到所有例項的連線,當發生故障時,立刻就可以切換到其他鏈路上 上述兩種方式各有優劣,前者建立連線的開銷相對較小,但failover時會產生延遲,而後者正好與前者相反 TYPE: 用於定義發生故障時對完成的SQL 語句如何處理,其中有2種類型:session 和select select:使用select方式,Oracle net會跟蹤事務期間的所有select語句,並跟蹤每一個與當前select相關的遊標已返回多少行給客戶 端。此時,假定select查詢已返回500行,客戶端當前連線的節點出現故障,Oracle Net自動建立連線到倖存的例項上並繼續返回 剩餘的行數給客戶端。假定總行數為1500,行,則1000行從剩餘節點返回。 session: 使用session方式,所有select查詢相關的結果在重新建立新的連線後將全部丟失,需要重新發布select命令。 上述兩種方式適用於不同的情形,對於select方式,通常使用與OLAP資料庫,而對於session方式則使用與OLTP資料庫。因為select 方式,Oracle 必須為每個session儲存更多的內容,包括遊標,使用者上下文等,需要更多的資源。 其次,兩種方式期間所有未提交的DML事務將自動回滾且必須重啟啟動。alter session語句不會failover。 臨時物件不會failover也不能被重新啟動。 RETRIES: 表示重試的次數 DELAY:表示重試的間隔時間 4、測試TAF #首次建立連線,此時客戶端從tnsnames配置的第一個IP建立連線,由於第一個VIP所在的例項已經關閉,故連線到192.168.7.62 #VIP 192.168.7.62對應的hostname以及instance_name分別為bo2dbs,GOBO4B,所以我們獲得如下返回結果 #其次我們可以看到當前session failover的相關引數
[email protected]
:~> sqlplus fail_over/[email protected]_taf [email protected]> get verify.sql 1 REM the following query is for TAF connection verification 2 col sid format 99999 3 col serial# format 9999999 4 col failover_type format a13 5 col failover_method format a15 6 col failed_over format a11 7 Prompt 8 Prompt Failover status for current user 9 Prompt ============================================ 10 SELECT sid, 11 serial#, 12 failover_type, 13 failover_method, 14 failed_over 15 FROM v$session 16 WHERE username = 'FAIL_OVER'; 17 REM the following query is for load balancing verification 18 col host_name format a20 19 Prompt 20 Prompt Current instance name and host name 21 Prompt ======================================== 22* SELECT instance_name,host_name FROM v$instance; 23 [email protected]> @verify Failover status for current user ============================================ SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER ------ -------- ------------- --------------- ----------- 1063 1175 SESSION BASIC NO Current instance name and host name ======================================== INSTANCE_NAME HOST_NAME ---------------- -------------------- GOBO4B bo2dbs #此時啟動第一個例項GOBO4A,並停止第二個例項 [email protected]:~> srvctl start instance -d GOBO4 -i GOBO4A [email protected]:~> srvctl stop instance -d GOBO4 -i GOBO4B #檢視兩個例項的狀態 [email protected]:~> ./crs_stat.sh | grep inst ora.GOBO4.GOBO4A.inst ONLINE ONLINE on bo2dbp ora.GOBO4.GOBO4B.inst OFFLINE OFFLINE #在客戶端的session再次檢查連線狀態,即執行查詢,結果如下,我們收到了ORA-25408 [email protected]> @verify Failover status for current user ============================================ SELECT sid, * ERROR at line 1: ORA-25408: can not safely replay call Current instance name and host name ======================================== INSTANCE_NAME HOST_NAME ---------------- -------------------- GOBO4A bo2dbp #再次執行查詢,此時客戶端已經自動實現了重新連線,從查詢返回得到的INSTANCE_NAME與HOST_NAME可知。 #最重要的一個FAILED_OVER值為YES,表明當前的session是一個failover來的session。 #關於METHOD使用PRECONNECT與TYPE使用SELECT的方式在此不作演示 [email protected]> @verify Failover status for current user ============================================ SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER ------ -------- ------------- --------------- ----------- 1073 29 SESSION BASIC YES Current instance name and host name ======================================== INSTANCE_NAME HOST_NAME ---------------- -------------------- GOBO4A bo2dbp #Author : Robinson #Blog : http://blog.csdn.net/robinson_0612 5、小結: a、客戶端TAF方式實現了Oracle客戶端到伺服器透明故障轉移 b、主要在客戶端tnsnames.ora配置FAILOVER_MODE來實現基於客戶端的TAF c、FAILOVER_MODE中基於連線方式(METHOD)可以分為BASIC與PRECONNECT兩種方式,後者開銷更大,延遲小,與前者相反 d、FAILOVER_MODE中TYPE可以分為select與session兩種方式,兩者所有未提交的事務全部回滾,select方式會failover查詢, session方式不會。select方式多用在OLAP型別資料庫,而session多用在OLTP型別資料庫 e、一旦所在的例項發生故障,會自動failover,無需手動重新連線,這就是與連線時故障轉移所不同的。

更多參考

相關推薦

Oracle RAC failover 測試 TAF方式

                    Oracle RAC 客戶端故障轉移(failover),當採用TAF方式時,對於已經建立連線的客戶端,在連線的例項或節點出現故障時,客戶端無需再次發出連線請求,仍然可以繼續之前的資料庫操作,此稱之為透明故障轉移。本文描述基於Oracle 10g rac,客戶端TAF方

Oracle RAC failover 測試(TAF方式)

    Oracle RAC 客戶端故障轉移(failover),當採用TAF方式時,對於已經建立連線的客戶端,在連線的例項或節點出現故障時,客戶端無需再次發出連線請求,仍然可以繼續之前的資料庫操作,此稱之為透明故障轉移。本文描述基於Oracle 10g rac,客戶端TAF

Oracle RAC failover 測試(連線時故障轉移)

1、Oracle failover的幾種方式 Oracle failover也叫故障轉移,從Oracle 10g開始,分為3種方式: a. Client-Side Connect time Failover 客戶端連線failover模式,此方式較為簡單,只要

RAC Failover三種方式

1、Client-Side Connect Time Failover 1.1)在使用者端tnsname中配置了多個地址,使用者發起連線請求時,會先嚐試連線地址表中的第一個地址,如果這個連線嘗試失敗,則繼續嘗試使用第二個地址,直至連線成功或者遍歷了所有的地址。 1.2)這種

ORACLE RAC安裝-性能與高可用測試

RAC性能測試 RAC高可用測試 從11G開始,安裝RAC已經變成了一個體力活兒,但是RAC安裝完成後,如何保證系統的穩定運行,如何得到系統的性能,這個對後期在線系統的穩定運行影響巨大。下面是總結了最近1年多來工程實施中的一些經驗。###################################

雲上Oracle RAC叢集新的部署方式

雲上Oracle已經不是什麼新鮮事,團隊目前已經幫助客戶部署、運維雲上50+套Oracle例項,並依據雲資源優勢,規劃同城雙機房熱備、異地災備架構,提供與本地Oracle例項匹配的穩定、安全、高效能環境。 解決雲上雙機房熱備、異地災備這樣的Oracle環境就能夠讓人獲得身心的滿足了嗎?不!本地機房能夠實現的

目前社保行業大多數公司伺服器採用oracle rac方式但是使用經常慢的主因分析

現狀: 10年前大多使用的cluster模式採用主次節點,一個幹活一個歇,遇到故障臨時切,切換時間比較慢 目前基本都是RAC方式,雙活,均線上,均辦理業務 問題: 1、有些實施運維人員不太瞭解rac相關知識,生產中出現過一個節點掉,整個weblogic停止服務的情況

Oracle 11gR2 RAC Service-Side TAF 配置示例

創建數據庫 services 1.2 client trac days 容易出錯 man where Service-Side TAFService-Side TAF的配置參考:How To Configure Server Side Transparent Applica

Oracle RAC的機制與測試方法

Oracle RAC是Oracle Real Application Cluster的簡寫,官方中文文件一般翻譯為“真正應用叢集”。RAC叢集是由若干物理機組成,每個物理機為一個節點,這些節點間通過網線連線(也叫心跳網路)。每個節點上都執行一個例項,這些例項通過CRS(CRS通過一系列的程序和服務來保證叢集的

oracle rac 安裝驗收測試

       對於一個客戶安裝完oracle rac,客戶不知道測試什麼,但是如果沒有經過一個嚴格測試,又不知道安裝的是否存在問題,下面是我們給一個客戶做rac後的安裝測試驗收報告,大家可以進行參考: TEST# 測試項 測試過程 期待結果 測試結果

jdbc對oracle RAC方式的支援

  1)JDBC連線的配置方式 ,既然資料庫本身已經支援了RAC,那麼只要在JDBC連線字串中將RAC的配置加上去即可, 根據資料和目前的業務需求,我們的針對HOST=10.87.25.37這臺主機的資料庫例項的JDBC連線字串應該這樣配置    URL="jdbc:ora

Oracle RAC 負載均衡測試(結合伺服器端與客戶端)

原文地址:http://blog.csdn.net/leshami/article/details/8072367        Oracle RAC 負載均衡使得從客戶端發起的連線能夠有效地分配到監聽器負載較小的例項上。有兩種方式實現客戶端負載均衡,一是通過配置客戶端的lo

Oracle 叢集】Linux下Oracle RAC叢集搭建之基本測試與使用(九)

概述:寫下本文件的初衷和動力,來源於上篇的《oracle基本操作手冊》。oracle基本操作手冊是作者研一假期對oracle基礎知識學習的彙總。然後形成體系的總結,一則進行回顧複習,另則便於查詢使用。本圖文文件亦源於此。閱讀Oracle RAC安裝與使用教程前,筆者先對這篇文章整體構思和形成進行梳理。

RAC環境下配置tnsname實現failoverTAF

Q:有一段 RAC的配置(3節點rac) ###### RAC的配置(3節點rac) ############################### ORALOCAL =  (DESCRIPTION =  (load_balance = yes)  (failover = on)   (ADDRESS_LI

ORACLE RAC TAF 配置(透明故障轉移)

原文地址:http://blog.itpub.net/17086096/viewspace-1872783/TAF(Transparent Application Failover)即透明應用程式故障轉移技術。當初始化連接出現問題無法連線時,該功能可以保證應用程式重新連線到可

ORACLE RAC資料庫連線方式

方法1:適合中介軟體等JDBC等連線方法,本示例為thin方式 url="jdbc:oracle:thin:@(DESCRIPTION =     (LOAD_BALANCE = NO)     (ADDRESS = (PROTOCOL =TCP)(HOST = dtydb

oracle RAC 更換儲存遷移資料(線上遷移ASM磁碟組)測試

oracle RAC 更換儲存遷移資料 我們利用ASM rebalance特性實現更換儲存遷移資料的需求 基本零宕機時間(操作步驟總結) 1)保證新儲存和RAC當前節點間的可用性; 2)新儲存劃分LUN,可以重新規劃儲存方案; 3)遷移OCR和表決盤 4)給現有ASM磁碟組

Oracle RAC 到單機 OGG 配置測試

1.     測試環境: 源端: OS:Centos 6.8 資料庫:11.2.0.4  例項: rac1 rac2 rac3 Goldengate:fbo_ggs_Linux_x64_shiphome.zip Rac與單例項不同之處在於rac上的goldengate 需

Oracle RAC基本概念

特定 遷移 解決方案 開發人員 安裝配置 獲得 情況 網格 play   原文鏈接:http://tech.it168.com/a2012/0814/1384/000001384756_all.shtml   不同的集群產品都有自己的特點,RAC的特點包括如下幾點:   ·

連接到Oracle的幾種命名方式

oracle 連接從事Oracle相關工作的人,每天都會使用各種工具連接到Oracle數據庫,比如:SQL*Plus、PL/SQL、TOAD、SQLDeveloper等等,下面就列舉了幾種連接到Oracle的方式,本例中使用的是SQL*Plus為例。1、Easy Connect命名方式這種方式是一種很簡單的方