Oracle10g RAC安裝手冊 (zt)

tolywang發表於2008-01-31
整理人:hxre
2006-11-20
目 錄
概述 5
第一部分 Oracle10g RAC資料庫簡介 6
oracle10g RAC結構 6
硬體 6
共享磁碟儲存 7
專用網路 7
公共網路 7
Oracle 叢集就緒服務(CRS) 7
Oracle RAC 軟體 8
Oracle 自動儲存管理 (ASM) 8
第二部分 安裝Redhat AS 4.0 (Update2) 8
第三部分 針對Oracle配置redhat 11
[@more@]
3.1 驗證系統要求 11
3.2 核心引數 12
3.3 新增oracle使用者和組 12
3.4 網路設定 13
3.5 為使用者等效性設定SSH 14
第四部分 ASM配置共享磁碟 16
4.1安裝ASM軟體 17
4.2用ASM Library Driver配置ASM的共享磁碟 18
4.2.1磁碟分割槽(fdisk) 18
4.2.2建立ASM磁碟 20
第五部分 安裝配置Oracle RAC 20
5.1 配置環境變數 20
5.1.1 編輯.bashrc設定 ORACLE_BASE 和 ORACLE_HOME 等環境變數 20
5.1.2建立CRS安裝路徑 21
5.1.3建立oracle安裝路徑 22
5.2安裝和解除安裝CRS 23
5.2.1安裝CRS 23
5.2.2解除安裝CRS 24
5.3安裝 Oracle 資料庫軟體RAC 26
5.3.1 圖形介面配置 26
5.4 解除安裝 Oracle 資料庫軟體RAC 27
第六部分 建立和刪除資料庫 27
6.1 建立資料庫 27
6.2 刪除資料庫 29
6.3 驗證資料庫安裝正確 29
6.4 資料庫troubleshooting 29
第七部分 附錄 31
7.1 CRS程式介紹 31


概述
本手冊在以下環境中試驗安裝成功:
1、曙光s4800伺服器(AMD 64位 雙網路卡)2臺,硬碟已做好raid 1
2、光纖盤陣、光纖交換機
3、伺服器安裝 redhat as4 update 2,核心版本2.6.9-22.ELsmp
本次安裝需要的軟體:
1、10201_database_linux_x86_64.cpio.gz
2、10201_clusterware_linux_x86_64.cpio.gz
3、oracleasm-support-2.0.3-1.x86_64.rpm
4、oracleasmlib-2.0.2-1.x86_64.rpm
5、oracleasm-2.6.9-22.ELsmp-2.0.3-1.x86_64.rpm
6、binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm
下載地址:
1、2
3、4、5
6、
本手冊的根本目標是安裝並實現Asm+RAC,安裝過程中以安裝實際情況為準,並參考網上很多實施方案、OTN網站等大量文件,力爭把安裝中遇到的問題及解決方法完整的表達出來。
本文件由 Oracle10g RAC資料庫簡介、安裝Redhat as4.0、針對Oracle配置redhat、ASM配置共享磁碟、安裝配置Oracle RAC、建立和刪除資料庫六部分組成。

!以下部分如果沒有特別說明,則要求在每個節點分別執行



第一部分 Oracle10g RAC資料庫簡介
oracle10g RAC結構
下圖顯示了 Oracle RAC 10g 配置的主要元件。 叢集中的節點通常是單獨的伺服器(主機), 本文中,兩個節點即是兩臺s4800伺服器。根據叢集規模的大小,可以擴充套件到更多節點。

硬體
在硬體級別上,RAC 叢集中的各節點共享三種功能:
1.對共享磁碟儲存的訪問
2.與專用網路的連線
3.對公共網路的訪問。
共享磁碟儲存
Oracle RAC 依賴於一個共享磁碟體系結構。 資料庫檔案、聯機重做日誌和資料庫的控制檔案必須都能為叢集中的每個節點所訪問。 共享磁碟還儲存 Oracle Cluster Registry 和 Voting Disk(稍後討論)。 配置共享儲存有多種方法,包括直接連線磁碟(通常是使用銅纜或光纖的 SCSI)、儲存區域網 (SAN) 和網路連線儲存 (NAS)。
專用網路
每個叢集節點透過專用高速網路連線到所有其他節點,這種專用高速網路也稱為叢集互聯或高速互聯 (HSI)。 Oracle 的 Cache Fusion 技術使用這種網路將每個主機的實體記憶體 (RAM) 有效地組合成一個快取記憶體。 Oracle Cache Fusion 透過在專用網路上傳輸某個 Oracle 例項快取記憶體中儲存的資料允許其他任何例項訪問這些資料。 它還透過在叢集節點中傳輸鎖定和其他同步資訊保持資料完整性和快取記憶體一致性。
專用網路通常是用千兆乙太網構建的,但是對於高容量的環境,很多廠商提供了專門為 Oracle RAC 設計的低延遲、高頻寬的專有解決方案。 Linux 還提供一種將多個物理 NIC 繫結為一個虛擬 NIC 的方法(此處不涉及)來增加頻寬和提高可用性。
公共網路
為維持高可用性,為每個叢集節點分配了一個虛擬 IP 地址 (VIP)。 如果主機發生故障,則可以將故障節點的 IP 地址重新分配給一個可用節點,從而允許應用程式透過相同的 IP 地址繼續訪問資料庫。
Oracle 叢集就緒服務(CRS)
Oracle RAC 10g 引進了 Oracle 叢集就緒服務 (CRS) — 一組用於叢集環境的與平臺無關的系統服務。 在 RAC 和 Oracle 並行伺服器先前版本中,Oracle 依靠廠商提供的叢集管理軟體來提供這些服務。 雖然 CRS 與廠商供應的叢集件協同工作,但 Oracle RAC 10g 所需元件只是 CRS。 實際上,必須在安裝 RAC 之前安裝 CRS。

