oracle HA 高可用性詳解(之一,client、server端服務詳解):http://write.blog.csdn.net/postedit
我們已經看到TAF是的Oracle的會話能夠自動重新連接,需要說明的是,這個能力是基於OCI的,是OCI的一個功能,JDBC Thin Driver無效,因為這種驅動不是構建在OCI庫上的。
雖然這個功能發起於RAC,但TAF並不局限於RAC,單實例、DG環境都可以享受這個好處。Oralce聲稱其TAF能夠保證用戶會話自動的轉移到另一個實例上。這一點確實是真的,但是是有水分的。為了深入理解TAF的能力,我們接下來做一個更精細的實驗。
1. TAF和事務
在RAC環境下,可以有三種方式把一個用戶會話遷移到另一個實例上,包括altersystem disconnect from session、shutdown、dbms_service包,這三種方式的後台機制和效果其實都是一致的,這三種方法可以把一個會話透明的或者說優雅的從一個實例遷移到另一個實例,對於這個會話來說,甚至感覺不到這種感覺遷移的發生。我們這個實驗就用alter system的方法進行,這個命令的語法如下:
Altersystem disconnect session [post_transaction | immediate];
這個命令有兩個選項,分別含義如下:
Post_transaction:意思是在事務提交之後再斷開已有連接;
Immediate: 意思是立即斷開連接;
(1) Resource(資源)
資源需要由CRS管理的實體叫做Resource。一般而言是指一個火一組進程。
(2) Resource Dependency(資源依賴性)
不同資源之間會有依賴關系,比如使用ASM作為存儲的數據庫而言,數據庫實例就依賴與ASM實例。這種依賴關系體現在ASM實例必須先於數據庫實例啟動,必須等到數據庫實例關閉之後才能關閉。而Resource Dependency就是用來說明這種關系的,通過REQUIRED_RESOURCES參數定義。
(3) Application Profile(應用描述文件)
Application Profile是一個文件,用來告訴CRS應該如何管理應用程序的。這個文件通過“屬性=值“的格式來描述應用程序的屬性,比如資源腳本、資源依賴性、資源檢察頻率等。在使用Oraclecluster HA時,第一步就是創建這個文件,但這個文件又是一個過渡文件,文件的內容最後要注冊到OCR中。
(4) Action Program
Action Program是一個可執行文件,可以使二進制文件、更多的是SHELL腳本。Oracle Cluster HA架構就是通過這個腳本來完成啟動、關閉、檢查、轉移資源工作的。這個腳本必須要能夠接受處理start、stop、check這三個參數。
(5) OCR
在配置第三方應用的HA集群時,Application Profile的內容最後要注冊到OCR中。Oracle Cluster住工作時是從OCR而不是Application Profile讀取配置內容的。
(1) crs_profile
配置時有兩個文件需要創建的,Application Profile和ActionProfile,前者是一個配置文件,後者是一個SHELL腳本。但實際上這兩個文件都不需要手工創建,通過這個命令可以自動的創建,讀者只需要在其基礎上進行修改即可。
[root@felix1bin]# ./crs_profile -h
Usage: crs_profile -create resource_name -t application
[-dir directory_path] [-a action_script] [-B binary_pathname]
[-d description] [-h hosting_members] [-r required_resources]
[-l optional_resources] [-p placement_policy]
[-o as=auto_start,ci=check_interval,ft=failure_threshold,
fi=failure_interval,ra=restart_attempts,fd=failover_delay,
st=script_timeout,ap=active_placement,
ut=uptime_threshold,rt=start_timeout,pt=stop_timeout] [-f] [-q]
crs_profile -create resource_name -I template_file [-dir directory_path][-f] [-q]
crs_profile -delete resource_name [-dir directory_path] [-q]
crs_profile -print [resource_name [...]] [-dir directory_path] [-q]
crs_profile -template resource_name [-dir directory_path] [-Otemplate_file]
crs_profile -template -t application [-O template_file]
crs_profile -update resource_name [-dir directory_path] [option ...] [-ooption,...] [-q]
crs_profile -validate resource_name [-dir directory_path] [-q]
[root@felix1 bin]#