在 Oracle Enterprise Linux 和 iSCSI 上構建您自己的Oracle RAC 集群(續(xù))
本指南中的信息未經 Oracle 驗證,且不受 Oracle支持,您在使用時只能風險自負;本指南僅供教學使用。
集群件軟件
僅在集群 (linux1) 的一個 Oracle RAC 節(jié)點上執(zhí)行下列安裝過程!Oracle UniversalInstaller 將把 Oracle 集群件軟件安裝到集群中的兩個 Oracle RAC 節(jié)點。
您現(xiàn)在就可以安裝該環(huán)境的“集群”部分:Oracle 集群件了。在上一節(jié)中,您將 Oracle 集群件的安裝文件下載并提取到 linux1的 /home/oracle/orainstall/clusterware 目錄中。這是唯一需要執(zhí)行安裝的節(jié)點。
在 Oracle 集群件的安裝過程中,系統(tǒng)將提示您提供相關的并要在 RAC 集群中配置的節(jié)點。當實際的安裝開始時,它將使用我們在
第15 節(jié)(“使用 SSH 為遠程訪問配置 RAC 節(jié)點”)中配置的遠程訪問將所需軟件復制到所有節(jié)點。
那 Oracle 集群件究竟是用來干什么的呢?它包含所有集群和數(shù)據(jù)庫配置元數(shù)據(jù)以及多個適用于 RAC 的系統(tǒng)管理特性。通過它,DBA可以將一個 Oracle 實例(或多個實例)注冊和調用到集群。在通常的操作中,Oracle 集群件將通過一種特殊的 ping操作向集群中配置的所有節(jié)點發(fā)送消息(通常稱作“心跳”)。如果對任何節(jié)點的心跳檢測失敗,則它將檢查 Oracle集群件配置文件(位于共享磁盤上)以辨別是節(jié)點故障還是網絡故障。
安裝 Oracle 集群件后,用于安裝 Oracle 數(shù)據(jù)庫軟件(下一節(jié))的 Oracle Universal Installer(OUI) 將自動識別這些節(jié)點。與您將在本節(jié)中執(zhí)行的 Oracle 集群件安裝一樣,Oracle 數(shù)據(jù)庫軟件只需要從一個節(jié)點運行。OUI將把此軟件程序包復制到在 RAC 集群中配置的所有節(jié)點。
Oracle 集群件共享文件
系統(tǒng)將把由 Oracle 集群件使用的兩個共享文件(實際上是文件組)存儲到我們在前面創(chuàng)建的 Oracle 集群文件系統(tǒng)第 2 版(OFCS2) 中。這兩個共享 Oracle 集群件文件組是:
Oracle 集群注冊表 (OCR)
文件 1:/u02/oradata/racdb/OCRFile
文件 2:/u02/oradata/racdb/OCRFile_mirror
大?。?2 * 100MB) = 200M
CRS 表決磁盤
文件 1:/u02/oradata/racdb/CSSFile
文件 2:/u02/oradata/racdb/CSSFile_mirror1
文件 3:/u02/oradata/racdb/CSSFile_mirror2
大?。?3 * 20MB) = 60MB
注:不能對這兩個共享 Oracle 集群件文件使用自動存儲管理(ASM):Oracle 集群注冊表 (OCR) 或 CRS 表決磁盤文件。問題是只有這兩個文件就緒并可以訪問后才可以啟動 Oracle 實例。要使 ASM 可用,應首先運行 ASM 實例。
另請注意,可以將這兩個共享文件存儲到 OCFS2、共享的原始設備或其他供應商的集群化文件系統(tǒng)中。
驗證終端 Shell 環(huán)境
在啟動 Oracle Universal Installer 之前,您應該首先驗證您已登錄到要從其運行安裝程序的服務器(例如 linux1),然后從控制臺 以 root 運行 xhost 命令以允許建立 X Server連接。接下來,以 oracle 用戶帳戶登錄。如果您正在使用遠程客戶端來連接到執(zhí)行安裝的節(jié)點(從 X Server所在的工作站通過 SSH 或 Telnet 連接 linux1),您將需要將 DISPLAY變量設置為指向本地工作站。最后,驗證集群中所有節(jié)點的遠程訪問/用戶等效性:
驗證服務器并啟用 X Server 訪問
# hostnamelinux1# xhost +access control disabled, clients can connect from any host
以 oracle 用戶帳戶登錄并設置 DISPLAY(如果需要)
# su - oracle$ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE$ # NODE PERFORMING THE INSTALL$ DISPLAY=<your local workstation>:0.0$ export DISPLAY
驗證遠程訪問/用戶等效性
驗證您能夠在將要從中運行 Oracle Installer 的 Linux 服務器上,不使用口令對集群中的所有其他 Linux服務器運行
安全 Shell 命令(ssh 或 scp)。使用安全 shell 方法時,需要首先在終端shell 會話上啟用
用戶等效性 然后再嘗試運行 OUI。要為當前的終端 shell 會話啟用用戶等效性,請執(zhí)行以下步驟(記住為 RSA鍵輸入在提示時生成的通行短語):
$ exec /usr/bin/ssh-agent $SHELL$ /usr/bin/ssh-addEnter passphrase for /home/oracle/.ssh/id_rsa: xxxxxIdentity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)$ ssh linux1 "date;hostname"Fri Jul 31 22:28:43 EDT 2009linux1$ ssh linux2 "date;hostname"Fri Jul 31 22:29:00 EDT 2009linux2
安裝集群就緒服務
執(zhí)行以下任務安裝 Oracle 集群件:
$ cd ~oracle$ /home/oracle/orainstall/clusterware/runInstaller -ignoreSysPrereqs
屏幕名稱 答復
Welcome 屏幕 單擊 Next
Specify Inventory directory and credentials 接受默認值:
Inventory directory: /u01/app/oracle/oraInventory
Operating System group name:oinstall
Specify Home Details 為 ORACLE_HOME(實際上是 $ORA_CRS_HOME,我將在本文中使用它)設置 Name 和 Path, 如下所示:
Name: OraCrs10g_home
Path:/u01/app/crs
Product-Specific Prerequisite Checks 安裝程序將執(zhí)行一系列的檢查以確定節(jié)點是否滿足安裝和配置 Oracle 集群件軟件的最低要求。如果任何檢查失敗,您將需要通過單擊該復選框手動驗證失敗的檢查。我所執(zhí)行的安裝通過了所有檢查,未出現(xiàn)任何問題。
單擊 Next 繼續(xù)。
Specify Cluster Configuration Cluster Name: crs
Public Node Name Private Node Name Virtual Node Name
linux1 linux1-priv linux1-vip
linux2 linux2-priv linux2-vip
Specify Network Interface Usage Interface Name Subnet Interface Type
eth0 192.168.1.0 Public
eth1 192.168.2.0 Private
Specify OCR Location 從帶有 RAC 的 Oracle 數(shù)據(jù)庫 10g 第 2 版 (10.2) 開始,Oracle 集群件支持創(chuàng)建鏡像的 OCR 文件,從而增強了集群可靠性。就本示例而言,我選擇了通過保留默認選項“Normal Redundancy”鏡像 OCR 文件:
Specify OCR Location: /u02/oradata/racdb/OCRFile
Specify OCR Mirror Location:/u02/oradata/racdb/OCRFile_mirror
Specify Voting Disk Location 從帶有 RAC 的 Oracle 數(shù)據(jù)庫 10g 第 2 版 (10.2) 開始,已經修改了 CSS,使您可以為 CSS 配置多個表決磁盤。在第 1 版 (10.1) 中,您只能配置一個表決磁盤。通過啟用多個表決磁盤配置,您可以使用冗余的表決磁盤在獨立的共享物理磁盤上為 RAC 數(shù)據(jù)庫配置多個表決磁盤。該選項簡化了 iSCSI 網絡協(xié)議以及其他網絡附件存儲 (NAS) 存儲解決方案的使用。注意,要利用多個表決磁盤的好處,必須至少配置三個表決磁盤。就本示例而言,我選擇了通過保留默認選項“Normal Redundancy”鏡像表決磁盤:
Voting Disk Location: /u02/oradata/racdb/CSSFile
Additional Voting Disk 1 Location:/u02/oradata/racdb/CSSFile_mirror1
Additional Voting Disk 2 Location:/u02/oradata/racdb/CSSFile_mirror2
Summary
單擊 Install 開始安裝!
Execute Configuration Scripts
orainstRoot.sh
安裝完成后,將提示您運行 orainstRoot.sh 和 root.sh 腳本。以“root”用戶帳戶在集群的兩個 Oracle RAC 節(jié)點(從執(zhí)行安裝的節(jié)點開始)上打開一個新控制臺窗口。
導航到 /u01/app/oracle/oraInventory 目錄,并在 RAC 集群的所有節(jié)點上運 行 orainstRoot.sh。
注:在兩個節(jié)點上執(zhí)行 orainstRoot.sh 之后,驗證“/etc/oraInst.loc”文件的權限為 644 (-rw-r--r--) 且所有者為 root。 如果 oracle 用戶帳戶不具備該文件的讀權限,在 Oracle 安裝期間可能會出現(xiàn)問題 —“the location of the oraInventory directory cannot be determined”。例如,在 Oracle 集群件安裝后(運行 Oracle 集群驗證實用程序時),將出現(xiàn)以下錯誤:"“CRS is not installed on any of the nodes”。 如果對 /etc/oraInst.loc 的權限設置不當,則可能是因為在運行 root.sh 之前,您未在兩個節(jié)點上運行 orainstRoot.sh。此外,umask 設置可能關閉 — 應為 0022。 在 RAC 集群的兩個節(jié)點上運行以下命令以更正此問題:
# chmod 644 /etc/oraInst.loc # ls -l /etc/oraInst.loc -rw-r--r-- 1 root root 63 Aug 1 12:31 /etc/oraInst.loc
root.sh
在集群中兩個 Oracle RAC 節(jié)點(從執(zhí)行安裝的節(jié)點開始)上的同一個新控制臺窗口中,以“root”用戶帳戶登錄。
導航到 /u01/app/crs 目錄并在集群中的每個節(jié)點(從執(zhí)行安裝的節(jié)點開始)上找到 root.sh 文件。在 RAC 集群的所有節(jié)點上運行 root.sh 文件,一次一個。
如果 Oracle 集群件主目錄是 ORACLE_BASE 目錄的子目錄(這種情況永遠不應出現(xiàn)!),則在兩個節(jié)點上的運行 root.sh 腳本時,您將會收到幾個有關權限的警告。可以忽略這些警告,沒什么問題。
可能需要等一會兒才會運行 root.sh。
在最后一個節(jié)點上運行 root.sh 失?。?div style="height:15px;">
收到本節(jié)所述任何錯誤之后,請保持 OUI 處于開啟狀態(tài)。在本節(jié)所述問題尚未全部得以解決之前,請不要單擊“Execute Configuration Scripts”對話框上的 OK 按鈕。
問題 1
在對最后一個節(jié)點執(zhí)行 root.sh 時,vipca 將無法運行,會出現(xiàn)以下錯誤:
Oracle CRS stack installed and running under init(1M) Running vipca(silent) for configuring nodeapps /u01/app/crs/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
注意,在采取下述解決辦法之前,srvctl 也會產生類似的輸出。
出現(xiàn)該錯誤的原因是,Linux 內核的這些版本會采用 Oracle 以前的一個解決辦法,即在 vipca 和 srvctl 中使用 LD_ASSUME_KERNEL 設置來修補 Linux 線程中的一個原有缺陷。而這個解決辦法在 OEL5、RHEL5 或 SLES10 上不再有效,故而產生錯誤。
要解決上面的問題 1,編輯 vipca(在所有節(jié)點的 CRS bin 目錄下)以撤消對 LD_ASSUME_KERNEL 的設置。在第 120 行左右的 IF 語句之后,添加一條 unset 命令,從而確保 LD_ASSUME_KERNEL 未經過設置,如下所示:
if [ "$arch" = "i686" -o "$arch" = "ia64" ] then LD_ASSUME_KERNEL=2.4.19 export LD_ASSUME_KERNEL fi unset LD_ASSUME_KERNEL <<== Line to be added
類似地,對于 srvctl(在所有節(jié)點的 CRS bin 目錄,以及(若已安裝)RDBMS bin 和 ASM bin 目錄下),通過在第 168 行左右添加一行來取消設置 LD_ASSUME_KERNEL,應如下所示:
LD_ASSUME_KERNEL=2.4.19 export LD_ASSUME_KERNEL unset LD_ASSUME_KERNEL <<== Line to be added
注:切記要對所有節(jié)點重新編輯這些文件:
<ORA_CRS_HOME>/bin/vipca <ORA_CRS_HOME>/bin/srvctl <RDBMS_HOME>/bin/srvctl <ASM_HOME>/bin/srvctl # (If exists)
應用 10.2.0.2 或 10.2.0.3 補丁集后,這些補丁集仍將包括這些對 OEL5、RHEL5 或 SLES10 來說多余的設置。此問題是由開發(fā)引起的,在 10.2.0.4 補丁集中得以修復。
另請注意,這里我們顯式取消設置 LD_ASSUME_KERNEL 而不是僅僅通過將其標為注釋語句來取消其設置,這是為了處理這樣的情況:用戶在其環(huán)境(登錄 shell)中設置了該變量。
問題 2
在解決了上面的問題 1 后,如果 VIP IP 在不可路由的地址范圍 [10.x.x.x、172.(16-31).x.x 或 192.168.x.x] 內,則 vipca 現(xiàn)在無法運行,會出現(xiàn)以下錯誤:
[root@linux2 ~]# $ORA_CRS_HOME/bin/vipca Error 0(Native: listNetInterfaces:[3]) [Error 0(Native: listNetInterfaces:[3])]
有幾種方法來解決問題 2。本解決辦法的目標是使“$ORA_CRS_HOME/bin/oifcfg getif”命令的輸出 中包含 public 和 cluster_interconnect 接口。如果您試著運行上述命令,會發(fā)現(xiàn)該命令不提供任何信息,這就意味著我們要做點什么了!
第一步是確定當前的接口和 IP 地址:
[root@linux2 ~]# $ORA_CRS_HOME/bin/oifcfg iflist eth1 192.168.2.0 eth0 192.168.1.0
我們記得,在 Oracle 集群件的安裝過程中,我用 192.168.1.0 作為公共接口,用 192.168.2.0 作為 cluster_interconnect 接口。
利用此信息,我們可以相應地使用 $ORA_CRS_HOME/bin/oifcfg 命令的 setif 選項來手動設置公共/專用接口:
# $ORA_CRS_HOME/bin/oifcfg setif -global eth0/192.168.1.0:public # $ORA_CRS_HOME/bin/oifcfg setif -global eth1/192.168.2.0:cluster_interconnect
現(xiàn)在,我們再次運行“$ORA_CRS_HOME/bin/oifcfg getif”命令以驗證其輸出:
[root@linux2 ~]# $ORA_CRS_HOME/bin/oifcfg getif eth0 192.168.1.0 global public eth1 192.168.2.0 global cluster_interconnect
從最后一個節(jié)點手動運行 vipca
在解決上述所有問題之后,以 root 用戶身份從發(fā)生錯誤的最后一個節(jié)點手動重新運行 vipca (GUI)。請記住,vipca 是一個 GUI,需要根據(jù)您的 X 服務器設置 DISPLAY 變量:
# $ORA_CRS_HOME/bin/vipca
出現(xiàn)“VIP Configuration Assistant”時,我按如下所示回應屏幕提示:
歡迎頁面:單擊 Next
Network interfaces:只選擇公共接口 — eth0
Virtual IPs for cluster nodes:
Node Name:linux1
IP Alias Name:linux1-vip
IP Address:192.168.1.200
Subnet Mask: 255.255.255.0
Node Name: linux2
IP Alias Name:linux2-vip
IP Address:192.168.1.201
Subnet Mask: 255.255.255.0
Summary: 單擊 Finish
Configuration Assistant Progress Dialog: 配置完成后單擊 OK。
Configuration Results: 單擊 Exit
返回到 OUI 并確認“Execute Configuration scripts”對話框窗口。
End of installation 安裝結束時,退出 OUI。
驗證 Oracle 集群件安裝
安裝 Oracle 集群件后,可以運行幾個測試來驗證安裝是否成功。在 RAC 集群的兩個節(jié)點上運行下列命令。
檢查集群節(jié)點
$ /u01/app/crs/bin/olsnodes -nlinux1 1linux2 2
配置 Oracle 集群件功能
$ $ORA_CRS_HOME/bin/crs_stat -t -vName Type R/RA F/FT Target State Host----------------------------------------------------------------------ora.linux1.gsd application 0/5 0/0 ONLINE ONLINE linux1ora.linux1.ons application 0/3 0/0 ONLINE ONLINE linux1ora.linux1.vip application 0/0 0/0 ONLINE ONLINE linux1ora.linux2.gsd application 0/5 0/0 ONLINE ONLINE linux2ora.linux2.ons application 0/3 0/0 ONLINE ONLINE linux2ora.linux2.vip application 0/0 0/0 ONLINE ONLINE linux2
檢查 CRS 狀態(tài)
$ $ORA_CRS_HOME/bin/crsctl check crsCSS appears healthyCRS appears healthyEVM appears healthy檢查 Oracle 集群件自動啟動腳本$ ls -l /etc/init.d/init.*-r-xr-xr-x 1 root root 1951 Aug 1 12:49 /etc/init.d/init.crs-r-xr-xr-x 1 root root 4699 Aug 1 12:49 /etc/init.d/init.crsd-r-xr-xr-x 1 root root 35379 Aug 1 12:49 /etc/init.d/init.cssd-r-xr-xr-x 1 root root 3175 Aug 1 12:49 /etc/init.d/init.evmd
22. 安裝 Oracle 數(shù)據(jù)庫 10g軟件
僅在集群 (linux1) 的一個 Oracle RAC 節(jié)點上執(zhí)行下列安裝過程!Oracle UniversalInstaller 將把 Oracle 數(shù)據(jù)庫軟件安裝到集群中的兩個 Oracle RAC 節(jié)點。
成功安裝 Oracle 集群件軟件后,下一步是安裝包含 RAC 的 Oracle 數(shù)據(jù)庫 10g 第 2 版(10.2.0.1.0)。
就本示例而言,您在安裝該軟件時將不使用“Create Database”選項。而是將在安裝后使用 DatabaseConfiguration Assistant (DBCA) 創(chuàng)建數(shù)據(jù)庫。
與前面章節(jié)中的 Oracle 集群件安裝一樣,Oracle 10g 數(shù)據(jù)庫軟件只需從一個節(jié)點運行。OUI將把此軟件程序包復制到在 RAC 集群中配置的所有節(jié)點。
驗證終端 Shell 環(huán)境
如上一節(jié)(安裝 Oracle 集群件 10g 軟件)中所討論的,首先需要為集群中所有節(jié)點的遠程訪問和用戶等效性配置終端shell 環(huán)境,然后才能運行 Oracle Universal Installer。注意,您可以利用上一節(jié)中使用的終端 shell會話,對此您不必采取下面描述的關于設置遠程訪問和 DISPLAY 變量的任何操作:
以 oracle 用戶帳戶登錄并設置 DISPLAY(如果需要)
# su - oracle$ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE$ # NODE PERFORMING THE INSTALL$ DISPLAY=<your local workstation>:0.0$ export DISPLAY
驗證遠程訪問/用戶等效性
驗證您能夠在將要從中運行 Oracle Installer 的 Linux 服務器上,不使用口令對集群中的所有其他 Linux服務器運行
安全 Shell 命令(ssh 或 scp)。使用安全 shell 方法時,需要首先在終端shell 會話上啟用
用戶等效性 然后再嘗試運行 OUI。要為當前的終端 shell 會話啟用用戶等效性,請執(zhí)行以下步驟(記住為 RSA鍵輸入在提示時生成的通行短語):
$ exec /usr/bin/ssh-agent $SHELL$ /usr/bin/ssh-addEnter passphrase for /home/oracle/.ssh/id_rsa: xxxxxIdentity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)$ ssh linux1 "date;hostname"Sat Aug 1 14:14:42 EDT 2009linux1$ ssh linux2 "date;hostname"Sat Aug 1 14:15:16 EDT 2009linux2
運行 Oracle 集群驗證實用程序
安裝 Oracle 數(shù)據(jù)庫軟件之前,我們應該使用集群驗證實用程序 (CVU) 運行以下數(shù)據(jù)庫安裝前檢查。
注: 有關如何配置 CVU 的說明,可在本文前面的“
使用集群驗證實用程序的前提條件”一節(jié)中找到。
$ cd /home/oracle/orainstall/clusterware/cluvfy$ CV_HOME=/home/oracle/orainstall/clusterware/cluvfy; export CV_HOME$ CV_JDKHOME=/home/oracle/orainstall/clusterware/cluvfy/jdk14; export CV_JDKHOME$ ./runcluvfy.sh stage -pre dbinst -n linux1,linux2 -r 10gR2 -verbose
查看 CVU 報告。注意,該報告將包含我們在檢查 CRS 安裝前任務時收到的錯誤 — 找不到一組合適的 VIP 接口,并且找不到Oracle Enterprise Linux 5 中不需要的特定 RPM 程序包??梢院雎赃@兩個錯誤,沒什么問題。
安裝 Oracle 數(shù)據(jù)庫 10g 第 2 版軟件
使用以下命令安裝 Oracle 數(shù)據(jù)庫 10g 第 2 版軟件:
$ cd ~oracle$ /home/oracle/orainstall/database/runInstaller -ignoreSysPrereqs
屏幕名稱 答復
Welcome 屏幕 單擊 Next
Select Installation Type 選擇要執(zhí)行的安裝類型:“Enterprise Standard Edition”、“Standard Edition”或“Custom”。
如果您需要諸如 Oracle Label Security 之類的高級組件,或者只是想定制環(huán)境,請選擇“Custom”。
針對本文,我選擇了“Custom”選項。
Specify Home Details 為 ORACLE_HOME 設置 Name 和 Path,如下所示:
Name:OraDb10g_home1
Path:/u01/app/oracle/product/10.2.0/db_1
Specify Hardware Cluster Installation Mode 選擇 Cluster Installation 選項,然后選擇所有可用節(jié)點。單擊“Select All”選擇所有服務器:linux1 和 linux2。
如果安裝此時停止,且有 RAC 節(jié)點的狀態(tài)顯示為“Node not reachable”,則執(zhí)行以下檢查:
確保 Oracle 集群件正在所討論的節(jié)點上運行。
確保您能夠從執(zhí)行安裝的節(jié)點訪問所討論的節(jié)點。
Available Product Components
(Custom Database Installs Only) 選擇您打算用于數(shù)據(jù)庫環(huán)境的組件。
Product-Specific Prerequisite Checks 安裝程序將執(zhí)行一系列的檢查以確定節(jié)點是否滿足安裝和配置 Oracle 數(shù)據(jù)庫軟件的最低要求。如果任何檢查失敗,您將需要通過單擊該復選框手動驗證失敗的檢查。
可能會收到一個關于可用的交換空間不滿足其最低要求的錯誤:
Checking available swap space requirements... Expected result: 3036MB Actual Result: 1983MB
大多數(shù)情況下,您會具有所需的最小交換空間(如上所示),可以安全地忽略該錯誤。只需單擊“Checking available swap space requirements...”復選框,然后單擊 Next 繼續(xù)。
Privileged Operating System Groups
(Custom Database Installs Only) 選擇將用于每個 Oracle 組名的 UNIX 組,如下所示:
Database Administrator (OSDBA) Group: dba
Database Operator (OSOPER) Group:oper
Create Database 選擇“Install database Software only”選項。
記住,我們將在單獨的步驟中使用 DBCA 創(chuàng)建集群化數(shù)據(jù)庫。
Summary
單擊 Install 開始安裝!
Root Script Window - Run root.sh 安裝完成后,將提示您運行 root.sh 腳本。需要記住的是,需要在 RAC 集群的所有節(jié)點上一 次一個地(從運行數(shù)據(jù)庫安裝的節(jié)點開始)運行 root.sh 腳本。
首先,以 root 用戶帳戶在安裝 Oracle 10g 數(shù)據(jù)庫軟件的節(jié)點上打開一個新控制臺窗口。我打開的是“linux1”。
導航到 /u01/app/oracle/product/10.2.0/db_1 目錄,運行 root.sh。
在集群的所有節(jié)點上運行 root.sh 腳本后,返回 OUI 并確認“Execute Configuration scripts”對話框窗口。
End of installation 安裝結束時,退出 OUI。
在 SRVCTL 中取消設置 LD_ASSUME_KERNEL
在
上一節(jié)中的 Oracle 集群件安裝過程中,我們需要修改 CRS bin 目錄中的 vipca 和 srvctl。我們還需要對 Database bin 目錄中的新的 srvctl 進行同樣的修改:
$ $ORACLE_HOME/bin/srvctl/u01/app/oracle/product/10.2.0/db_1/jdk/jre/bin/java: error while loadingshared libraries: libpthread.so.0:cannot open shared object file: No such file or directory
出現(xiàn)該錯誤的原因是,Linux 內核的這些版本會采用 Oracle 以前的一個解決辦法,即在 vipca 和 srvctl中使用 LD_ASSUME_KERNEL 設置來修補 Linux 線程中的一個原有缺陷。而這個解決辦法在OEL5、RHEL5 或 SLES10 上不再有效,故而產生錯誤。
要解決此問題,編輯 srvctl(在所有節(jié)點的 Database bin 目錄中),通過在第 168行左右添加一行來撤消對 LD_ASSUME_KERNEL 的設置:
LD_ASSUME_KERNEL=2.4.19 export LD_ASSUME_KERNEL unset LD_ASSUME_KERNEL <<== Line to be added
注:切記要對所有節(jié)點重新編輯這些文件:
<ORA_CRS_HOME>/bin/vipca<ORA_CRS_HOME>/bin/srvctl<RDBMS_HOME>/bin/srvctl<ASM_HOME>/bin/srvctl # (If exists)
應用 10.2.0.2 或 10.2.0.3 補丁集后,這些補丁集仍將包括這些對 OEL5、RHEL5 或 SLES10來說多余的設置。此問題是由開發(fā)引起的,在 10.2.0.4 補丁集中得以修復。
另請注意,這里我們顯式取消設置 LD_ASSUME_KERNEL而不是僅僅通過將其標為注釋語句來取消其設置,這是為了處理這樣的情況:用戶在其環(huán)境(登錄 shell)中設置了該變量。
23. 安裝 Oracle 10g 隨附CD 軟件
僅在集群 (linux1) 的一個 Oracle RAC 節(jié)點上執(zhí)行下列安裝過程!Oracle 10g 隨附 CD軟件將由 Oracle Universal Installer 安裝到集群的兩個 Oracle RAC 節(jié)點。
成功安裝 Oracle 數(shù)據(jù)庫軟件后,下一步是安裝 Oracle 數(shù)據(jù)庫 10g 隨附 CD 第 2 版軟件(10.2.0.1.0)。
請注意,這是一個可選步驟。就本文而言,我的測試數(shù)據(jù)庫將通常使用 Java 虛擬機 (Java VM) 和 Oracle interMedia,因此將需要安裝 Oracle 數(shù)據(jù)庫 10g 隨附 CD。要執(zhí)行的安裝類型將為 Oracle Database 10gProducts 安裝類型。
此安裝類型包括用于提高 Java 性能的原生編譯的 Java 庫 (NCOMP) 文件。如果不安裝 NCOMP 文件,則在使用 JavaVM 的數(shù)據(jù)庫升級為修補版時,將發(fā)生 ORA-29558:JAccelerator (NCOMP) not installed錯誤。
驗證終端 Shell 環(huán)境
如前面的章節(jié)(安裝 Oracle 數(shù)據(jù)庫 10g 軟件)中所討論的,首先需要為集群中所有節(jié)點的遠程訪問和用戶等效性配置終端shell 環(huán)境,然后才能運行 Oracle Universal Installer。注意,您可以利用上一節(jié)中使用的同一終端 shell會話,對此您不必采取下面描述的關于設置遠程訪問和 DISPLAY 變量的任何操作:
以 oracle 用戶帳戶登錄并設置 DISPLAY(如果需要)
# su - oracle$ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE$ # NODE PERFORMING THE INSTALL$ DISPLAY=<your local workstation>:0.0$ export DISPLAY
驗證遠程訪問/用戶等效性
驗證您能夠在將要從中運行 Oracle Installer 的 Linux 服務器上,不使用口令對集群中的所有其他 Linux服務器運行
安全 Shell 命令(ssh 或 scp)。使用安全 shell 方法時,需要首先在終端shell 會話上啟用
用戶等效性 然后再嘗試運行 OUI。要為當前的終端 shell 會話啟用用戶等效性,請執(zhí)行以下步驟(記住為 RSA鍵輸入在提示時生成的通行短語):
$ exec /usr/bin/ssh-agent $SHELL$ /usr/bin/ssh-addEnter passphrase for /home/oracle/.ssh/id_rsa: xxxxxIdentity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)$ ssh linux1 "date;hostname"Sat Aug 1 14:14:42 EDT 2009linux1$ ssh linux2 "date;hostname"Sat Aug 1 14:15:16 EDT 2009linux2
安裝 Oracle 數(shù)據(jù)庫 10g 隨附 CD 軟件
使用以下命令安裝 Oracle 數(shù)據(jù)庫 10g 隨附 CD 軟件:
$ cd ~oracle$ /home/oracle/orainstall/companion/runInstaller -ignoreSysPrereqs
屏幕名稱 答復
Welcome 屏幕 單擊 Next
Select a Product to Install 選擇“Oracle Database 10g Products 10.2.0.1.0”選項。
Specify Home Details 將 ORACLE_HOME Name 和 Path 的目標設置為前面安裝的 Oracle10g 數(shù)據(jù)庫軟件的目標,如下所示:
Name: OraDb10g_home1
Path:/u01/app/oracle/product/10.2.0/db_1
Specify Hardware Cluster Installation Mode 默認情況下,將選擇 Cluster Installation 選項以及集群中的所有可用節(jié)點。保留這些默認選項,然后單擊 Next 繼續(xù)。
如果安裝此時停止,且有 RAC 節(jié)點的狀態(tài)顯示為“Node not reachable”,則執(zhí)行以下檢查:
確保 Oracle 集群件正在所討論的節(jié)點上運行。
確保您能夠從執(zhí)行安裝的節(jié)點訪問所討論的節(jié)點。
Product-Specific Prerequisite Checks 安裝程序將執(zhí)行一系列的檢查以確定節(jié)點是否滿足安裝和配置隨附 CD 軟件的最低要求。如果任何檢查失敗,您將需要通過單擊該復選框手動驗證失敗的檢查。我所執(zhí)行的安裝通過了所有檢查,未出現(xiàn)任何問題。
單擊 Next 繼續(xù)。
Summary 在 Summary 屏幕上,單擊 Install 開始安裝!
End of installation 安裝結束時,退出 OUI。
24. 創(chuàng)建 TNS 監(jiān)聽器進程
僅在集群 (linux1) 的一個 Oracle RAC 節(jié)點上執(zhí)行下列配置過程!Network ConfigurationAssistant (NETCA) 將在集群的兩個 Oracle RAC 節(jié)點上的集群化配置中設置 TNS 監(jiān)聽器。
DBCA 需要在 RAC 集群的所有節(jié)點上配置并運行 Oracle TNS 監(jiān)聽器進程,然后它才能創(chuàng)建集群化數(shù)據(jù)庫。
只需在集群的一個節(jié)點上執(zhí)行 TNS 監(jiān)聽器創(chuàng)建過程。執(zhí)行所有更改并將這些更改復制到集群的所有節(jié)點上。在一個節(jié)點(我將使用 linux1)上,啟動 NETCA 并執(zhí)行創(chuàng)建新 TNS 監(jiān)聽器進程的過程,同時配置節(jié)點的本地訪問權限。
驗證終端 Shell 環(huán)境
如上一節(jié)(安裝 Oracle 數(shù)據(jù)庫 10g 隨附 CD 軟件)中所討論的,首先需要為集群中所有節(jié)點的遠程訪問和用戶等效性配置終端 shell 環(huán)境,然后才能運行 Oracle Universal Installer。注意,您可以利用上一節(jié)中使用的終端 shell會話,對此您不必采取下面描述的關于設置遠程訪問和 DISPLAY 變量的任何操作:
以 oracle 用戶帳戶登錄并設置 DISPLAY(如果需要)
# su - oracle$ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE$ # NODE PERFORMING THE INSTALL$ DISPLAY=<your local workstation>:0.0$ export DISPLAY
驗證遠程訪問/用戶等效性
驗證您能夠在將要從中運行 Oracle Installer 的 Linux 服務器上,不使用口令對集群中的所有其他 Linux服務器運行
安全 Shell 命令(ssh 或 scp)。使用安全 shell 方法時,需要首先在終端shell 會話上啟用
用戶等效性 然后再嘗試運行 OUI。要為當前的終端 shell 會話啟用用戶等效性,請執(zhí)行以下步驟(記住為 RSA鍵輸入在提示時生成的通行短語):
$ exec /usr/bin/ssh-agent $SHELL$ /usr/bin/ssh-addEnter passphrase for /home/oracle/.ssh/id_rsa: xxxxxIdentity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)$ ssh linux1 "date;hostname"Sat Aug 1 14:14:42 EDT 2009linux1$ ssh linux2 "date;hostname"Sat Aug 1 14:15:16 EDT 2009linux2
運行 Network Configuration Assistant
要啟動 NETCA,請運行以下命令:
$ netca & 下表將引導您為我們 RAC 環(huán)境創(chuàng)建一個新的 Oracle 監(jiān)聽器。
屏幕名稱 答復
Select the Type of Oracle
Net Services Configuration 選擇 Cluster Configuration
Select the nodes to configure 選擇所有節(jié)點:linux1 和 linux2。
Type of Configuration 選擇 Listener configuration。
Listener Configuration — 接下來 6 個屏幕 后續(xù)屏幕現(xiàn)在與其他常規(guī)監(jiān)聽器配置相似。您只需接受后續(xù) 6 個屏幕的默認參數(shù)即可:
What do you want to do: Add
Listener name:LISTENER
Selected protocols:TCP
Port number:1521
Configure another listener:No
Listener configuration complete![ Next ]
您將返回到此 Welcome (Type of Configuration) 屏幕。
Type of Configuration 選擇 Naming Methods configuration。
Naming Methods Configuration 后續(xù)屏幕是:
Selected Naming Methods: Local Naming
Naming Methods configuration complete![ Next ]
您將返回到此 Welcome (Type of Configuration) 屏幕。
Type of Configuration 單擊 Finish 退出 NETCA。
Oracle TNS 監(jiān)聽器進程現(xiàn)在應在 RAC 集群的所有節(jié)點上運行:
$ hostnamelinux1$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'LISTENER_LINUX1=====================$ hostnamelinux2$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'LISTENER_LINUX2
25. 創(chuàng)建 Oracle 集群數(shù)據(jù)庫
僅在集群 (linux1) 的一個 Oracle RAC 節(jié)點上執(zhí)行數(shù)據(jù)庫創(chuàng)建過程!
我們將使用 DBCA 創(chuàng)建集群化數(shù)據(jù)庫。
在執(zhí)行 DBCA 前,確保為 $ORACLE_BASE/product/10.2.0/db_1 環(huán)境正確設置了 $ORACLE_HOME和 $PATH。
在試圖開始創(chuàng)建集群化數(shù)據(jù)庫之前,還應確保已安裝的所有服務(Oracle TNS 監(jiān)聽器、Oracle 集群件進程等)正在運行。
驗證終端 Shell 環(huán)境
如上一節(jié)(創(chuàng)建 TNS 監(jiān)聽器進程)中所討論的,首先需要為集群中所有節(jié)點的遠程訪問和用戶等效性配置終端 shell環(huán)境,然后才能運行 Oracle Universal Installer。注意,您可以利用上一節(jié)中使用的終端 shell會話,對此您不必采取下面描述的關于設置遠程訪問和 DISPLAY 變量的任何操作:
以 oracle 用戶帳戶登錄并設置 DISPLAY(如果需要)
# su - oracle$ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE$ # NODE PERFORMING THE INSTALL$ DISPLAY=<your local workstation>:0.0$ export DISPLAY
驗證遠程訪問/用戶等效性
驗證您能夠在將要從中運行 Oracle Installer 的 Linux 服務器上,不使用口令對集群中的所有其他 Linux服務器運行
安全 Shell 命令(ssh 或 scp)。使用安全 shell 方法時,需要首先在終端shell 會話上啟用
用戶等效性 然后再嘗試運行 OUI。要為當前的終端 shell 會話啟用用戶等效性,請執(zhí)行以下步驟(記住為 RSA鍵輸入在提示時生成的通行短語):
$ exec /usr/bin/ssh-agent $SHELL$ /usr/bin/ssh-addEnter passphrase for /home/oracle/.ssh/id_rsa: xxxxxIdentity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)$ ssh linux1 "date;hostname"Sat Aug 1 14:14:42 EDT 2009linux1$ ssh linux2 "date;hostname"Sat Aug 1 14:15:16 EDT 2009linux2
運行 Oracle 集群驗證實用程序
創(chuàng)建 Oracle 集群化數(shù)據(jù)庫之前,我們應該使用集群驗證實用程序 (CVU) 運行以下數(shù)據(jù)庫配置檢查。
注: 有關如何配置 CVU 的說明,可在本文前面的“
使用集群驗證實用程序的前提條件”一節(jié)中找到。
$ cd /home/oracle/orainstall/clusterware/cluvfy$ CV_HOME=/home/oracle/orainstall/clusterware/cluvfy; export CV_HOME$ CV_JDKHOME=/home/oracle/orainstall/clusterware/cluvfy/jdk14; export CV_JDKHOME$ ./runcluvfy.sh stage -pre dbcfg -n linux1,linux2 -d ${ORACLE_HOME} -verbose
查看 CVU 報告。注意,該報告將包含我們在檢查 CRS 安裝前任務時收到的錯誤:找不到一組合適的 VIP接口。可以忽略該錯誤,沒什么問題。
創(chuàng)建集群化數(shù)據(jù)庫
要開始數(shù)據(jù)庫創(chuàng)建過程,運行以下命令:
$ dbca & 屏幕名稱 答復
Welcome 屏幕 選擇“Oracle Real Application Clusters database”。
Operations 選擇 Create a Database。
Node Selection 單擊 Select All 按鈕選擇所有服務器:linux1 和 linux2。
Database Templates 選擇 Custom Database。
Database Identification 選擇:
Global Database Name: racdb.idevelopment.info
SID Prefix:racdb
我將 idevelopment.info 用于數(shù)據(jù)庫域。您可以使用任何域。請記住,此域不必為有效的 DNS 域。
Management Option 保留此處的默認選項,即“Configure the Database with Enterprise Manager / Use Database Control for Database Management”。
Database Credentials 我選擇 Use the Same Password for All Accounts。輸入口令(兩 次)并確保此口令不是以數(shù)字開頭。
Storage Options 對于本指南,我們將選擇 use Automatic Storage Management (ASM)。
Create ASM Instance 提供要用于新 ASM 實例的 SYS 口令。
此外,從 Oracle 10g 第 2 版開始,ASM 實例服務器參數(shù)文件 (SPFILE) 需要位于共享磁盤上。您將需要修改“Create server parameter file (SPFILE)”的默認條目以駐留在 OCFS2 分區(qū)上,如下所示:/u02/oradata/racdb/dbs/spfile+ASM.ora.所有其他選項可以保留其默認值。
然后將有一個對話框詢問您是否要創(chuàng)建并啟動 ASM 實例。選擇 OK 按鈕確認此對話框。
OUI 將立即在 RAC 集群的所有節(jié)點上創(chuàng)建并啟動 ASM 實例。
ASM Disk Groups
首先,單擊 Create New 按鈕。這將彈出“Create Disk Group”窗口,其中顯示了我們在前面使用 ASMLib 創(chuàng)建的四個卷。
如果在本文前面部分創(chuàng)建的卷沒有顯示在“Select Member Disks”窗口中:(ORCL:VOL1、ORCL:VOL2、ORCL:VOL3 和 ORCL:VOL4),則單擊“Change Disk Discovery Path”按鈕并輸入“ORCL:VOL*”。
對于第一個“Disk Group Name”,我使用了字符串“RACDB_DATA1”。在“Select Member Disks”窗口中選擇前兩個 ASM 卷(ORCL:VOL1 和 ORCL:VOL2)。將“Redundancy”設置為“Normal”。
確認此窗口中的所有值均正確后,單擊 [OK] 按鈕。這將顯示“ASM Disk Group Creation”對話框。完成 ASM 磁盤組創(chuàng)建過程時,您將返回到“ASM Disk Groups”窗口。
再次單擊 Create New 按鈕。對于第二個“Disk Group Name”,我使用了字符串“FLASH_RECOVERY_AREA”。在“Select Member Disks”窗口中選擇后兩個 ASM 卷(ORCL:VOL3 和 ORCL:VOL4)。將“Redundancy”設置為“Normal”。
確認此窗口中的所有值均正確后,單擊 [OK] 按鈕。這將顯示“ASM Disk Group Creation”對話框。
完成 ASM 磁盤組創(chuàng)建過程后,您將返回到“ASM Disk Groups”窗口,其中創(chuàng)建并選擇了兩個磁盤組。
使用新建的磁盤組名稱“RACDB_DATA1”旁邊的復選框選擇僅一個磁盤組(確保未選擇 “FLASH_RECOVERY_AREA”的磁盤組),然后單擊 [Next] 繼續(xù)。
Database File Locations
我選擇使用默認值,即使用 Oracle Managed Files:
Database Area: +RACDB_DATA1
Recovery Configuration 選中“Specify Flash Recovery Area”選項。
對于“Flash Recovery Area”,單擊 [Browse] 按鈕并選擇磁盤組名“+FLASH_RECOVERY_AREA”。
我使用的磁盤組的大小約為 17GB。定義快速恢復區(qū)大小時,使用整個卷減去 10% — (17-10%=15 GB)。我使用了 15 GB (15360MB) 的“Flash Recovery Area Size”。
Database Content 我將所有數(shù)據(jù)庫組件(和目標表空間)設置為它們的默認值,但選擇 Example Schemas 也完全可以。由于我們安裝了 Oracle 隨附 CD 軟件,因此該選項可用。
Database Services 對于此測試配置,單擊 Add,然后輸入 racdb_taf 作為“Service Name”。將這兩個實例設置為 Preferred,并為“TAF Policy”選擇“Basic”。
Initialization Parameters 根據(jù)您的環(huán)境更改任意參數(shù)。我保留了所有這些參數(shù)的默認設置。
Database Storage 根據(jù)您的環(huán)境更改任意參數(shù)。我保留了所有這些參數(shù)的默認設置。
Creation Options 保留默認選項 Create Database。我還始終選擇“Generate Database Creation Scripts”。單擊 Finish 啟動數(shù)據(jù)庫創(chuàng)建過程。出現(xiàn)數(shù)據(jù)庫創(chuàng)建報告和腳本生成對話框后,數(shù)據(jù)庫創(chuàng)建將啟動。
在“Summary”屏幕上單擊 OK。
End of Database Creation 在數(shù)據(jù)庫創(chuàng)建結束時,退出 DBCA。
注:退出 DBCA 后,在大約 30-60 秒內,您不會收到來自對話框窗口的任何反饋。過一會兒,將彈出另一對話框,指示它正在啟動所有 Oracle 實例以及 HA 服務“racdb_taf”。這可能需要幾分鐘的時間才能完成。完成時,所有窗口和對話框將關閉。
完成 DBCA 后,您就啟動了一個功能完善的 Oracle RAC 集群!
$ $ORA_CRS_HOME/bin/crs_stat -tName Type Target State Host------------------------------------------------------------ora....SM1.asm application ONLINE ONLINE linux1ora....X1.lsnr application ONLINE ONLINE linux1ora.linux1.gsd application ONLINE ONLINE linux1ora.linux1.ons application ONLINE ONLINE linux1ora.linux1.vip application ONLINE ONLINE linux1ora....SM2.asm application ONLINE ONLINE linux2ora....X2.lsnr application ONLINE ONLINE linux2ora.linux2.gsd application ONLINE ONLINE linux2ora.linux2.ons application ONLINE ONLINE linux2ora.linux2.vip application ONLINE ONLINE linux2ora.racdb.db application ONLINE ONLINE linux1ora....b1.inst application ONLINE ONLINE linux1ora....b2.inst application ONLINE ONLINE linux2ora...._taf.cs application ONLINE ONLINE linux1ora....db1.srv application ONLINE ONLINE linux1ora....db2.srv application ONLINE ONLINE linux2
驗證 racdb_taf 服務
在創(chuàng)建 Oracle 集群化數(shù)據(jù)庫的過程中,您添加了一個名為 racdb_taf 的服務,我們將用它來連接啟用了TAF 的數(shù)據(jù)庫。使用以下命令來驗證已成功添加 racdb_taf 服務:
SQL> show parameter serviceNAME TYPE VALUE-------------------- ----------- --------------------------------service_names string racdb.idevelopment.info, racdb_taf如果定義的唯一服務是用于 racdb.idevelopment.info 的,則您將需要手動將此服務添加到兩個實例中:SQL> show parameter serviceNAME TYPE VALUE-------------------- ----------- --------------------------service_names string racdb.idevelopment.infoSQL> alter system set service_names = 2 'racdb.idevelopment.info, racdb_taf' scope=both;
26. 安裝后任務 —(可選)
本章描述可應用于新的 Oracle 10g 環(huán)境以增強可用性和數(shù)據(jù)庫管理的幾個可選任務。
重新編譯無效對象
運行 utlrp.sql 腳本來立即重新編譯所有無效的 PL/SQL程序包,而不是在首次訪問它們時再重新編譯。這是個可選步驟,但建議您選擇該步驟。$ sqlplus / as sysdbaSQL> @?/rdbms/admin/utlrp.sql
在 RAC 環(huán)境中啟用存檔日志
無論是單個實例還是集群化數(shù)據(jù)庫,Oracle 都會跟蹤對數(shù)據(jù)庫塊的所有更改并記錄到聯(lián)機重做日志文件 中。在 OracleRAC 環(huán)境中,每個實例將具有自己的聯(lián)機重做日志文件集,稱為線程。每個 Oracle實例將以循環(huán)方式使用其聯(lián)機重做日志組。一個聯(lián)機重做日志填充之后,Oracle將轉至下一個聯(lián)機重做日志。如果數(shù)據(jù)庫處于“存檔日志模式”,Oracle將創(chuàng)建該聯(lián)機重做日志的一個副本,然后再對其進行重用。一個線程至少必須包含兩個聯(lián)機重做日志(或聯(lián)機重做日志組)。對于單個實例的配置也同樣如此。單個實例至少必須包含兩個聯(lián)機重做日志(或聯(lián)機重做日志組)。
聯(lián)機重做日志文件的大小完全獨立于另一個實例的重做日志大小。盡管在大多數(shù)配置中該大小是相同的,但是該大小可能會隨每個節(jié)點的負載和備份/恢復注意事項而異。還值得一提的是,每個實例都具有對自己的聯(lián)機重做日志文件的獨占式寫訪問權限。但是在正確配置的 RAC環(huán)境中,如果某個實例異常中斷,每個實例都可以讀取該實例的當前聯(lián)機重做日志文件以執(zhí)行實例恢復。因此,聯(lián)機重做日志需要位于一個共享存儲設備上(就像數(shù)據(jù)庫文件一樣)。
正如本文前面所提到的那樣,Oracle 以循環(huán)方式寫入其聯(lián)機重做日志文件。當前的聯(lián)機重做日志填充之后,Oracle將切換到下一個聯(lián)機重做日志。為簡化介質恢復,Oracle 允許 DBA將數(shù)據(jù)庫置于“存檔日志模式”,以在聯(lián)機重做日志填充后(并且得到重用之前)創(chuàng)建它的副本。該過程稱為存檔。
利用 Database Configuration Assistant (DBCA),用戶可以將一個新數(shù)據(jù)庫配置為存檔日志模式,但是大多數(shù)DBA在最初創(chuàng)建數(shù)據(jù)庫期間選擇跳過該選項。在這種情況下,數(shù)據(jù)庫沒有處于存檔日志模式,只需將數(shù)據(jù)庫置于存檔日志模式。但是請注意,這將需要短暫的數(shù)據(jù)庫中斷。從 Oracle RAC 配置的一個節(jié)點,執(zhí)行以下任務將支持 RAC 的數(shù)據(jù)庫置于存檔日志模式。對于本文,我將使用節(jié)點 linux1,該節(jié)點運行 racdb1 實例:
登錄到一個節(jié)點(即 linux1),通過在當前實例中將 cluster_database 設置為 FALSE 來禁用集群實例參數(shù): $ sqlplus / as sysdba SQL> alter system set cluster_database=false scope=spfile sid='racdb1';
關閉所有 訪問集群化數(shù)據(jù)庫的實例: $ srvctl stop database -d racdb
使用本地實例,掛載 數(shù)據(jù)庫: $ sqlplus / as sysdba SQL> startup mount
啟用存檔: SQL> alter database archivelog;
通過在當前實例中將實例參數(shù) cluster_database 修改為 TRUE, 重新啟用對集群的支持: SQL> alter system set cluster_database=true scope=spfile sid='racdb1';
關閉本地實例: SQL> shutdown immediate
使用 srvctl 備份所有 實例: $ srvctl start database -d racdb
(可選)使用 srvctl 備份所有服務(即 TAF): $ srvctl start service -d racdb
登錄到本地實例,驗證存檔日志模式已啟用: $ sqlplus / as sysdba SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 29 Next log sequence to archive 30 Current log sequence 30
啟用存檔日志模式后,RAC 配置中的每個實例都可以自動存檔重做日志!
下載并安裝自定義 Oracle 數(shù)據(jù)庫腳本
DBA 依賴 Oracle的數(shù)據(jù)字典視圖和動態(tài)性能視圖以支持并更好地管理他們的數(shù)據(jù)庫。盡管這些視圖提供一個簡單方便的機制來查詢有關數(shù)據(jù)庫的重要信息,但是擁有一個用于查詢這些視圖的準確、隨時可用的 SQL 腳本集合還是有幫助的。
在本節(jié)中,您將下載并安裝 Oracle DBA腳本集合,用于管理數(shù)據(jù)庫的多個方面,包括空間管理、性能、備份、安全性和會話管理??梢允褂靡韵骆溄?a target="_blank" >http://www.idevelopment.info/data/Oracle/DBA_scripts/common.zip下載 Oracle DBA 腳本存檔。使用 oracle 用戶帳戶將 common.zip存檔下載到集群中每個節(jié)點的 $ORACLE_BASE 目錄。對于本文,將 common.zip 存檔復制到 /u01/app/oracle。接下來,將存檔文件解壓縮到 $ORACLE_BASE 目錄。
例如,使用 oracle 用戶帳戶在 Oracle RAC 集群中的每個節(jié)點上執(zhí)行以下命令:
$ mv common.zip /u01/app/oracle$ cd /u01/app/oracle$ unzip common.zip
最后一步是驗證(或設置)當前 UNIX shell 相應的環(huán)境變量,以確保在任何目錄中 Oracle SQL 腳本都可以從SQL*Plus 運行。對于 UNIX,驗證以下環(huán)境變量已設置并包含在您的登錄 shell 腳本中:
ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/adminexport ORACLE_PATH
注:ORACLE_PATH 環(huán)境變量應該已在 .bash_profile登錄腳本中設置,該登錄腳本是在
為oracle 用戶帳戶創(chuàng)建登錄腳本一節(jié)中創(chuàng)建的。
既然 Oracle DBA 腳本已解壓縮并且 UNIX 環(huán)境變量 ($ORACLE_PATH)已設置為相應的目錄,現(xiàn)在您登錄到 SQL*Plus 后應該能夠在 $ORACLE_BASE/common/oracle/sql中運行任何 SQL 腳本。例如,要在以 DBA 用戶身份登錄到 Oracle 數(shù)據(jù)庫后查詢表空間信息,使用以下命令:
SQL> @dba_tablespacesStatus Tablespace Name TS Type Ext. Mgt. Seg. Mgt. Tablespace Size Used (in bytes) Pct. Used--------- --------------- ------------ ---------- --------- ------------------ ------------------ ---------ONLINE UNDOTBS1 UNDO LOCAL MANUAL 1,283,457,024 9,043,968 1ONLINE SYSAUX PERMANENT LOCAL AUTO 524,288,000 378,732,544 72ONLINE USERS PERMANENT LOCAL AUTO 2,147,483,648 321,257,472 15ONLINE SYSTEM PERMANENT LOCAL MANUAL 838,860,800 505,544,704 60ONLINE INDX PERMANENT LOCAL AUTO 1,073,741,824 65,536 0ONLINE UNDOTBS2 UNDO LOCAL MANUAL 1,283,457,024 22,282,240 2ONLINE TEMP TEMPORARY LOCAL MANUAL 1,073,741,824 92,274,688 9------------------ ------------------ ---------avg 23sum 8,225,030,144 1,329,201,1527 rows selected.
要在登錄到 SQL*Plus 后獲得所有可用 Oracle DBA 腳本的列表,運行 help.sql 腳本:
SQL> @help.sql========================================Automatic Shared Memory Management========================================asmm_components.sql========================================Automatic Storage Management========================================asm_alias.sqlasm_clients.sqlasm_diskgroups.sqlasm_disks.sqlasm_disks_perf.sqlasm_drop_files.sqlasm_files.sqlasm_files2.sqlasm_templates.sql< --- SNIP --- >perf_top_sql_by_buffer_gets.sqlperf_top_sql_by_disk_reads.sql========================================Workspace Manager========================================wm_create_workspace.sqlwm_disable_versioning.sqlwm_enable_versioning.sqlwm_freeze_workspace.sqlwm_get_workspace.sqlwm_goto_workspace.sqlwm_merge_workspace.sqlwm_refresh_workspace.sqlwm_remove_workspace.sqlwm_unfreeze_workspace.sqlwm_workspaces.sql
創(chuàng)建共享 Oracle 口令文件
在本節(jié)中,我將介紹配置一個在 Oracle 集群化數(shù)據(jù)庫的所有實例之間共享的 Oracle 口令文件所需的步驟。UNIX中每個實例的數(shù)據(jù)庫口令文件位于 $ORACLE_HOME/dbs/orapw<ORACLE_SID>,包含所有具有SYSDBA 權限的數(shù)據(jù)庫用戶的列表。當一個數(shù)據(jù)庫用戶被授予 SYSDBA角色時,實例會將此記錄在您登錄到的實例的數(shù)據(jù)庫口令文件中。但是,集群中的其他實例怎么樣呢?其他實例上的數(shù)據(jù)庫口令文件沒有得到更新,不包含剛被授予SYSDBA 角色的用戶。因此,類似 RMAN 之類的嘗試以這個具有 SYSDBA權限的新用戶身份登錄的程序如果嘗試使用的口令文件不包含該用戶名的實例,將會失敗。
解決此問題的常見方法是將一個數(shù)據(jù)庫口令文件放到一個共享的/集群化文件系統(tǒng)上,然后創(chuàng)建從每個實例到該單一版本數(shù)據(jù)庫口令文件的符號鏈接。由于本文描述的環(huán)境使用 Oracle 集群文件系統(tǒng) (OCFS2),因此我們將使用它來存儲該單一版本的數(shù)據(jù)庫口令文件。
在本節(jié)中,我們將 ASM 實例的 Oracle 口令文件也包括在內。
在掛載在 /u02/oradata/racdb 上的集群文件系統(tǒng)上創(chuàng)建數(shù)據(jù)庫口令目錄。僅從集群中的一個節(jié)點使用 oracle 用戶帳戶 (linux1) 執(zhí)行以下命令: $ mkdir -p /u02/oradata/racdb/dbs
從集群中的一個節(jié)點 (linux1),將數(shù)據(jù)庫口令文件移至集群文件系統(tǒng)上的數(shù)據(jù)庫口令目錄。選擇一個節(jié)點,該 節(jié)點應該包含具有最新的 SYSDBA 添加內容的數(shù)據(jù)庫口令文件。大多數(shù)情況下,這不會有什么問題,因為任何缺少的項都可以通過授予它們 SYSDBA 角色來添加(而且這是一個全新的安裝,此時您不可能創(chuàng)建了任何 SYSDBA 用戶)。注意,執(zhí)行以下操作時,無需關閉數(shù)據(jù)庫服務器。在 linux1 中使用 oracle 用戶帳戶執(zhí)行以下命令:
$ mv $ORACLE_HOME/dbs/orapw+ASM1 /u02/oradata/racdb/dbs/orapw+ASM $ mv $ORACLE_HOME/dbs/orapwracdb1 /u02/oradata/racdb/dbs/orapwracdb $ ln -s /u02/oradata/racdb/dbs/orapw+ASM $ORACLE_HOME/dbs/orapw+ASM1 $ ln -s /u02/oradata/racdb/dbs/orapwracdb $ORACLE_HOME/dbs/orapwracdb1
在集群的第二個節(jié)點 (linux2) 中執(zhí)行以下命令: $ rm $ORACLE_HOME/dbs/orapw+ASM2 $ rm $ORACLE_HOME/dbs/orapwracdb2 $ ln -s /u02/oradata/racdb/dbs/orapw+ASM $ORACLE_HOME/dbs/orapw+ASM2 $ ln -s /u02/oradata/racdb/dbs/orapwracdb $ORACLE_HOME/dbs/orapwracdb2
現(xiàn)在,當一個用戶被授予 SYSDBA 角色后,所有實例都可以訪問相同的口令文件:
SQL> GRANT sysdba TO scott;
27. 驗證 TNS 聯(lián)網文件
確保在集群的兩個 Oracle RAC 節(jié)點上配置 TNS 聯(lián)網文件!
listener.ora
我們已經在
第24 節(jié)中介紹了如何為集群化環(huán)境創(chuàng)建 TNS 監(jiān)聽器配置文件 (listener.ora)。應正確配置 listener.ora文件且無需對它修改。
為清楚起見,我將節(jié)點 linux1 的 listener.ora 文件副本包含在了本指南的
支持文件中。我還包含了 tnsnames.ora 文件的副本,該文件由Oracle 配置并可以用于測試透明應用程序故障切換 (TAF)。此文件應已在集群的兩個 Oracle RAC 節(jié)點上進行了配置。
您可以將這些條目中的任何條目包含在需要訪問集群化數(shù)據(jù)庫的其他客戶端計算機上。
從外部客戶端連接集群化數(shù)據(jù)庫
這是一個可選步驟,但我要執(zhí)行它以便確認正確配置了 TNS 文件。使用其他安裝了 Oracle 的計算機(例如,連接網絡的 Windows計算機)并從集群的任一節(jié)點添加為集群化數(shù)據(jù)庫創(chuàng)建的 TNS 條目(位于 tnsnames.ora 中)。
注:驗證您從其進行連接的計算機對所有主機名的解析與它們在 listener.ora和 tnsnames.ora 文件中的顯示完全一樣。對于本文檔,您從其連接的計算機應該能夠在本地主機文件中或通過 DNS解析以下主機名:
192.168.1.100 linux1192.168.1.101 linux2192.168.1.200 linux1-vip192.168.1.201 linux2-vip
嘗試使用在 tnsnames.ora 文件中定義的所有可用服務名稱連接集群化數(shù)據(jù)庫:
C:\> sqlplus system/manager@racdb2C:\> sqlplus system/manager@racdb1C:\> sqlplus system/manager@racdb_tafC:\> sqlplus system/manager@racdb
28. 創(chuàng)建/更改表空間
創(chuàng)建集群化數(shù)據(jù)庫時,我們將所有表空間設置為它們的默認大小。如果您將一個大型驅動器用作共享存儲,則可能想創(chuàng)建一個大小可以調整的測試數(shù)據(jù)庫。
以下是幾個可為測試數(shù)據(jù)庫修改和創(chuàng)建所有表空間的 SQL 命令。請記住,此示例中使用的數(shù)據(jù)庫文件名稱(OMF 文件)可能與 OracleDatabase Configuration Assistant (DBCA)為您的環(huán)境創(chuàng)建的數(shù)據(jù)庫文件名稱不同。完成本節(jié)后,在適合的地方替換在您的環(huán)境中創(chuàng)建的數(shù)據(jù)文件名。可以使用以下查詢確定環(huán)境的文件名:
SQL> select tablespace_name, file_name2 from dba_data_files3 union4 select tablespace_name, file_name5 from dba_temp_files;TABLESPACE_NAME FILE_NAME--------------- --------------------------------------------------EXAMPLE +RACDB_DATA1/racdb/datafile/example.257.570913311INDX +RACDB_DATA1/racdb/datafile/indx.270.570920045SYSAUX +RACDB_DATA1/racdb/datafile/sysaux.260.570913287SYSTEM +RACDB_DATA1/racdb/datafile/system.262.570913215TEMP +RACDB_DATA1/racdb/tempfile/temp.258.570913303UNDOTBS1 +RACDB_DATA1/racdb/datafile/undotbs1.261.570913263UNDOTBS2 +RACDB_DATA1/racdb/datafile/undotbs2.265.570913331USERS +RACDB_DATA1/racdb/datafile/users.264.570913355
$ sqlplus / as sysdbaSQL> create user scott identified by tiger default tablespace users;SQL> grant dba, resource, connect to scott;SQL> alter database datafile '+RACDB_DATA1/racdb/datafile/users.264.570913355' resize 1024m;SQL> alter tablespace users add datafile '+RACDB_DATA1' size 1024m autoextend off;SQL> create tablespace indx datafile '+RACDB_DATA1' size 1024m2 autoextend on next 50m maxsize unlimited3 extent management local autoallocate4 segment space management auto;SQL> alter database datafile '+RACDB_DATA1/racdb/datafile/system.262.570913215' resize 800m;SQL> alter database datafile '+RACDB_DATA1/racdb/datafile/sysaux.260.570913287' resize 500m;SQL> alter tablespace undotbs1 add datafile '+RACDB_DATA1' size 1024m2 autoextend on next 50m maxsize 2048m;SQL> alter tablespace undotbs2 add datafile '+RACDB_DATA1' size 1024m2 autoextend on next 50m maxsize 2048m;SQL> alter database tempfile '+RACDB_DATA1/racdb/tempfile/temp.258.570913303' resize 1024m;
以下是我為我的測試數(shù)據(jù)庫環(huán)境定義的表空間快照:
Status Tablespace Name TS Type Ext. Mgt. Seg. Mgt. Tablespace Size Used (in bytes) Pct. Used--------- --------------- ------------ ---------- --------- ------------------ ------------------ ---------ONLINE UNDOTBS1 UNDO LOCAL MANUAL 1,283,457,024 85,065,728 7ONLINE SYSAUX PERMANENT LOCAL AUTO 524,288,000 275,906,560 53ONLINE USERS PERMANENT LOCAL AUTO 2,147,483,648 131,072 0ONLINE SYSTEM PERMANENT LOCAL MANUAL 838,860,800 500,301,824 60ONLINE EXAMPLE PERMANENT LOCAL AUTO 157,286,400 83,820,544 53ONLINE INDX PERMANENT LOCAL AUTO 1,073,741,824 65,536 0ONLINE UNDOTBS2 UNDO LOCAL MANUAL 1,283,457,024 3,801,088 0ONLINE TEMP TEMPORARY LOCAL MANUAL 1,073,741,824 27,262,976 3------------------ ------------------ ---------avg 22sum 8,382,316,544 976,355,3288 rows selected.
29. 驗證 RAC 集群和數(shù)據(jù)庫配置
應在集群的兩個 Oracle RAC 節(jié)點上執(zhí)行以下 RAC 驗證檢查!然而,對于本文,我將只從 linux1執(zhí)行檢查。
本節(jié)提供了幾個可用于驗證 Oracle RAC 10g 配置的 srvctl 命令和 SQL 查詢。
有五個為 SRVCTL 定義的節(jié)點級任務:
添加和刪除節(jié)點級應用程序
設置和取消設置節(jié)點級應用程序的環(huán)境
管理節(jié)點應用程序
管理 ASM 實例
啟動和停止一組包含虛擬 IP 地址、監(jiān)聽器、Oracle 通知服務和 Oracle 企業(yè)管理器代理的程序(出于維護目的)。
所有實例和服務的狀態(tài)
$ srvctl status database -d racdbInstance racdb1 is running on node linux1Instance racdb2 is running on node linux2
單個實例的狀態(tài)
$ srvctl status instance -d racdb -i racdb2Instance racdb2 is running on node linux2
在數(shù)據(jù)庫全局命名服務的狀態(tài)
$ srvctl status service -d racdb -s racdb_tafService racdb_taf is running on instance(s) racdb1, racdb2
特定節(jié)點上節(jié)點應用程序的狀態(tài)
$ srvctl status nodeapps -n linux1VIP is running on node: linux1GSD is running on node: linux1Listener is running on node: linux1ONS daemon is running on node: linux1
ASM 實例的狀態(tài)
$ srvctl status asm -n linux1ASM instance +ASM1 is running on node linux1.
列出配置的所有數(shù)據(jù)庫
$ srvctl config databaseracdb
顯示 RAC 數(shù)據(jù)庫的配置
$ srvctl config database -d racdblinux1 racdb1 /u01/app/oracle/product/10.2.0/db_1linux2 racdb2 /u01/app/oracle/product/10.2.0/db_1
顯示指定集群數(shù)據(jù)庫的所有服務
$ srvctl config service -d racdbracdb_taf PREF: racdb1 racdb2 AVAIL:
顯示節(jié)點應用程序的配置 —(VIP、GSD、ONS、監(jiān)聽器)
$ srvctl config nodeapps -n linux1 -a -g -s -lVIP exists.: /linux1-vip/192.168.1.200/255.255.255.0/eth0GSD exists.ONS daemon exists.Listener exists.
顯示 ASM 實例的配置
$ srvctl config asm -n linux1+ASM1 /u01/app/oracle/product/10.2.0/db_1
集群中所有正在運行的實例
SELECTinst_id, instance_number inst_no, instance_name inst_name, parallel, status, database_status db_status, active_state state, host_name hostFROM gv$instanceORDER BY inst_id;INST_ID INST_NO INST_NAME PAR STATUS DB_STATUS STATE HOST-------- -------- ---------- --- ------- ------------ --------- -------1 1 racdb1 YES OPEN ACTIVE NORMAL linux12 2 racdb2 YES OPEN ACTIVE NORMAL linux2
位于磁盤組中的所有數(shù)據(jù)文件
select name from v$datafileunionselect member from v$logfileunionselect name from v$controlfileunionselect name from v$tempfile;NAME-------------------------------------------+FLASH_RECOVERY_AREA/racdb/controlfile/current.258.570913191+FLASH_RECOVERY_AREA/racdb/onlinelog/group_1.257.570913201+FLASH_RECOVERY_AREA/racdb/onlinelog/group_2.256.570913211+FLASH_RECOVERY_AREA/racdb/onlinelog/group_3.259.570918285+FLASH_RECOVERY_AREA/racdb/onlinelog/group_4.260.570918295+RACDB_DATA1/racdb/controlfile/current.259.570913189+RACDB_DATA1/racdb/datafile/example.257.570913311+RACDB_DATA1/racdb/datafile/indx.270.570920045+RACDB_DATA1/racdb/datafile/sysaux.260.570913287+RACDB_DATA1/racdb/datafile/system.262.570913215+RACDB_DATA1/racdb/datafile/undotbs1.261.570913263+RACDB_DATA1/racdb/datafile/undotbs1.271.570920865+RACDB_DATA1/racdb/datafile/undotbs2.265.570913331+RACDB_DATA1/racdb/datafile/undotbs2.272.570921065+RACDB_DATA1/racdb/datafile/users.264.570913355+RACDB_DATA1/racdb/datafile/users.269.570919829+RACDB_DATA1/racdb/onlinelog/group_1.256.570913195+RACDB_DATA1/racdb/onlinelog/group_2.263.570913205+RACDB_DATA1/racdb/onlinelog/group_3.266.570918279+RACDB_DATA1/racdb/onlinelog/group_4.267.570918289+RACDB_DATA1/racdb/tempfile/temp.258.57091330321 rows selected.
屬于“RACDB_DATA1”磁盤組的所有 ASM 磁盤
SELECT pathFROM v$asm_diskWHERE group_number IN (select group_numberfrom v$asm_diskgroupwhere name = 'RACDB_DATA1');PATH----------------------------------ORCL:VOL1ORCL:VOL2
30. 啟動/停止集群
此時,我們已經完全安裝并配置了 Oracle RAC 10g 并擁有了一個功能完善的集群化數(shù)據(jù)庫。
至此完成所有工作后,您可能會問“那我又怎樣啟動和停止服務呢?”如果您遵循了本指南中的說明,則所有服務(包括 Oracle 集群件、所有Oracle 實例、企業(yè)管理器數(shù)據(jù)庫控制臺等)應在 Linux 節(jié)點每次重新引導時自動啟動。
但有時您可能想要關閉某個節(jié)點,然后手動重新啟動它?;蛘?,您可能發(fā)現(xiàn)企業(yè)管理器沒有啟動它而需要啟動它。本節(jié)提供了啟動和停止集群環(huán)境的命令。
確保您是以 oracle UNIX 用戶登錄的。我們將從 linux1 運行本節(jié)中的所有命令:
# su - oracle$ hostnamelinux1
停止 Oracle RAC 10g 環(huán)境
第一步是停止 Oracle 實例。當此實例(和相關服務)關閉后,關閉 ASM 實例。最后,關閉節(jié)點應用程序(虛擬 IP、GSD、TNS監(jiān)聽器和 ONS)。
$ export ORACLE_SID=racdb1$ emctl stop dbconsole$ srvctl stop instance -d racdb -i racdb1$ srvctl stop asm -n linux1$ srvctl stop nodeapps -n linux1
啟動 Oracle RAC 10g 環(huán)境
第一步是啟動節(jié)點應用程序(虛擬 IP、GSD、TNS 監(jiān)聽器和 ONS)。當成功啟動節(jié)點應用程序后,啟動 ASM 實例。最后,啟動Oracle 實例(和相關服務)以及企業(yè)管理器數(shù)據(jù)庫控制臺。
$ export ORACLE_SID=racdb1$ srvctl start nodeapps -n linux1$ srvctl start asm -n linux1$ srvctl start instance -d racdb -i racdb1$ emctl start dbconsole
使用 SRVCTL 啟動/停止所有實例
啟動/停止所有實例及其啟用的服務。我只是覺得有意思就把此步驟作為關閉所有實例的一種方法加進來了!
$ srvctl start database -d racdb$ srvctl stop database -d racdb
31. 透明的應用程序故障切換 (TAF)
企業(yè)通常需要他們的企業(yè)應用程序提供 99.99%(甚至 99.999%)的可用性。想一想,要確保全年停機時間不超過 0.5小時或者甚至沒有停機時間得花費多大代價!為了滿足眾多這種高可用性要求,企業(yè)正投資于可以在一個參與系統(tǒng)出現(xiàn)故障時提供自動故障切換的機制。就Oracle 數(shù)據(jù)庫的可用性而言,Oracle RAC 10g 通過它的高級故障切換機制提供了一個卓越的解決方案。OracleRAC 10g包含了提供持續(xù)可用性所需的必要組件,這些組件均在一個集群配置中工作;當集群中的某個參與系統(tǒng)出現(xiàn)故障時,將把用戶自動遷移到其他可用系統(tǒng)。
透明的應用程序故障切換 (TAF) 選件是 Oracle RAC 10g一個負責處理故障切換的主要組件。它將把所有斷開的數(shù)據(jù)庫連接(和進程)重新連接到集群的其他節(jié)點上。故障切換對用戶是完全透明的。
這最后一節(jié)簡短介紹了 TAF 在 Oracle RAC 10g 中的工作方式。請注意,對 Oracle RAC 10g中的故障切換進行全面介紹可能需要單獨的一篇文章,我在此處只想提供一個簡短概述。
一個重要的說明是,TAF 自動在 OCI 庫中發(fā)生。也就是說,您的應用程序(客戶端)代碼不需要更改便可以利用 TAF。但您需要在Oracle TNS 文件 tnsnames.ora 中執(zhí)行某些配置步驟。(請記住,直到編寫本文時,由于 Java 瘦客戶端從不讀取tnsnames.ora,因此它將無法參與 TAF。)
設置 tnsnames.ora 文件
在演示 TAF 之前,我們需要驗證在一個非 RAC 客戶端計算機(如果您有一臺安裝了 Windows 計算機)上的tnsnames.ora 文件中存在一個有效的條目。確保您安裝了 Oracle RDBMS 軟件。(實際上,您只需要在客戶端上安裝 Oracle軟件。)
在本指南的創(chuàng)建集群化數(shù)據(jù)庫過程中,我們創(chuàng)建了一個將用于測試 TAF 的名為 RACDB_TAF的新服務。它為負載均衡和故障切換提供了所有必需的配置參數(shù)??梢詫⒋藯l目的內容復制到客戶端計算機(本示例中使用了我的 Windows便攜式計算機)上的 %ORACLE_HOME%\network\admin\tnsnames.ora 文件中:
...RACDB_TAF =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = linux1-vip)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = linux2-vip)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdb_taf.idevelopment.info)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5))))...查看會話的故障切換信息的 SQL 查詢
以下 SQL 查詢可以用來查看一個會話的故障切換類型、故障切換方法和是否發(fā)生了故障切換。我們將在這個例子中自始至終使用這個查詢。
COLUMN instance_name FORMAT a13COLUMN host_name FORMAT a9COLUMN failover_method FORMAT a15COLUMN failed_over FORMAT a11SELECTinstance_name, host_name, NULL AS failover_type, NULL AS failover_method, NULL AS failed_overFROM v$instanceUNIONSELECTNULL, NULL, failover_type, failover_method, failed_overFROM v$sessionWHERE username = 'SYSTEM';
TAF 演示
從 Windows 計算機(或其他非 RAC 客戶端計算機)中,以 SYSTEM 用戶登錄使用 racdb_taf服務的集群化數(shù)據(jù)庫:
C:\> sqlplus system/manager@racdb_tafCOLUMN instance_name FORMAT a13COLUMN host_name FORMAT a9COLUMN failover_method FORMAT a15COLUMN failed_over FORMAT a11SELECTinstance_name, host_name, NULL AS failover_type, NULL AS failover_method, NULL AS failed_overFROM v$instanceUNIONSELECTNULL, NULL, failover_type, failover_method, failed_overFROM v$sessionWHERE username = 'SYSTEM';INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER------------- --------- ------------- --------------- -----------racdb1 linux1SELECT BASIC NO
不要注銷上面的 SQL*Plus 會話!
我們已經運行了上面的查詢,現(xiàn)在我們應該使用 abort 選項來關閉 linux1 上的 racdb1實例。要執(zhí)行這一操作,您可以使用 srvctl 命令行實用程序,如下所示:
# su - oracle$ srvctl status database -d racdbInstance racdb1 is running on node linux1Instance racdb2 is running on node linux2$ srvctl stop instance -d racdb -i racdb1 -o abort$ srvctl status database -d racdbInstance racdb1 is not running on node linux1Instance racdb2 is running on node linux2現(xiàn)在我們返回到我們的 SQL 會話,然后重新運行緩沖中的 SQL 語句:COLUMN instance_name FORMAT a13COLUMN host_name FORMAT a9COLUMN failover_method FORMAT a15COLUMN failed_over FORMAT a11SELECTinstance_name, host_name, NULL AS failover_type, NULL AS failover_method, NULL AS failed_overFROM v$instanceUNIONSELECTNULL, NULL, failover_type, failover_method, failed_overFROM v$sessionWHERE username = 'SYSTEM';INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER------------- --------- ------------- --------------- -----------racdb2 linux2SELECT BASIC YESSQL> exit
從上面的演示中,我們可以看到現(xiàn)在已將上述會話故障切換到了 linux2 的實例 racdb2 上。
32. 故障診斷
確保 RAC 節(jié)點名沒有出現(xiàn)在環(huán)回地址中
確保在 /etc/hosts 文件的環(huán)回地址中不包含節(jié)點名(linux1或 linux2)。如果機器名出現(xiàn)在環(huán)回地址條目中,如下所示:
127.0.0.1 linux1 localhost.localdomain localhost
需要按如下所示將其刪除: 127.0.0.1 localhost.localdomain localhost
如果 RAC 節(jié)點名出現(xiàn)在環(huán)回地址中,您在 RAC 安裝期間將接收到以下錯誤信息:
ORA-00603: ORACLE server session terminated by fatal error
或者 ORA-29702: error occurred in Cluster Group Service operation
驗證 localhost 在/etc/hosts 文件中定義為回送地址
確保 localhost.localdomain 和 localhost項作為回送地址包含在每個 Oracle RAC 節(jié)點的 /etc/hosts 文件中:
127.0.0.1 localhost.localdomain localhost如果 /etc/hosts 文件中不存在 localhost 項,Oracle 集群件將無法啟動應用程序資源— 特別是 ONS 進程。該錯誤將指明“Failed to get IP forlocalhost”并寫入 ONS 的日志文件。例如:CRS-0215 could not start resource 'ora.linux1.ons'. Check log file"/u01/app/crs/log/linux1/racg/ora.linux1.ons.log"for more details.ONS 日志文件包含類似以下內容的行:
Oracle Database 10g CRS Release 10.2.0.1.0 Production Copyright1996, 2005 Oracle.保留所有權利。
2007-04-14 13:10:02.729: [RACG][3086871296][13316][3086871296][ora.linux1.ons]:Failed to get IPfor localhost (1)
Failed to get IP for localhost (1)
Failed toget IP for localhost (1)
onsctl:ons failed to start
...
在所有的集群節(jié)點上設置正確的日期和時間
在安裝 Oracle 集群件、數(shù)據(jù)庫以及隨附 CD 期間,Oracle Universal Installer (OUI)首先將軟件安裝到運行該安裝程序的本地節(jié)點(即 linux1)。然后,將該軟件以遠程方式復制到集群中的其余節(jié)點(即linux2)。在遠程復制過程中,OUI 將在每個遠程節(jié)點上執(zhí)行 UNIX“tar”命令,以提取進行了存檔和復制的文件。如果執(zhí)行安裝的節(jié)點上的日期和時間大于其要進行復制的節(jié)點上的日期和時間,那么 OUI 將在“tar”中引發(fā)一個錯誤,以指示其在試圖提取帶有時間戳的文件時失敗。
Error while copying directory/u01/app/crs with exclude file list 'null' to nodes 'linux2'.[PRKC-1002 : All the submitted commands did not execute successfully]---------------------------------------------linux2:/bin/tar: ./bin/lsnodes: time stamp 2009-07-28 09:21:34 is 735 s in the future/bin/tar: ./bin/olsnodes: time stamp 2009-07-28 09:21:34 is 735 s in the future...(more errors on this node)
請注意,盡管這看起來像 OUI 中一個嚴重的錯誤,但您完全可以將其看作是一個警告而忽略。“tar”命令 DOES確實提取了文件;然而,當您在遠程節(jié)點上執(zhí)行文件列表時(使用 ls -l),它們將缺少時間字段,直到服務器上的時間大于該文件的時間戳。
在啟動以上任何一個所述安裝之前,確保盡可能將集群的每個成員節(jié)點設置為相同的時間和日期。由于兩個 Oracle RAC 節(jié)點使用相同的參考Network Time Protocol 服務器,因此 Oracle 強烈建議使用多數(shù)操作系統(tǒng)的 Network TimeProtocol 功能來執(zhí)行該操作。
然而,訪問 Network Time Protocol服務器并非始終可用。在這種情況下,為集群中的節(jié)點手動設置日期和時間,確保要從其中執(zhí)行軟件安裝的節(jié)點 (linux1)的時間和日期小于集群中所有其他節(jié)點 (linux2)。我一般使二者之間相差 20 秒,如以下示例所示:
設置 linux1 的日期和時間:
# date -s "7/28/2009 23:00:00"
設置 linux2 的日期和時間:
# date -s "7/28/2009 23:00:20"
本文中所述的雙節(jié)點 RAC 配置沒有使用 Network Time Protocol 服務器。
Openfiler — 邏輯卷在引導時未激活
使用連接到 Openfiler 服務器的 USB 驅動器時,出現(xiàn)了一個我多次遇到的問題。重新引導 Openfiler 服務器后,系統(tǒng)能夠識別USB 驅動器,但是無法加載邏輯卷,也無法將以下消息寫入 /var/log/messages —(也可通過 dmesg獲得):iSCSI Enterprise Target Software - version 0.4.14iotype_init(91) register fileioiotype_init(91) register blockioiotype_init(91) register nullioopen_path(120) Can't open /dev/rac1/crs -2fileio_attach(268) -2open_path(120) Can't open /dev/rac1/asm1 -2fileio_attach(268) -2open_path(120) Can't open /dev/rac1/asm2 -2fileio_attach(268) -2open_path(120) Can't open /dev/rac1/asm3 -2fileio_attach(268) -2open_path(120) Can't open /dev/rac1/asm4 -2fileio_attach(268) -2
請注意,我不是說只有與 Openfiler 服務器連接的 USB驅動器才會出現(xiàn)該問題。其他類型的驅動器也可能會出現(xiàn)該問題,但是,我只看到了 USB 驅動器出現(xiàn)了該問題!
如果您確實收到該錯誤,首先應在 Openfiler 服務器中使用 lvscan 命令檢查所有邏輯卷的狀態(tài):
# lvscaninactive '/dev/rac1/crs' [2.00 GB] inheritinactive '/dev/rac1/asm1' [115.94 GB] inheritinactive '/dev/rac1/asm2' [115.94 GB] inheritinactive '/dev/rac1/asm3' [115.94 GB] inheritinactive '/dev/rac1/asm4' [115.94 GB] inherit
注意,每個邏輯卷的狀態(tài)設置為 inactive —(工作系統(tǒng)上每個邏輯卷的狀態(tài)將設置為 ACTIVE)。
目前,我知道有兩種方法可以讓 Openfiler 在重新引導時自動加載邏輯卷,下面將對這兩種方法進行描述。
方法 1
首先,關閉集群中的兩個 Oracle RAC 節(jié)點(linux1 和 linux2)。然后,在Openfiler 服務器中,針對每個連續(xù)的重新引導,手動將每個邏輯卷設置為 ACTIVE:
# lvchange -a y /dev/rac1/crs# lvchange -a y /dev/rac1/asm1# lvchange -a y /dev/rac1/asm2# lvchange -a y /dev/rac1/asm3# lvchange -a y /dev/rac1/asm4
也可以使用卷組更改命令將所有邏輯卷的狀態(tài)設置為 active,如下所示:
# vgscanReading all physical volumes. This may take a while...Found volume group "rac1" using metadata type lvm2# vgchange -ay5 logical volume(s) in volume group "rac1" now active
將每個邏輯卷設置為 active 后,使用 lvscan 命令再次驗證狀態(tài):
# lvscanACTIVE '/dev/rac1/crs' [2.00 GB] inheritACTIVE '/dev/rac1/asm1' [115.94 GB] inheritACTIVE '/dev/rac1/asm2' [115.94 GB] inheritACTIVE '/dev/rac1/asm3' [115.94 GB] inheritACTIVE '/dev/rac1/asm4' [115.94 GB] inherit
作為最后的測試,重新引導 Openfiler 服務器以確保引導過程后每個邏輯卷將設置為ACTIVE。驗證每個邏輯卷在引導時都將激活之后,檢查 iSCSI 目標服務是否正在運行:
# service iscsi-target statusietd (pid 2668) is running...
最后,重新啟動集群中的每個 Oracle RAC 節(jié)點(linux1 和 linux2)。
方法 2
該方法由
Martin Jones友情提供。他的方法包括修正 /etc/rc.sysinit 腳本,主要是等待 USB 磁盤(在本例中為 /dev/sda)得到檢測。對 /etc/rc.sysinit 腳本(下面將進行描述)進行更改之后,驗證外部驅動器已打開電源,然后重新引導Openfiler 服務器。
以下是 Openfiler 服務器上的 /etc/rc.sysinit 腳本的一小部分,其中包含 Martin建議的更改(用藍色高亮顯示):
..............................................................# LVM2 initialization, take 2if [ -c /dev/mapper/control ]; thenif [ -x /sbin/multipath.static ]; thenmodprobe dm-multipath >/dev/null 2>&1/sbin/multipath.static -v 0if [ -x /sbin/kpartx ]; then/sbin/dmsetup ls --target multipath --exec "/sbin/kpartx -a"fifiif [ -x /sbin/dmraid ]; thenmodprobe dm-mirror > /dev/null 2>&1/sbin/dmraid -i -a yfi#-----#----- MJONES - Customisation Start#-----# Check if /dev/sda is readywhile [ ! -e /dev/sda ]doecho "Device /dev/sda for first USB Drive is not yet ready."echo "Waiting..."sleep 5doneecho "INFO - Device /dev/sda for first USB Drive is ready."#-----#----- MJONES - Customisation END#-----if [ -x /sbin/lvm.static ]; thenif /sbin/lvm.static vgscan > /dev/null 2>&1 ; thenaction $"Setting up Logical VolumeManagement:" /sbin/lvm.static vgscan --mknodes --ignorelockingfailure &&/sbin/lvm.static vgchange -a y --ignorelockingfailurefififi# Clean up SELinux labelsif [ -n "$SELINUX" ]; thenfor file in /etc/mtab /etc/ld.so.cache ; do[ -r $file ] && restorecon $file >/dev/null 2>&1donefi..............................................................
最后,重新啟動集群中的每個 Oracle RAC 節(jié)點(linux1 和 linux2)。
OCFS2 — o2cb_ctl:創(chuàng)建節(jié)點時無法訪問集群服務
使用 ocfs2console 為 OCFS2 配置節(jié)點時,可能會遇到以下錯誤:
o2cb_ctl: Unable to access cluster service while creating node
當您首次啟動 ocfs2console 時,該錯誤不會顯示。當集群配置有問題或者您在使用 ocfs2console進行最初的集群配置后沒有保存 該設置時,將出現(xiàn)該消息。這是一個錯誤!
解決方法是退出 ocfs2console,卸載 o2cb 模塊,并刪除 ocfs2 集群配置文件 /etc/ocfs2/cluster.conf。我還希望刪除 /config 目錄。刪除 ocfs2 集群配置文件后,重新啟動 ocfs2console程序。
例如:
# /etc/init.d/o2cb offline ocfs2# /etc/init.d/o2cb unloadUnmounting ocfs2_dlmfs filesystem: OKUnloading module "ocfs2_dlmfs": OKUnmounting configfs filesystem: OKUnloading module "configfs": OK# rm -f /etc/ocfs2/cluster.conf# rm -rf /config# ocfs2console &
這一次,將添加節(jié)點!
OCFS2 — 調整 O2CB 心跳閾值
在本文之前的版本中(與將 iSCSI 用作共享存儲相反,將 FireWire 用作共享存儲),我能夠安裝和配置OCFS2、格式化新卷并最后安裝位于新 OCFS2 卷上的 Oracle 集群件(及其所需的兩個共享文件,即表決磁盤和 OCR文件)。我能夠安裝 Oracle 集群件并可以使用 FireWire 看到共享驅動器,但當集群件軟件在兩個節(jié)點上運行大約 15分鐘后,我收到了許多鎖定和掛起。掛起的節(jié)點總是變化不定(在我的示例中為 linux1 或 linux2)。此外,無論是 I/O 負載較高還是根本沒有,對該節(jié)點崩潰(掛起)都沒有影響。
查看 OCFS2 的跟蹤文件后,對表決磁盤的訪問顯然太慢(超過了 O2CB 心跳閾值)并導致 Oracle集群件軟件(以及節(jié)點)崩潰??刂婆_上將顯示如下所示的消息:
...Index 0: took 0 ms to do submit_bio for readIndex 1: took 3 ms to do waiting for read completionIndex 2: took 0 ms to do bio alloc writeIndex 3: took 0 ms to do bio add page writeIndex 4: took 0 ms to do submit_bio for writeIndex 5: took 0 ms to do checking slotsIndex 6: took 4 ms to do waiting for write completionIndex 7: took 1993 ms to do msleepIndex 8: took 0 ms to do allocating bios for readIndex 9: took 0 ms to do bio alloc readIndex 10: took 0 ms to do bio add page readIndex 11: took 0 ms to do submit_bio for readIndex 12: took 10006 ms to do waiting for read completion(13,3):o2hb_stop_all_regions:1888 ERROR: stopping heartbeat on all active regions.Kernel panic - not syncing: ocfs2 is very sorry to be fencing this system by panicing
我所采用的解決方案是將 O2CB 心跳閾值由默認值 31(在 OCFS2 的早期版本中通常為 7)增加到61。某些設置可能需要更高的設置。這是一個可配置參數(shù),用于計算節(jié)點“隔離”自身所用的時間。在 OCFS2 的安裝和配置期間,我們在“
將O2CB 配置為在引導時啟動并調整 O2CB 心跳閾值”一節(jié)中調整了該值。如果您遇到來自 OCFS2的內核錯誤并需要增加心跳閾值,使用“
將O2CB 配置為在引導時啟動并調整 O2CB 心跳閾值”一節(jié)中描述的過程。
下面將描述如何手動調整 O2CB 心跳閾值。
首先,我們了解一下如何確定 O2CB 心跳閾值的當前設置。為此,可以查詢 /proc 文件系統(tǒng),如下所示:
# cat /proc/fs/ocfs2_nodemanager/hb_dead_threshold31
我們看到值為 31,但該值表示什么呢?其實,它用在以下公式中確定隔離時間(秒):
[fence time in seconds] = (O2CB_HEARTBEAT_THRESHOLD - 1) * 2
因此,如果 O2CB 心跳閾值為 31,則隔離時間將為:
(31 - 1) * 2 = 60 seconds
如果我們需要一個更大的閾值(如 120 秒),則需將 O2CB_HEARTBEAT_THRESHOLD 調整為 61,如下所示:
(61 - 1) * 2 = 120 seconds
現(xiàn)在我們了解一下如何手動將 O2CB 心跳閾值從 31 增大為 61。該任務需要在集群的所有 Oracle RAC節(jié)點上執(zhí)行。首先需要修改 /etc/sysconfig/o2cb 文件并將 O2CB_HEARTBEAT_THRESHOLD設置為 61:
## This is a configuration file for automatic startup of the O2CB# driver. It is generated by running /etc/init.d/o2cb configure.# Please use that method to modify this file## O2CB_ENABELED: 'true' means to load the driver on boot.O2CB_ENABLED=true# O2CB_BOOTCLUSTER: If not empty, the name of a cluster to start.O2CB_BOOTCLUSTER=ocfs2# O2CB_HEARTBEAT_THRESHOLD: Iterations before a node is considered dead.O2CB_HEARTBEAT_THRESHOLD=61# O2CB_IDLE_TIMEOUT_MS: Time in ms before a network connection is considered dead.O2CB_IDLE_TIMEOUT_MS=30000# O2CB_KEEPALIVE_DELAY_MS: Max time in ms before a keepalive packet is sentO2CB_KEEPALIVE_DELAY_MS=2000# O2CB_RECONNECT_DELAY_MS: Min time in ms between connection attemptsO2CB_RECONNECT_DELAY_MS=2000
修改 /etc/sysconfig/o2cb 文件后,需要更改 o2cb 配置。同樣,需要在集群的所有Oracle RAC 節(jié)點上執(zhí)行該操作。
# umount /u02# /etc/init.d/o2cb offline ocfs2# /etc/init.d/o2cb unload# /etc/init.d/o2cb configureConfiguring the O2CB driver.This will configure the on-boot properties of the O2CB driver.The following questions will determine whether the driver is loaded onboot. The current values will be shown in brackets ('[]'). Hitting<ENTER> without typing an answer will keep that current value. Ctrl-Cwill abort.Load O2CB driver on boot (y/n) [n]: yCluster to start on boot (Enter "none" to clear) [ocfs2]: ocfs2Specify heartbeat dead threshold (>=7) [31]: 61Specify network idle timeout in ms (>=5000) [30000]: 30000Specify network keepalive delay in ms (>=1000) [2000]: 2000Specify network reconnect delay in ms (>=2000) [2000]: 2000Writing O2CB configuration: OKLoading module "configfs": OKMounting configfs filesystem at /sys/kernel/config: OKLoading module "ocfs2_nodemanager": OKLoading module "ocfs2_dlm": OKLoading module "ocfs2_dlmfs": OKMounting ocfs2_dlmfs filesystem at /dlm: OKStarting O2CB cluster ocfs2: OK
我們現(xiàn)在可以再次檢查以確保這些設置應用于 o2cb 集群堆棧:
# cat /proc/fs/ocfs2_nodemanager/hb_dead_threshold61
必須注意,用作 O2CB 心跳閾值的 61 并不適用于所有配置。在某些情況下,O2CB 心跳閾值可能需要增加到 601 以防止 OCFS2驚擾內核。
Oracle 集群件安裝:在最后一個節(jié)點上運行 root.sh 失敗
在 Oracle 集群件安裝過程完成后,試著在 root.sh 腳本末尾配置 vipca并對最后一個節(jié)點運行該腳本,這將會失?。?div style="height:15px;">
Oracle CRS stack installed and running under init(1M)Running vipca(silent) for configuring nodeapps/u01/app/crs/jdk/jre//bin/java: error while loadingshared libraries: libpthread.so.0:cannot open shared object file: No such file or directory
收到此錯誤后,請保持 OUI 處于開啟狀態(tài)。在本節(jié)所述問題尚未得到全部解決之前,請不要單擊“Execute ConfigurationScripts”對話框上的 OK 按鈕。
出現(xiàn)該錯誤的原因是,Linux 內核的這些版本會采用 Oracle 以前的一個解決辦法,即在 vipca 和 srvctl中使用 LD_ASSUME_KERNEL 設置來修補 Linux 線程中的一個原有缺陷。而這個解決辦法在OEL5、RHEL5 或 SLES10 上不再有效,故而產生錯誤。
要解決上面的問題,編輯 vipca(在所有節(jié)點的 CRS bin 目錄下)以撤消對 LD_ASSUME_KERNEL的設置。在第 120 行左右的 IF 語句之后,添加一條 unset 命令,從而確保 LD_ASSUME_KERNEL未經過設置,如下所示:
if [ "$arch" = "i686" -o "$arch" = "ia64" ] then LD_ASSUME_KERNEL=2.4.19 export LD_ASSUME_KERNEL fi unset LD_ASSUME_KERNEL <<== Line to be added
類似地,對于 srvctl(在所有節(jié)點的 CRS bin 目錄,以及(若已安裝)RDBMS bin 和ASM bin 目錄下),通過在第 168 行左右添加一行來取消設置 LD_ASSUME_KERNEL,具體應如下所示:
LD_ASSUME_KERNEL=2.4.19 export LD_ASSUME_KERNEL unset LD_ASSUME_KERNEL <<== Line to be added
<ORA_CRS_HOME>/bin/vipca<ORA_CRS_HOME>/bin/srvctl<RDBMS_HOME>/bin/srvctl<ASM_HOME>/bin/srvctl # (If exists)
應用 10.2.0.2 或 10.2.0.3 補丁集后,這些補丁集仍將包括這些對 OEL5、RHEL5 或 SLES10來說多余的設置。此問題是由開發(fā)引起的,在 10.2.0.4 補丁集中得以修復。
另請注意,這里我們顯式取消設置 LD_ASSUME_KERNEL而不是僅僅通過將其標為注釋語句來取消其設置,這是為了處理這樣的情況:用戶在其環(huán)境(登錄 shell)中設置了該變量。
在解決了上述 LD_ASSUME_KERNEL 問題后,如果 VIP IP 在不可路由的地址范圍 [10.x.x.x、172.(16-31).x.x或 192.168.x.x] 內,則 vipca 現(xiàn)在無法運行,會出現(xiàn)以下錯誤:
[root@linux2 ~]# $ORA_CRS_HOME/bin/vipcaError 0(Native: listNetInterfaces:[3])[Error 0(Native: listNetInterfaces:[3])]
有幾種方法來解決此問題。本解決辦法的目標是使“$ORA_CRS_HOME/bin/oifcfg getif”命令的輸出中包含“public”和“cluster_interconnect”接口。如果您試著運行上述命令,會發(fā)現(xiàn)該命令不提供任何信息,這就意味著我們要做點什么了!
我們記得,在 Oracle 集群件的安裝過程中,我用 192.168.1.0 作為 public 接口,用 192.168.2.0作為 cluster_interconnect 接口。
# $ORA_CRS_HOME/bin/oifcfg setif -global eth0/192.168.1.0:public# $ORA_CRS_HOME/bin/oifcfg setif -global eth1/192.168.2.0:cluster_interconnect
[root@linux2 ~]# $ORA_CRS_HOME/bin/oifcfg getifeth0 192.168.1.0 global publiceth1 192.168.2.0 global cluster_interconnect
在解決上述所有問題之后,以 root 用戶身份從發(fā)生錯誤的最后一個節(jié)點手動重新運行 vipca (GUI)。請記住,vipca是一個 GUI,需要根據(jù)您的 X 服務器設置 DISPLAY 變量:
33. 結論
Oracle10g RAC 允許 DBA 配置一個擁有優(yōu)越的容錯和負載平衡功能的數(shù)據(jù)庫解決方案。然而,對于那些希望更熟悉Oracle10g RAC 的特性和優(yōu)勢的 DBA 而言,他們將發(fā)現(xiàn)即使一個小型 RAC 集群的配置成本也在 15,000 美元到20,000 美元之間。
本文希望為您提供一個低成本的解決方案,通過該方案可使用 Oracle Enterprise Linux 和 iSCSI技術安裝和配置經濟實惠的 Oracle10g 第 2 版 RAC 集群。本文介紹的 RAC 解決方案總共需要大約 2,700美元,可以為 DBA 提供一個功能完善的 Oracle10g 第 2 版 RAC集群。雖然本文使用的硬件對于教學目的而言足夠穩(wěn)定,但永遠不應認為其適用于生產環(huán)境。
34. 致謝
。Bane 不僅向我介紹了Openfiler,還與我共享了他對于該產品以及如何針對 Oracle RAC 最好地利用它的經驗和知識。他的研究和辛苦工作使得配置Openfiler 的任務得以圓滿完成。Bane 還參與了硬件建議和測試。
接下來,我要感謝 Oracle ACE Werner Puschitz 在“在 Red Hat Enterprise LinuxAdvanced Server 3 上安裝具有真正應用服務器集群 (RAC) 的 Oracle 數(shù)據(jù)庫 10g”一文中所做的杰出貢獻。本文以及他撰寫的其他幾篇文章提供的有關 Oracle RAC 的信息在任何其他 Oracle文檔中都是無法找到的。沒有他的辛苦工作以及對配置 OCFS2 和 ASMLib 等問題的研究,本文可能根本無法完成。如果您有興趣拜讀Werner Puschitz 撰寫的有關 Linux 內部結構以及 Oracle 深入配置方面的技術文章,請訪問他的網站
]畢業(yè)于位于特洛克的加利福尼亞州立大學的 Stanislaus 分校,獲得了計算機科學學士學位,曾經當過 16 年以上的高級 DBA和軟件工程師。他是一位 Oracle 認證專家、Java 開發(fā)認證專家、Oracle ACE 和作家,當前作為高級數(shù)據(jù)庫管理員就職于
。Jeff 的工作包括高級性能調節(jié)、Java 和 PL/SQL 編程、容量規(guī)劃、數(shù)據(jù)庫安全性以及UNIX、Linux 和 Windows NT 環(huán)境中的物理/邏輯數(shù)據(jù)庫設計。Jeff 的其他興趣還涉及數(shù)學加密理論、Java 和 C的編程語言處理器(編譯器和解釋器)、LDAP、編寫基于 Web 的數(shù)據(jù)庫管理工具,當然還有 Linux。