Oracle RAC 軟體
Oracle RAC 10g 軟體是 RAC 資料庫的核心,每個叢集節點上都必須安裝。 幸運的是,Oracle Universal Installer (OUI) 可以完成在每個節點上安裝 RAC 軟體的大部分工作。 您只需在一個節點上安裝 RAC — OUI 會完成其餘的工作。
Oracle 自動儲存管理 (ASM)
ASM 是 Oracle 資料庫 10g 中的一個新特性,它以一種與平臺無關的方式提供檔案系統服務、邏輯容量管理器和軟體 RAID。Oracle ASM 可以條帶化和映象磁碟,從而實現了在資料庫被載入的情況下新增或移除磁碟以及自動平衡 I/O 以刪除“熱點”。它還支援直接和非同步的 I/O,並使用 Oracle9i 中引入的 Oracle 資料管理器 API(簡化的 I/O 系統呼叫介面)。
Oracle ASM 不是通用的檔案系統,只能用於 Oracle 資料檔案、重做日誌、控制檔案和 RMAN 快速恢復區。ASM 中的檔案既可以由資料庫自動建立和命名(使用 Oracle 管理檔案特性),也可以由 DBA 手動建立和命名。由於作業系統無法訪問 ASM 中儲存的檔案,因此對使用 ASM 檔案的資料庫執行備份和恢復操作的唯一途徑就是使用恢復管理器 (RMAN)。
ASM 作為單獨的 Oracle 例項實施,只有它在執行時其他資料庫才能訪問它。ASM 需要的記憶體不多: 對大部分系統來說只需 64MB。 在 Oracle RAC 環境中,ASM 例項必須執行在每個叢集節點上。
第二部分 安裝Redhat AS 4.0 (Update2)
本文件例項安裝在曙光S4800伺服器上,雙網路卡、每個節點透過光纖交換機連線兩個盤陣。安裝過程中最好把連線節點和盤陣的光纖拔下;或者如果不拔下光纖,安裝過程中分割槽時只選擇本機硬碟,不要選擇盤陣。
假設伺服器全新安裝redhat,並且伺服器為oracle專用。
Oracle 10g 經認證可以在不需要更新的情況下執行 Redhat AS 4.0的基本版本。
1.使用第一張 CD 啟動伺服器。
您可能需要更改 BIOS 設定,以允許從 CD 啟動。
2.啟動螢幕上出現時在底部顯示 boot:。
選擇 Enter,從控制檯上執行圖形安裝。(對於其他安裝方法和選項,請參閱 Red Hat 安裝指南。)
安裝程式掃描硬體,短暫顯示 Red Hat 閃屏,然後開始顯示一系列螢幕提示。
3.選擇語言
選擇簡體中文。
4.配置鍵盤
接受預設值。
5.歡迎螢幕
單擊 下一步。
6.配置滑鼠
接受預設值。
7.安裝型別
選擇 Custom。
8.設定磁碟分割槽
本文不介紹磁碟分割槽的詳細方法,而是假設您熟悉磁碟分割槽方法。
(警告:對磁碟進行錯誤分割槽是刪除硬碟上所有內容的最可靠、最快捷的方法之一。如果不確定如何分割槽,請先停下來,找人幫幫您,否則您將冒丟失資料的危險!)
本文使用預設分割槽方案(檔案系統均為 ext3),須注意如下一點:
-交換分割槽 — 將此分割槽大小至少設定為系統 RAM 的兩倍,但32位系統不要超過 2GB。如果需要大於 2GB 的交換空間,則建立多個交換分割槽。
9.配置啟動載入程式
接受預設值。
10.配置網路
此時配置兩個網路卡,用規劃好的兩個地址,一個公網地址,一個私有地址。
使用靜態 IP 地址配置資料庫伺服器。單擊 Edit。
出現一個彈出視窗。取消選中 Configure using DHCP 核取方塊,並輸入伺服器的 IP 地址和網路掩碼。確保選中 Activate on boot,然後單擊 OK。
在 Hostname 框中,選擇 manually 並輸入主機名dbrac1……叢集依次類推。
在 Miscellaneous Settings 框中,輸入其他網路設定。
11.配置防火牆
本次將不配置防火牆。選擇 No firewall。
12.其他語言支援
接受預設值。
13.選擇時區
選擇適合您區域的時間設定。將系統時鐘設定為 UTC 對伺服器而言通常是一個很好的做法。為此,單擊 System clock uses UTC。
14.設定 Root 口令
輸入 root 的口令,並再次輸入以進行確認。
15.選擇程式包組
最下面選擇全選。
單擊 下一步 繼續操作。
16.準備安裝
單擊 下一步。
17.安裝程式包
軟體將被複制到硬碟並被安裝。根據提示更改光碟,然後在安裝完成時單擊 下一步。
18.配置圖形介面 (X)
接受預設值,除非安裝程式無法識別您的影片卡。如果您的影片卡無法被識別,則將無法繼續操作。
19.配置監視器
如果安裝程式正確識別了您的監視器,則接受預設值。否則,從列表中選擇一個相容的監視器。
20.定製圖形配置
接受預設值。
21.恭喜
從系統中取出安裝介質,然後單擊 下一步。
22.系統自動重新啟動並顯示一個新的歡迎螢幕。
單擊下一步。
23.許可協議
閱讀許可協議。如果同意其中的條款,則選擇 Yes, I agree to the License Agreement 並單擊下一步。
24.日期和時間
設定日期和時間。
如果要使用 NTP 伺服器(推薦),則選擇 Enable Network Time Protocol 並輸入 NTP 伺服器的名稱。
25.使用者帳戶
此時不要為 oracle 建立帳戶。本部分稍後將介紹如何建立 oracle 帳戶。
26.Red Hat Network
如果要立即使用或啟用 Red Hat Network 帳戶,則接受預設值,單擊 Next 並遵循 Red Hat 產品附帶的產品啟用說明。
如果不能連到網路,此時可不必啟用,隨便填上,檢測網路不通,跳過即可
27.其他 CD
單擊下一步。
28.完成設定
單擊下一步。
29.出現一個圖形登入螢幕。
30.恭喜!您的 Linux 軟體現已安裝完畢。
驗證安裝
驗證核心版本:
# uname -r
2.6.9-22.ELsmp
驗證已安裝的程式包:
# rpm -q make gcc gcc-c++ libaio libaio-devel
make-3.80-184.1
gcc-3.3.3-43.24
gcc-c++-3.3.3-43.24
libaio-0.3.98-18.3
libaio-devel-0.3.98-18.3
注:應顯示更高版本





第三部分 針對Oracle配置redhat
Linux 軟體現已安裝完畢,現在需要針對 Oracle 對其進行配置。
3.1 驗證系統要求
要驗證系統是否滿足 Oracle 10g 資料庫的最低要求,以 root 使用者身份登入並執行以下命令。
要檢視可用 RAM 和交換空間大小,執行以下命令:
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo

例如:
# grep MemTotal /proc/meminfo
MemTotal:512236 kB
# grep SwapTotal /proc/meminfo
SwapTotal:1574360 kB
所需最小 RAM 為 512MB,而所需最小交換空間為 1GB。對於 RAM 小於或等於 2GB 的系統,交換空間應為 RAM 數量的兩倍;對於 RAM 大於 2GB 的系統,交換空間應為 RAM 數量的一到兩倍。
Oracle 10g 軟體還需要 2.5GB 的可用磁碟空間,而資料庫則另需 1.2GB 的可用磁碟空間。/tmp 目錄至少需要 400MB 的可用空間。
3.2 核心引數
1.核心引數
在/etc/sysctl.conf中編輯:

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144


然後用執行/sbin/sysctl –p

2.hangcheck-timer設定
RAC節點間透過CSS來判斷通訊狀態,因此需要設定定時器來觸發判斷。該定時器就是linux核心自帶的hangcheck-timer。
具體操作:
在/etc/rc.local中加入(數值以具體情況而定,以下是預設值)
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
表示,每隔30秒檢查一下節點狀態,如果180秒內仍沒有反應,則重啟該節點。這也就是說,檢查的間隔最長為30+180秒,如果超過這個時間,則系統重啟。
Tip:如果系統尚不穩定,可將數值設定的大一些,這樣可以有充分的時間來修復系統,否則系統會進入迴圈重啟狀態。
3.3 新增oracle使用者和組
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle
# id oracle
uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),6(disk),1001(dba)

設定 oracle 帳戶的口令:
# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd:all authentication tokens updated successfully.

設定oracle的shell限制:
在/etc/security/limits.conf檔案中加入:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536


3.4 網路設定
注:此處使用的公共地址為規劃好後的地址,不能為臨時地址(除非試驗安裝)
RAC要求機群內的每個節點至少有兩塊網路卡,一個設定為公用(公網),對外提供服務;一個設定為私用(專用),提供節點內的告訴傳輸。此外還需要為公用網路卡配置一個虛擬地址,oracle需要藉此為使用者提供透明的高可用服務。具體介紹如下:
專用網路
每個叢集節點透過專用高速網路連線到所有其他節點,這種專用高速網路也稱為叢集互聯或高速互聯 (HSI)。 Oracle 的 Cache Fusion 技術使用這種網路將每個主機的實體記憶體 (RAM) 有效地組合成一個快取記憶體。 Oracle Cache Fusion 透過在專用網路上傳輸某個 Oracle 例項快取記憶體中儲存的資料允許其他任何例項訪問這些資料。 它還透過在叢集節點中傳輸鎖定和其他同步資訊保持資料完整性和快取記憶體一致性。
專用網路通常是用千兆乙太網構建的,但是對於高容量的環境,很多廠商提供了專門為 Oracle RAC 設計的低延遲、高頻寬的專有解決方案。 Linux 還提供一種將多個物理 NIC 繫結為一個虛擬 NIC 的方法(此處不涉及)來增加頻寬和提高可用性。
公共網路
為維持高可用性,為每個叢集節點分配了一個虛擬 IP 地址 (VIP)。 如果主機發生故障,則可以將故障節點的 IP 地址重新分配給一個可用節點,從而允許應用程式透過相同的 IP 地址繼續訪問資料庫。
修改/etc/hosts加入下面內容,:


127.0.0.1 localhost.localdomain localhost
# public address
10.45.170.17 dbrac1
10.45.170.18 dbrac2
# private address
172.168.0.17 dbrac1-eth0
172.168.0.18 dbrac2-eth0
# virtual address
10.45.170.117 dbrac1-vip
10.45.170.118 dbrac2-vip


虛擬地址可以隨便起一個(保證同一個網段),在安裝RAC的時候,vipca會自動將虛擬地址繫結在公共網路卡上的。


3.5 為使用者等效性設定SSH
在安裝 Oracle RAC 10g 期間,OUI 需要把檔案複製到叢集中的其他主機上並在其上執行程式。 為了允許 OUI 完成此任務,必須配置 SSH 以啟用使用者等效性。 用 SSH 建立使用者等效性就提供了一種在叢集中其他主機上覆制檔案和執行程式時不需要口令提示的安全方式。
第一步是生成 SSH 的公共金鑰和專用金鑰。 SSH 協議有兩個版本;版本 1 使用 RSA,版本 2 使用 DSA,因此我們將建立這兩種型別的金鑰,以確保 SSH 能夠使用任一版本。 ssh-keygen 程式將根據傳遞給它的引數生成任一型別的公共金鑰和專用金鑰。
當您執行 ssh-keygen 時,將提示您輸入一個用於儲存金鑰的位置。 當提示時只需按 Enter 接受預設值。 隨後將提示您輸入一個口令短語。 輸入您能記住的口令,然後再次輸入該口令進行確認。 當您完成以下步驟後,在 ~/.ssh 目錄中將會有四個檔案: id_rsa、id_rsa.pub、id_dsa 和 id_dsa.pub。 id_rsa 和 id_dsa 檔案是您的專用金鑰,千萬不要告訴任何人。 id_rsa.pub 和 id_dsa.pub 檔案是您的公共金鑰,必須將其複製到叢集中其他每個主機上。
在每個主機上,以 oracle 使用者身份登入:
$ mkdir ~/.ssh
$ chmod 755 ~/.ssh
$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
4b:df:76:77:72:ba:31:cd:c4:e2:0c:e6:ef:30:fc:37 oracle@ds1.orademo.org
注意:本例中此處一路按回車選擇預設
$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
af:37:ca:69:3c:a0:08:97:cb:9c:0b:b0:20:70:e3:4a oracle@ds1.orademo.org
注意:本例中此處一路按回車選擇預設

現在,必須將每個主機上的公共金鑰檔案 id_rsa.pub 和 id_dsa.pub 的內容複製到其他每個主機的 ~/.ssh/authorized_keys 檔案中。 使用 ssh 將每個檔案的內容複製到 ~/.ssh/authorized_keys 檔案。 請注意,當您使用 ssh 第一次訪問遠端主機時,其 RSA 金鑰將是未知的,從而將提示您確認是否希望連線該主機。 SSH 將記錄該遠端主機的 RSA 金鑰,並在以後連線該主機時不再做出相關提示。
只需在第一個主機上,以 oracle 使用者身份登入(複製本地帳戶的金鑰,以便連線本地主機的 ssh 能夠起作用):

(如果您要剪下和貼上這些命令,則分別執行它們。 SSH 每次會提示輸入 oracle 的口令,如果同時貼上這些命令,則第一個命令在提示輸入口令之前重新整理輸入緩衝區,從而導致其他命令將會丟失。)
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ ssh oracle@dbrac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'dbrac2 (10.49.9.100)' can't be established.
RSA key fingerprint is d1:23:a7:df:c5:fc:4e:10:d2:83:60:49:25:e8:eb:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'dbrac2,10.49.9.100' (RSA) to the list of known hosts.
oracle@dbrac2's password:
$ ssh oracle@dbrac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
oracle@dbrac2's password:
$ chmod 644 ~/.ssh/authorized_keys
要對第二個主機做同樣的處理。請注意,這次有的SSH不會提示您輸入oracle的口令。這是因為第一個主機(dbrac1)現在知道了第二個主機的公共金鑰,而SSH現在使用的是一種不同的認證協議。

建立使用者等效性
如果一切均設定正確,則您現在就可以使用 ssh 在其他叢集主機上不必輸入口令而登入、執行程式和複製檔案了。 透過在遠端叢集主機上執行諸如 date 等簡單命令來驗證使用者等效性:
$ ssh dbrac2 date
Sun Jun 27 19:07:19 CDT 2004
測試每個方向上所有伺服器的連通性是非常重要的。這樣會確保當 OUI 在 CRS 和資料庫軟體安裝期間試圖複製檔案時不會出現類似以下的訊息。 該訊息只有在遠端節點上第一次執行操作時才會出現,因此透過測試連通性,您不僅確保了遠端操作的正常執行,還完成了初始的安全金鑰交換。
The authenticity of host 'dbrac2 (10.49.9.100)' can't be established.
RSA key fingerprint is 8f:a3:19:76:ca:4f:71:85:42:c2:7a:da:eb:53:76:85.
Are you sure you want to continue connecting (yes/no)? yes
注意: 以上步驟執行完以後,需要執行和本機建立等效性,否則安裝CRS時也會出錯,在每個節點上分別執行:
$ ssh hostname
(此處hostname分別為dbrac1、dbrac2)






第四部分 ASM配置共享磁碟
配置共享磁碟的方法有三種:
1. Oracle 叢集檔案系統 (OCFS)
2. 自動儲存管理器 (ASM)
3. 原始裝置
從可擴充套件性和可管理性方面考慮,我們使用的是用ASM Library Driver配置ASM的共享磁碟。其他兩種配置共享磁碟的方法將在最後面的附錄部分介紹。




4.1安裝ASM軟體
從找到要下載的三個RPM 軟體包,注意,一定要與核心版本和系統平臺相符。
用root許可權執行:
# rpm -Uvh oracleasm-support-version.arch.rpm
oracleasm-kernel-version.arch.rpm
oracleasmlib-version.arch.rpm
在我們系統中,為:
#rpm –Uvh oracleasm-support-2.0.3-1.x86_64.rpm
oracleasm-2.6.9-22.ELsmp-2.0.3-1.x86_64.rpm
oracleasmlib-2.0.2-1.x86_64.rpm
1.Preparing... #################################### [100%]
2:oracleasm-support ############################## [ 33%]
3:oracleasm-2.6.9-22.ELsmp ########################## [ 66%]
Linking module oracleasm.o into the module path [ OK ]
3:oracleasmlib #################################### [100%]

對ASM進行配置:
# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
這將配置 Oracle ASM 庫驅動程式的啟動時屬性。以下問題將確定在啟動時是否載入驅動程式以及它將擁有的許可權。當前值將顯示在方括號(“[]”)中。按 而不鍵入回應將保留該當前值。按 Ctrl-C 將終止。
Default user to own the driver interface []:oracle
Default group to own the driver interface []:dba
Start Oracle ASM library driver on boot (y/n) [n]:y
Fix permissions of Oracle ASM disks on boot (y/n) [y]:y
Writing Oracle ASM library driver configuration done
Creating /dev/oracleasm mount point done
Loading module "oracleasm" done
Mounting ASMlib driver filesystem done
Scanning system for ASM disks done
AMS的命令如下所示:

:~> /etc/init.d/oracleasm
Usage: /etc/init.d/oracleasm
{start|stop|restart|enable|disable|configure|createdisk|deletedisk|querydisk|listdisks|scandisks|status}


現在,如下所示啟用 ASMLib 驅動程式。
# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration [ OK ]
Scanning system for ASM disks [ OK ]
ASM的安裝和配置是要在叢集中的每個節點上執行的


4.2用ASM Library Driver配置ASM的共享磁碟
注意:4.2.1和4.2.2部分只需在一個節點上完成
4.2.1磁碟分割槽(fdisk)
按本次儲存的分法,提供了一個15TB的RAID光纖盤陣並只劃了一個卷給資料庫用(當然以後空間不夠可以再加),對作業系統來說就是認到一個裝置。本次安裝中它認成/dev/sdb,進行fdisk操作,
劃3個分割槽,sdb1和sdb2都為1個G,剩下空間全部給sdb3。
sdb1和sdb2是用來做Oracle Cluster Registry (OCR) 和 Voting Disk。
sdb3是給ASM用的
(下面例子中數值可能不同,命令是相同的)
#fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel.Changes will remain in memory only,
until you decide to write them.After that, of course, the previous
content won't be recoverable.

The number of cylinders for this disk is set to 4427.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):p
Disk /dev/sdb:255 heads, 63 sectors, 4427 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System

Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4427, default 1):1
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-4427, default 4427):1000
Using value 1000

Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1-4427, default 1001):1001
Using value 1001
Last cylinder or +size or +sizeM or +sizeK (1-4427, default 4427):2000
Using value 2000

Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1-4427, default 1001):3001
Using value 3001
Last cylinder or +size or +sizeM or +sizeK (1-4427, default 4427):4427
Using default value 4427

Command (m for help):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING:If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

4.2.2建立ASM磁碟
透過以 root 使用者身份執行以下命令來標記由 ASMLib 使用的磁碟。 僅從一個叢集主機節點上執行此操作。提示: 以大寫字母輸入 DISK_NAME。當前版本中有一個錯誤,即如果使用小寫字母,ASM 例項將無法識別磁碟。
# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb3
Marking disk "/dev/sdb" as an ASM disk [ OK ]
……
TIP:根據我們的安裝經驗,建立ASM disk時只能繫結一個分割槽(/dev/sdb3),而不能是一個裝置(/dev/sdb)
以下示例演示瞭如何列出標記為由 ASMLib 使用的所有磁碟。
# /etc/init.d/oracleasm listdisks
VOL1
……
4.2.2在各個節點重新掃描ASM磁碟
一定在叢集的其他節點上,以 root 使用者身份執行以下命令,掃描所配置的ASMLib磁碟:
# /etc/init.d/oracleasm scandisks
這樣其他節點上的ASM Disk才有效。




第五部分 安裝配置Oracle RAC
5.1 配置環境變數
5.1.1 編輯.bashrc設定 ORACLE_BASE 和 ORACLE_HOME 等環境變數
基本路徑:
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
ORA_CRS_HOME=/u01/crs/oracle/product/10.2.0/crs_1
據oracle的安裝文件要求,CRS的目錄最好不是ORACLE_BASE的子目錄,因為安裝過程中會改變CRS的父目錄的許可權,這會影響ORACLE的安裝。在按以上要求生成對應目錄之前,需檢查所在磁碟的空間是否滿足安裝要求,確定之後生成目錄,並將相關環境變數設定在oracle使用者的profile中。用oracle帳號編輯 /home/oracle/.bashrc
oracle使用者的profile檔案.bashrc內容:
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=/u01/crs/oracle/product/10.2.0/crs_1
export ORACLE_SID=dbrac1
export ORACLE_TERM=xterm
export LD_ASSUME_KERNEL=2.4.1
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/sbin
export PATH

然後執行
$ source .bash_profile
使環境變數生效

注意:ORACLE_SID每臺機器不一樣,如dbrac1的SID為dbrac1,dbrac2的SID為dbrac2,以此類推。
對LD_ASSUME_KERNEL環境變數的說明:
這個引數實際上是為了避免Linux上的 NPTL (Native POSIX Thread Library) 和Oracle應用不相容的問題. 設定 LD_ASSUME_KERNEL為2.4.1表示使用舊有的 "Linuxthreads with floating stacks"

5.1.2建立CRS安裝路徑
注:With Oracle Database 10g Release 2 (10.2), Cluster Ready Services, or CRS, is now called Oracle Clusterware . 見ORACLE 10.2 安裝文件之New Features for Oracle Clusterware and RAC Installation
1.CRS安裝路徑的建立及授權
如下所示:
# mkdir -p /u01/crs/oracle/product/10.2.0/crs_1
# chown -R oracle:oinstall /u01/crs/oracle
# chmod -R 775 /u01/crs/oracle
2.OCR及voting disk安裝路徑
先解釋一下ocr(sdb1)和vote(sdb2)檔案的用途,
OCR(Oracle Cluster Registry):它記錄了機群配置和機群資料庫的基本配置,預設大概需要100M的空間,這裡我們給了它1000M的空間;
Vote:它是CSS(Cluster Synchronization Services)需要的檔案,用來判斷機群內各個節點的狀態,預設大概也需要100M的空間,這裡我們也給了它1000M的空間。
# mkdir -p /u02/oracrs/
# chown -R oracle:oinstall /u02/oracrs/
# chmod -R 775 /u02/oracrs/
繫結裸裝置:
#raw /dev/raw/raw1 /dev/sdb1
#raw /dev/raw/raw2 /dev/sdb2
然後在/etc/sysconfig/rawdevices檔案里加如下內容:
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb2
許可權:
# chown root:oinstall /dev/raw/raw1
# chmod 640 /dev/raw/raw1
# chown oracle:dba /dev/raw/raw2
# chmod 660 /dev/raw/raw2
在/etc/rc.local里加如下內容(如果安裝軟體時出問題,則把root改為oracle)
chown root:oinstall /dev/raw/raw1
chmod 640 /dev/raw/raw1
chown oracle:dba /dev/raw/raw2
chmod 660 /dev/raw/raw2
以上操作在所有節點上執行
在安裝CRS的過程中,安裝程式會提示使用者輸入存放OCR和Vote檔案的位置。因此,通常我們會使用以下方法設定檔案位置(在所有節點上執行),以oracle使用者執行:
$ ln -s /dev/raw/raw1 /u02/oracrs/ocr.crs
$ ln -s /dev/raw/raw2 /u02/oracrs/vote.crs

5.1.3建立oracle安裝路徑
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
5.2安裝和解除安裝CRS
5.2.1安裝CRS
需要注意的問題:
1、每一步都要看清楚安裝路徑是否正確
2、分清虛擬地址和專用地址
3、指令碼要一個節點一個節點的執行,切不可同時執行
4、如果安裝過程中出現in future。。。之類錯誤,應為兩臺主機時間不一致導致,解決方法:
1〉用root執行net time –I TARGETIP命令同步
2〉如果net time同步仍然不成功,最好配置一臺伺服器(節點中的一臺為ntp伺服器),具體配置方法見後面附錄

在安裝CRS之前,確認顯示沒有問題:
# xhost +
解壓CRS軟體:
# cp 10201_clusterware_linux_x86_64.cpio.gz /home/oracle
# gzip –d 10201_clusterware_linux_x86_64.cpio.gz
# cpio –idmv < 10201_clusterware_linux_x86_64.cpio
# chown –R oracle:oinstall /home/oracle

# su oracle
切換到oracle使用者,建立安裝目錄(該命令需要在各個節點上執行)
$ mkdir –p /u01/app/oracle/oraInventory
進入解壓路徑/home/oracle/cluterware執行(在叢集的一個節點上執行):
$ ./runInstall

進入圖形配置介面:
1.Welcome;單擊 Next
2.Specify Inventory Directory and Credentials — 預設值應該就是正確的;確保 inventory 目錄位於 ORACLE_BASE 目錄中(例如: /u01/app/oracle/oraInventory)並且作業系統組是“oinstall”(確保在 /etc/hosts 中而不僅僅是在 DNS 中配置了您的主機)
3.Specify File Locations — 修改安裝路徑/u01/app/oracle/product/10.2.0/db_1為/u01/crs/oracle/product/10.2.0/crs_1
4.Language Selection — 確認預設值後繼續
5.Cluster Configuration — 輸入叢集名(或接受預設的“crs”);配置public和private地址時,public地址即為主機名(與hostname命令所示相同即可),注意大小寫;private地址即為ip,與/etc/hosts中所列相同,virtual 地址填寫/etc/hosts中virtual address對應的主機名
6.Private Interconnect Enforcement — 為每個介面指定介面型別(公共、專用或“不使用”)
7.Oracle Cluster Registry — 選擇外部冗餘 在 clusterSpecify OCR Location 中輸入ocr disk名:/u02/oracrs/ocr.crs
8.Voting Disk — 輸入 voting disk 名: /u02/oracrs/vote.crs
9.Summary —單擊 Install,開始安裝。在安裝到最後的時候又會彈出對話方塊,提示分別在各節點上以root執行orainstRoot.sh和root.sh。注意不要同時執行這些指令碼,等一個指令碼結束後再執行另一個。
執行最後一個root.sh的時候,可能會報""eth0" is not public.Public interfaces should be used to configure virtual IPs."這樣的錯誤.這時候需要以root使用者去執行$ORA_CRS_HOME/bin/vipca。起來圖形介面——next——Network Interfaces (只選擇用於公共網路的介面,本示例中為eth0,叢集中所有主機上的這個介面必須相同,即如果在安裝主機上該介面是eth0,則在叢集中所有其他主機上都必須是eth0)。——Virtual IPs for cluster nodes 在vipca的提示框中輸入/etc/hosts中事先定義的虛擬ip地址,vipca會自動將虛擬ip對應的hostname顯示出來。VIP 配置助手建立並啟動 VIP、GSD 和 ONS 應用程式資源。配置完畢後,oracle會自動為public網路卡繫結虛擬地址。
在vipca配置完畢後,最好做一下關於vip地址的使用者等效性。如執行
# ssh dbrac2-vip
提示後,輸入yes。

CRS 安裝結束
從 $ORACLE_BASE/product/10.2.0/crs_1/bin 目錄中執行 olsnodes 驗證安裝已成功;例如:
$ cd $ORACLE_BASE/product/10.2.0/crs_1/bin
$ olsnodes
dbrac1
dbrac2
Once CRS 已安裝並執行;現在可以安裝 Oracle RAC 軟體的其餘部分了。

5.2.2解除安裝CRS
如果我們安裝CRS出現了問題,就必須要解除安裝CRS了。而CRS是一個很令人頭疼的服務,解除安裝CRS也是一個非常繁瑣的工作。在目前的release1中,如果機群中的一個節點重啟(無論什麼原因,即使crs服務是正常的),機群中的所有節點都會隨之重啟。因為CSS服務會定期檢查機群中所有節點的服務可用性,當有一個節點出現問題,系統為了保證資料一致性,就會令其他節點重啟,重新檢查服務,直到所有節點服務都正常。但是就我們現在遇到的情況而言,這種重啟後自動回覆正常的情況極少(目前還沒有自動恢復過),經常會導致loopreboot。因此,在metalink上有很多關於這方面的介紹。這裡,作者將實戰經驗與網上經驗相結合,總結如下(目前的方法就是解除安裝所有oracle服務和CRS,然後重灌)。
1.阻止迴圈重啟的方法
方法一:將CRS服務禁止
在機器重啟之間的那幾秒中檢測時間內,執行
# /etc/init.d/init.crs disable
禁止crs服務,在下一此重啟後,系統將停止迴圈,但是要把握操作時機。
方法二:拔掉與共享裝置的連線
ocr和voting disk檔案是存放在共享裝置中的,而CSS程式每次都要從這些檔案中讀取機群的配置資訊,因此,在機器重啟時斷掉與共享裝置的連線,機器也將停止迴圈重啟。該方法操作簡單,但是由於讀取資料不完整,對於接下來的修復可能會帶來一些不便。
方法三:改寫啟動指令碼
將/etc/inittab中的最後三行註釋掉,如:
#h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 #h2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 #h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 令機器在下一次重啟時,不在啟動服務。該方法的操作時機要把握好,否則沒等檔案修改完畢,機器就又要重啟。
2.在機群中的所有節點上執行$ORA_CRS_HOME/install/rootdelete.sh;
3.在機群中的任意一個節點上執行$ORA_CRS_HOME/install/rootdeinstall.sh;
4.用圖形介面OUI解除安裝crs;
a)執行./runInstall
b)在介面中選擇Installed;
c)選擇home1,一般要先安裝CRS,所以CRS的home一般都是home。
5.在機群所有節點上執行

/bin/rm -f /etc/init.d/init.cssd
/bin/rm -f /etc/init.d/init.crs
/bin/rm -f /etc/init.d/init.crsd
/bin/rm -f /etc/init.d/init.evmd
/bin/rm -f /etc/rc2.d/K96init.crs
/bin/rm -f /etc/rc2.d/S96init.crs
/bin/rm -f /etc/rc3.d/K96init.crs
/bin/rm -f /etc/rc3.d/S96init.crs
/bin/rm -f /etc/rc5.d/K96init.crs
/bin/rm -f /etc/rc5.d/S96init.crs
/bin/rm -rf /etc/oracle
/bin/rm -f /etc/inittab.crs
/bin/rm -f /etc/oratab
/bin/rm -f /etc/oraInst.loc
/bin/cp /etc/inittab.orig /etc/inittab
/bin/rm -rf /var/tmp/.oracle
/bin/rm -rf /u01/crs/oracle/product/10.1.0/crs_1


6.清掉共享磁碟上的內容。
如果ocr和voting disk所在分割槽不大,可以直接用下面命令清除:
# dd if=/dev/zero of=/dev/sdb1
# dd if=/dev/zero of=/dev/sdb2
7.如果可以,重啟機群內所有節點。
8.清理乾淨後,按照5.2.1的介紹,重新安裝CRS。

5.3安裝 Oracle 資料庫軟體RAC
5.3.1 圖形介面配置
執行以下命令(在叢集的一個節點上):
# cp 10201_database_linux_x86_64.cpio.gz /home/oracle
# cd /home/oracle
# gzip –d 10201_database_linux_x86_64.cpio.gz
# cpio –idmv < 10201_database_linux_x86_64.cpio.gz
# cd /home/oracle/database
# su oracle
$ ./runInstall

啟動圖形介面
1.Welcome — 單擊 Next
2.Specify File Locations — 確認預設值後繼續
3.Specify Hardware Cluster Installation Mode — 選擇 Cluster Installation 並選擇叢集中的其他節點
4.Select Installation Type — Enterprise Edition
5.選擇資料庫配置 — 選擇“Do not create a starter database”。 (我們將在一個單獨的步驟中使用資料庫配置助手 (DBCA) 來建立資料庫。)在安裝到最後的時候又會彈出對話方塊,提示執行root.sh,這時從安裝節點開始,每次在一個節點上執行 Oracle主目錄中的 root.sh(例如: /u01/app/oracle/product/10.2.0/db_1/root.sh)。 不要同時執行這些指令碼。 等一個指令碼結束後再啟動另一個.
6.Configuration Results — 檢查結果並單擊 Exit。 在其他節點上依次執行 root.sh。
7.安裝結束
注意:在 安裝 到 65%時,有一個錯誤:
資訊: 終止從衍生程式輸出。
資訊: ----------------------------------
資訊: 操作中出現異常錯誤: make
異常錯誤名: MakefileException
異常錯誤字串: 呼叫 makefile '/oracle/product/10.2.0/db_1/rdbms/lib/ins_rdbms.mk' 的目標 'all_no_orcl' 時出錯。請參閱 '/oracle/oraInventory/logs/installActions2005-12-29_10-44-31AM.log' 以瞭解詳細資訊。
異常錯誤嚴重級: 1

需要binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm補丁
並用root使用者 按以下語法安裝:
# rpm -Uvh --force binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm
安裝完給補丁後,點重試,oracle順利的安裝完成

5.4 解除安裝 Oracle 資料庫軟體RAC
如果我們安裝RAC出現了問題,就必須要解除安裝RAC了。
1.停止database的一些活動;
2.透過oui解除安裝RAC
3.如果想解除安裝的再幹淨一點,可以清空db_1下的所有內容。
4.由於$ORACLE_BASE/Orainventory記錄了所有oracle軟體的安裝資訊,所以一般不建議刪除,否則包括CRS等資訊也會被刪掉。






第六部分 建立和刪除資料庫
6.1 建立資料庫
在以 oracle 使用者身份登入時,設定環境並執行 dbca。
$ dbca
圖形介面起來以後:
1.Welcome — 選擇“Oracle Real Application Clusters database”
2.Operations — 建立資料庫
3.Node Selection — 單擊 Select All
4.Database Templates — 選擇general
5.Database Identification — 全域性資料庫名:dbrac.orademo.org;SID: dbrac
6.Management Options — 利用 Enterprise Manager 配置資料庫;使用資料庫控制進行資料庫管理
7.Database Credentials — 為所有帳戶使用相同的口令;輸入口令並再次確認
8.Storage Options — 自動儲存管理 (ASM)
9.Create ASM Instance — 設定 SYS 口令並確認;建立初始化引數檔案 (IFILE)
10.ASM Disk Groups — Create New>Create Disk Group>Disk Group Name (DATA);冗餘(external);更改磁碟發現路徑(ORCL:* — 即使磁碟顯示為已供應狀態,仍然必須輸入此項,否則會出錯);選擇磁碟;輸入故障組名;選擇新建立的磁碟組
11.Database File Locations — 使用 Oracle 管理的檔案
12.Recovery Configuration — 單擊 Next
13.Database Content — 示例模式
14.Initialization Parameters — 記憶體:把預設的40%改為60%;字符集的設定:要選擇ZHSGBK16和UTF8。
15.Database Storage — 單擊 Next
16.Create Options — 選擇“Create Database”
17.Summary — 檢查總結資訊並單擊 OK
根據經驗,需要注意的有幾下幾點:
1.使用ASM管理共享磁碟的方法,將為資料庫中的每個節點建立自己的ASM例項。如果系統中已存在ASM例項,可以繼續使用,但需要輸入ASM的管理密碼;
2.使用ASM需要建立ASM DiskGroup,如果磁碟組存在,則可以選用現有的組;如果不存在,要建立一個。
a)點選“create new”,輸入磁碟組的名稱;
b)冗餘程度。如果你的盤陣本身有raid保護,則可以選擇external,這樣的空間利用率最大;否則,normal的利用率是一半,因為是兩個failure group做映象;high的利用率是三分之一,因為是三個failure group做映象;
c)磁碟候選。分為“show member”和“show all”兩種,第一種顯示尚未分配的磁碟,第二種顯示所有磁碟。有時雖然已經刪掉了以前的資料庫,但是沒有刪掉磁碟組,所以磁碟仍會顯示為已用,這是就需要show all。切記,一定要修改磁碟路徑為ORCL:*,否則即使選中也會被視為無效。如果想選擇那些已經被其他組用過的盤,則需要選擇force,強制執行。
3.建立DB過程中會報錯,點選確定即可。隨後dbca會自動啟動各個節點的instance,但是除了安裝節點的正常,其他的都會報錯。這是因為建立的ASM DiskGroup的時候,其他節點的ASM例項沒有mount磁碟組。因此需要在其他節點上執行一下命令:
# srvctl stop asm –n hostname
# srvctl start asm –n hostname
# srvctl start instance –I instance_name on hostname–d database_name
最後用命令
# srvctl status database –d database_name
檢查,是否所有節點的instance都已經running。

6.2 刪除資料庫
刪除資料庫最好也用dbca,雖然srvctl也可以。
1.執行dbca,選擇”delete a database”。然後就next..,直到finish。
2.資料的刪除並不影響asm例項,如果想刪除與asm有關的內容,可以按如下做法:
# export ORACLE_SID=ASM_instance_name
# sqlplus / as sysdba
SQL> drop diskgroup diskgroup_name including contents;
SQL> quit
然後在各個節點上執行
# srvctl stop asm –n hostname
# srvctl remove asm –n hostname
這樣,應該就可以刪除的比較乾淨了。


Lsnrctl start

6.3 驗證資料庫安裝正確
$su oracle
$sqlplus /nolog
>connect / as sysdba
Connected
>startup
ORA-01081:cannot start already-running ORACLE –shut it down first ---說明資料庫已經執行
>connect system/oracle@dbrac1
Connected
>connect system/oracle@dbrac2
Connected
兩個節點提示connected說明資料庫在兩個節點上正常執行。
6.4 資料庫troubleshooting
重起後出現問題:
#su - oracle
$ srvctl status nodeapps –n dbrac1
VIP is running on node: dbrac1
GSD is not running on node: dbrac1
Listener is not running on node: dbrac1
ONS daemon is not running on node: dbrac1

$ srvctl status nodeapps –n dbrac2
VIP is running on node: dbrac2
GSD is not running on node: dbrac2
Listener is not running on node: dbrac2
ONS daemon is not running on node: dbrac2

暫時解決辦法:
在各節點上分別:
# /etc/init.d/oracleasm enable
#/etc/init.d/oracleasm scandisks
然後在主節點上執行:
#su - oracle
$crs_stop -all
$srvctl stop nodeapps -n dbrac1
$srvctl stop nodeapps -n dbrac2
$srvctl start nodeapps -n dbrac1
$srvctl start nodeapps -n dbrac2
$crs_start -all
$srvctl start database -d dbrac

為什麼呢……….

第七部分 附錄
7.1 CRS程式介紹
CRS 維護著兩個檔案: Oracle Cluster Registry (OCR) 和 Voting Disk。 OCR 和 Voting Disk 必須以原始分割槽或叢集檔案系統檔案的形式存在於共享磁碟上。
在以前的版本中,Oracle RAC必須藉助第三方Cluster軟體,但是從Oracle10g開始,我們有了新的選擇。CRS就是這樣一個替代產品,用以提供RAC環境中的群集服務。
CRS是一個單獨的產品,在構建RAC環境中,需要單獨安裝。
系統啟動以後,CRS會自動啟動,啟動主要由/etc/init.d中的幾個指令碼完成:
[eygle@raclinux1 init.d]$ ll init*
-r-xr-xr-x 1 root root 1951 Jun 27 13:27 init.crs
-r-xr-xr-x 1 root root 4735 Jun 27 20:32 init.crsd
-r-xr-xr-x 1 root root 35401 Jun 27 13:27 init.cssd
-r-xr-xr-x 1 root root 3197 Jun 27 13:27 init.evmd

CRS啟動的三個主要的後臺程式為:
[oracle@raclinux1 bin]$ ps -ef|grep d.bin
root 3140 1 0 23:13 00:00:00 /u01/app/oracle/product/10.2.0/crs/bin/crsd.bin
oracle 3884 3062 0 23:14 00:00:00 /u01/app/oracle/product/10.2.0/crs/bin/evmd.bin
oracle 4017 3983 0 23:14 00:00:00 /u01/app/oracle/product/10.2.0/crs/bin/ocssd.bin
oracle 21117 13799 0 23:29 pts/1 00:00:00 grep d.bin
這幾個程式的主要作用如下:
CRSD:
- Engine for HA operation
- Manages 'application resources'
- Starts, stops, and fails 'application resources' over
- Spawns separate 'actions' to start/stop/check application resources
- Maintains configuration profiles in the OCR (Oracle Configuration Repository)
- Stores current known state in the OCR.
- Runs as root
- Is restarted automatically on failure

OCSSD:
- OCSSD is part of RAC and Single Instance with ASM
- Provides access to node membership
- Provides group services
- Provides basic cluster locking
- Integrates with existing vendor clusteware, when present
- Can also runs without integration to vendor clustware
- Runs as Oracle.
- Failure exit causes machine reboot.
--- This is a feature to prevent data corruption in event of a split brain.
注意,ocssd程式在單例項ASM系統中也可以見到,以下是我的一個單例項ASM系統,ocssd程式同樣存在:
bash-2.03# ps -ef|grep _+ASM
oracle 3264 1 0 Aug 25 ? 0:01 asm_lgwr_+ASM
root 12669 8167 0 11:58:56 pts/1 0:00 grep _+ASM
oracle 3270 1 0 Aug 25 ? 0:00 asm_rbal_+ASM
oracle 3266 1 0 Aug 25 ? 0:05 asm_ckpt_+ASM
oracle 3268 1 0 Aug 25 ? 0:00 asm_smon_+ASM
oracle 3262 1 0 Aug 25 ? 0:00 asm_dbw0_+ASM
oracle 3258 1 0 Aug 25 ? 0:00 asm_pmon_+ASM
oracle 3260 1 0 Aug 25 ? 0:00 asm_mman_+ASM
bash-2.03# ps -ef|grep ocssd
root 12672 8167 0 11:59:01 pts/1 0:00 grep ocssd
oracle 5374 1 0 Apr 07 ? 0:01 /opt/oracle/product/10.2.0/bin/ocssd.bin
bash-2.03#
ocssd程式非常重要,如果該程式異常中止,會導致系統crash。
在某些極端情況下,如果ocssd無法正常啟動,會導致作業系統迴圈重啟。這時候需要DBA介入進行一些特殊處理。
EVMD:
- Generates events when things happen
- Spawns a permanent child evmlogger
- Evmlogger, on demand, spawns children
- Scans callout directory and invokes callouts.
- Runs as Oracle.
- Restarted automatically on failure

我們可以透過CRS工具來檢視CRS狀態:
[oracle@raclinux1 ~]$ cd $ORA_CRS_HOME/bin
[oracle@raclinux1 bin]$ pwd
/u01/app/oracle/product/10.2.0/crs/bin
[oracle@raclinux1 bin]$ ./crs_stat
NAME=ora.RACDB.RACDB1.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1

NAME=ora.RACDB.RACDB2.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1

NAME=ora.RACDB.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1

NAME=ora.raclinux1.ASM1.asm
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1

NAME=ora.raclinux1.LISTENER2_RACLINUX1.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1

NAME=ora.raclinux1.LISTENER_RACLINUX1.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1

NAME=ora.raclinux1.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1

NAME=ora.raclinux1.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1

NAME=ora.raclinux1.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1

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

相關文章