在 Oracle Enterprise Linux 和 iSCSI 上構建您自己的 Oracle RAC 集羣(續)

DBA:Linux

   下載
 Oracle 數據庫 11g
   標籤
linuxracclustering全部
在 Oracle Enterprise Linux 和 iSCSI 上構建您自己的 Oracle RAC 11g 集羣 

作者:Jeffrey Hunter 
 

瞭解如何以低於 2,700 美元的費用在 Oracle Enterprise Linux 上安裝並配置 Oracle RAC 11g 第 2 版開發集羣。

本指南中的信息未經 Oracle 驗證,且不受 Oracle 支持,您在使用時只能風險自負;本指南僅供教學使用。

2009 年 11 月更新

目錄

  1. 簡介
  2. Oracle RAC 11g 概述
  3. 共享存儲概述
  4. iSCSI 技術
  5. 硬件及成本
  6. 安裝 Linux 操作系統
  7. 安裝 Oracle RAC 所需的 Linux 程序包
  8. 網絡配置
  9. 集羣時間同步服務
  10. 安裝 Openfiler
  11. 使用 Openfiler 配置 iSCSI 卷
  12. 在 Oracle RAC 節點上配置 iSCSI 卷
  13. 創建任務角色劃分操作系統權限組、用戶和目錄
  14. 使用 X 終端登錄遠程系統
  15. 爲 Oracle 配置 Linux 服務器
  16. 配置 RAC 節點以便可以使用 SSH 進行遠程訪問(可選)
  17. 適用於這兩個 Oracle RAC 節點的所有啓動命令
  18. 安裝並配置 ASMLib 2.0
  19. 下載 Oracle RAC 11g 第 2 版軟件
  20. 集羣的 Oracle Grid Infrastructure 的安裝前任務
  21. 爲集羣安裝 Oracle Grid Infrastructure
  22. 集羣的 Oracle Grid Infrastructure 的安裝後任務
  23. 爲數據和快速恢復區創建 ASM 磁盤組
  24. 在 Oracle Real Application Clusters 中安裝 Oracle Database 11g
  25. 安裝 Oracle Database 11g Examples(以前的隨附 CD)
  26. 創建 Oracle 集羣數據庫
  27. 數據庫創建後任務(可選)
  28. 創建/更改表空間
  29. 驗證 Oracle Grid Infrastructure 和數據庫配置
  30. 啓動/停止集羣
  31. 故障排除
  32. 總結
  33. 致謝

本指南相關下載: 
 Oracle Enterprise Linux 第 5 版 Update 4 —(適用於 x86 和 x86_64) 
 Oracle Database 11g 第 2 版、Grid Infrastructure 和 Examples — (11.2.0.1.0) (適用於 x86 和 x86_64) 
 Openfiler 2.3 Respin (21-01-09) ( openfiler-2.3-x86-disc1.iso 或 openfiler-2.3-x86_64-disc1.iso) 
 ASMLib 2.0 庫 RHEL5 — (2.0.4-1) ( oracleasmlib-2.0.4-1.el5.i386.rpm 或 oracleasmlib-2.0.4-1.el5.x86_64.rpm

 


1. 簡介

熟悉 Oracle Real Application Clusters (RAC) 11g 技術的最有效方法之一是訪問一個實際的 Oracle RAC 11g 集羣。沒有什麼方法比直接體驗它們能夠更好地理解其優勢了,這些優勢包括容錯、安全性、負載平衡和可伸縮性。

遺憾的是,對於很多商家而言,典型的生產級 RAC 配置所需的硬件投入使它們無法實現這一目標。一個小型的只有兩個節點的集羣可能花費 10,000 美元至 20,000 美元以上,此花費甚至不包括 RAC 生產環境的核心 — 共享存儲。大多數情況下,這會是一個存儲區域網 (SAN),起價通常爲 10,000 美元。

對於那些沒有大筆現金但希望熟悉 Oracle RAC 11g 的人們而言,本指南提供了一種低成本的替代方法來配置 Oracle RAC 11g 第 2 版系統,它使用現成的商用組件和可下載的軟件,估計成本在 2,200 美元到 2,700 美元之間。該系統將由一個雙節點集羣組成,這兩個節點均運行適用於 x86_64 的 Oracle Enterprise Linux (OEL) 第 5 版 Update 4、適用於 Linux x86_64 的 Oracle RAC 11g 第 2 版和 ASMLib 2.0。Oracle RAC 的所有共享磁盤存儲將基於 iSCSI,iSCSI 使用在第三個節點(該節點在本文中稱爲網絡存儲服務器)上運行的 Openfiler 2.3 版 x86_64。

儘管本文應與 Red Hat Enterprise Linux 一同使用,但 Oracle Enterprise Linux(免費提供)也可滿足需要(即使不能更爲穩定),它包括 ASMLib 軟件包(不包括 ASMLib 用戶空間庫,這個需要單獨下載)。

本指南僅供教學使用,因此安裝很簡單,僅用於演示想法和概念。例如,本文中共享的 Oracle 集羣件文件(OCR 和表決文件)以及所有物理數據庫文件將僅安裝在一個物理磁盤上,而實際上應在多個物理驅動器上配置這些文件。另外,每個 Linux 節點僅配置兩個網絡接口 — eth0 用於連接公共網絡, eth1 用於 Oracle RAC 專用互連「和」連接網絡存儲服務器以便進行共享 iSCSI 訪問。而在實現生產級 RAC 時,專用互連至少應是千兆位級(或以上)、有冗餘路徑,並且「僅」供 Oracle 用來傳輸 Cluster Manager 和 Cache Fusion 的相關數據。應在另一個冗餘的千兆位網絡上配置第三個專用網絡接口(例如,eth2)以訪問網絡存儲服務器 (Openfiler)。

Oracle 文檔

儘管本指南提供了成功安裝完整的 Oracle RAC 11g 系統的詳細說明,但它絕不能替代 Oracle 官方文檔(參見下面的列表)。除本指南外,用戶還應參考以下 Oracle 文檔,以便全面瞭解 Oracle RAC 11g 的其他配置選項、安裝和管理。Oracle 的官方文檔網站是 docs.oracle.com

 



網絡存儲服務器

Openfiler 構建於 rPath Linux 之上,它是一個基於瀏覽器的免費網絡存儲管理實用程序,可在一個框架中提供基於文件的網絡連接存儲 (NAS) 和基於塊的存儲區域網 (SAN)。整個軟件體系與許多開源應用程序(如 Apache、Samba、LVM2、ext3、Linux NFS 和 iSCSI Enterprise Target)相連接。Openfiler 將這些隨處可見的技術組合到一個易於管理的小型管理解決方案中,該解決方案的前端是一個基於 Web 的功能強大的管理界面。

Openfiler 支持 CIFS、NFS、HTTP/DAV 和 FTP,但是,我們將僅使用它的 iSCSI 功能爲 Oracle RAC 11g 所需的共享存儲組件實現低成本的 SAN。操作系統和 Openfiler 應用程序將安裝在一個內置 SATA 磁盤上。另一個內置 73GB 15K SCSI 硬盤將被配置爲一個「卷組」,用於滿足所有共享磁盤存儲需求。Openfiler 服務器將配置爲使用該卷組進行基於 iSCSI 的存儲,並且將在我們的 Oracle RAC 11g 配置中使用該服務器存儲 Oracle Grid Infrastructure 和 Oracle RAC 數據庫所需的共享文件。

Oracle Grid Infrastructure 11g 第 2 版 (11.2)

在 Oracle Grid Infrastructure 11g 第 2 版 (11.2) 中,自動存儲管理 (ASM) 和 Oracle Clusterware 軟件一起打包到一個二進制版本中並安裝到同一個主目錄中,這個主目錄稱爲 Grid Infrastructure 主目錄。爲了使用 Oracle RAC 11g 第 2 版,您必須安裝 Grid Infrastructure。在安裝程序的詢問過程之後,會啓動配置助手以配置 ASM 和 Oracle Clusterware。雖然這種組合的產品安裝稱爲 Oracle Grid Infrastructure,但 Oracle Clusterware 和 Automatic Storage Manager 仍然是獨立的產品。

在集羣中的兩個節點上安裝並配置 Oracle Grid Infrastructure 後,下一步將是在兩個 Oracle RAC 節點上安裝 Oracle RAC 軟件。

在本文中,我們在兩個節點上使用可選的作業角色劃分 配置來安裝 Oracle Grid Infrastructure 和 RAC 軟件。我們會爲每個 Oracle 軟件產品創建一個操作系統用戶作爲該產品的所有者 —「grid」作爲 Oracle Grid Infrastructure 的所有者,「oracle」作爲 Oracle RAC 軟件的所有者。在本文中, grid 的用戶是我們創建作爲 Oracle Grid Infrastructure 二進制文件所有者的用戶。該用戶將是 Oracle Clusterware 和 Oracle 自動存儲管理二進制文件的所有者。而 oracle 的用戶是我們創建作爲 Oracle 數據庫二進制文件 (Oracle RAC) 所有者的用戶。這兩個 Oracle 軟件所有者必須以 Oracle Inventory 組 (oinstall) 作爲其主組,這樣每個 Oracle 軟件安裝所有者都有權寫入中央清單 (oraInventory),以便正確設置 OCR 和 Oracle Clusterware 資源的權限。Oracle RAC 軟件所有者還必須以 OSDBA 組和可選的 OSOPER 組作爲其輔助組。

自動存儲管理和 Oracle Clusterware 文件

如上所述,自動存儲管理 (ASM) 現在已與 Oracle Clusterware 完全集成在 Oracle Grid Infrastructure 中。Oracle ASM 和 Oracle Database 11g 第 2 版提供了較以前版本更爲增強的存儲解決方案。該解決方案能夠在 ASM 上存儲 Oracle Clusterware 文件,即 Oracle 集羣註冊表 (OCR) 和表決文件(VF,又稱爲表決磁盤)。這一特性使 ASM 能夠提供一個統一的存儲解決方案,無需使用第三方卷管理器或集羣文件系統即可存儲集羣件和數據庫的所有數據。

和數據庫文件一樣,Oracle Clusterware 文件也存儲在 ASM 磁盤組中,從而使用 ASM 磁盤組的冗餘配置。例如,一個常規冗餘 配置的 ASM 磁盤組將保存一個雙向鏡像的 OCR。磁盤組中一個磁盤出現故障不會妨礙對 OCR 的訪問。就高冗餘 配置的 ASM 磁盤組(三向鏡像)而言,兩個獨立的磁盤出現故障不會影響對 OCR 的訪問。而採用外部冗餘 配置,Oracle 不提供任何保護。

爲了防止物理磁盤故障,Oracle 針對每個磁盤組只允許一個 OCR。在生產系統中配置 Oracle Clusterware 文件時,Oracle 建議使用常規或高冗餘配置的 ASM 磁盤組。如果在操作系統級或硬件級已存在磁盤鏡像,您可以使用外部冗餘配置。

對錶決文件的管理類似於 OCR。這些文件遵循 ASM 磁盤組的冗餘配置,但是其管理方式不同於磁盤組中的常規 ASM 文件。每個表決磁盤放置在磁盤組的一個特定磁盤上。表決文件的磁盤及其在磁盤上的位置存儲在 Oracle Clusterware 內部。

下面的示例說明,在使用本指南安裝 Oracle Grid Infrastructure 後 ASM 如何存儲 Oracle Clusterware 文件。要查看 OCR,請使用 ASMCMD:

[[email protected] ~]$ asmcmd
ASMCMD> ls -l +CRS/racnode-cluster/OCRFILE
Type Redund Striped Time Sys Name
OCRFILE UNPROT COARSE NOV 22 12:00:00 Y REGISTRY.255.703024853

從以上示例可以看出,在列出 +CRS/racnode-cluster/OCRFILE 目錄中的所有 ASM 文件後,只顯示了 OCR (REGISTRY.255.703024853)。上面未列出表決文件,這是因爲表決文件的管理方式不同於常規 ASM 文件。要找到 Oracle 集羣件內表決文件的位置,使用如下的 crsctl query css votedisk 命令:

[[email protected] ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 4cbbd0de4c694f50bfd3857ebd8ad8c4 (ORCL:CRSVOL1) [CRS]
Located 1 voting disk(s).

如果您決定不使用 ASM 管理 OCR 和表決磁盤文件,Oracle Clusterware 仍然允許將這些文件存儲在一個集羣文件系統(如 Oracle Cluster File System 第 2 版 (OCFS2))或 NFS 系統中。請注意,除非現有系統正在進行升級,否則不再支持在原始設備或塊設備上安裝 Oracle Clusterware 文件。

此指南的以前版本使用 OCFS2 存儲 OCR 和表決磁盤文件。本指南將在 ASM 上存儲 OCR 和表決磁盤文件,具體是存儲在一個名爲 +CRS 的磁盤組中,該磁盤組使用外部冗餘 配置,只有一個 OCR 位置和一個表決磁盤位置。ASM 磁盤組應在共享存儲器上創建,大小至少爲 2GB。

 

Oracle 物理數據庫文件(數據、聯機重做日誌、控制文件、存檔重做日誌)將安裝在 ASM 上一個名爲+RACDB_DATA 的 ASM 磁盤組中,而快速恢復區將在一個名爲 +FRA 的 ASM 磁盤組上創建。

兩個 Oracle RAC 節點和網絡存儲服務器配置如下:

節點
節點名稱 實例名稱 數據庫名稱 處理器 RAM 操作系統
racnode1 racdb1 racdb.
idevelopment.
info
1 個雙核 Intel Xeon,3.00 GHz 4GB OEL 5.4 - (x86_64)
racnode2 racdb2 1 個雙核 Intel Xeon,3.00 GHz 4GB OEL 5.4 - (x86_64)
openfiler1     2 個 Intel Xeon,3.00 GHz 6GB Openfiler 2.3 - (x86_64)
網絡配置
節點名稱 公共 IP 地址 專用 IP 地址 虛擬 IP 地址 SCAN 名稱 SCAN IP 地址
racnode1 192.168.1.151 192.168.2.151 192.168.1.251 racnode-cluster-scan 192.168.1.187
racnode2 192.168.1.152 192.168.2.152 192.168.1.252
openfiler1 192.168.1.195 192.168.2.195  
Oracle 軟件組件
軟件組件 操作系統用戶 主組 輔助組 主目錄 Oracle 基目錄/Oracle 主目錄
Grid Infrastructure grid oinstall asmadmin、asmdba、asmoper /home/grid /u01/app/grid 
/u01/app/11.2.0/grid
Oracle RAC oracle oinstall dba、oper、asmdba /home/oracle /u01/app/oracle 
/u01/app/oracle/product/11.2.0/dbhome_1
存儲組件
存儲組件 文件系統 卷大小 ASM 卷組名 ASM 冗餘 Openfiler 卷名
OCR/表決磁盤 ASM 2GB +CRS External racdb-crs1
數據庫文件 ASM 32GB +RACDB_DATA External racdb-data1
快速恢復區 ASM 32GB +FRA External racdb-fra1

本文僅作爲絕對不可替代的文檔。此處唯一的例外是供應商硬件的選擇(即,計算機、網絡設備和內置/外置硬盤驅動器)。確保您從供應商處購買的硬件在 Enterprise Linux 5 和 Openfiler 2.3(最終版本)上受支持。

如果您要尋找一個基於 Oracle Enterprise Linux 5.3 和 iSCSI 利用 Oracle RAC 10g 第 2 版的示例,請單擊此處

 


2. Oracle RAC 11g 概述

在介紹構建 RAC 集羣的詳細信息之前,首先闡明集羣的定義將很有幫助。集羣是一組兩個或多個互連的計算機或服務器,對最終用戶和應用程序來說,它們就像是一臺服務器,通常共享同一組物理磁盤。集羣的主要優勢在於提供了一個高可用的框架,在該框架中,一個節點(例如,運行一個 Oracle 實例的數據庫服務器)出現故障不會中斷整個應用程序。如果其中一個服務器出現故障,其他正常運行的(一個或多個)服務器可以接管故障服務器的負載,應用程序繼續正常運行,就像什麼都沒有發生。

實際上,集羣計算機的概念在幾十年前就出現了。第一個成功的集羣產品由 DataPoint 在 1977 年開發完成,該產品名爲 ARCnet。ARCnet 產品在實驗室的學術環境中獲得了很大成功,但未能真正投放到商業市場。直到 20 世紀 80 年代,Digital Equipment Corporation (DEC) 才發佈了針對 VAX/VMS 操作系統的 VAX 集羣產品。

隨着針對 Digital VAX 集羣產品的 Oracle 6 發佈,Oracle 成爲在數據庫級別支持集羣的第一個商業數據庫。但是不久之後,Oracle 意識到還需要一個更高效、可伸縮性更強的分佈式鎖管理器 (DLM),因爲 VAX/VMS 集羣產品中的鎖管理器不太適合數據庫應用程序。Oracle 決定爲 VAX/VMS 集羣產品設計並編寫自己的 DLM,以提供數據庫所需的細粒度塊級鎖定。Oracle 自己的 DLM 包含在 Oracle 6.2 中,這導致誕生了 Oracle Parallel Server (OPS) — 第一個運行並行服務器的數據庫。

OPS 在 Oracle 7 中得到了擴展,不僅支持 VAX/VMS 集羣產品,還支持大多數 UNIX 環境。該框架不僅要求供應商提供的集羣件運行良好,還要適用於複雜的環境,以設置並管理所涉及的多個給定層。在 Oracle 8 中,Oracle 引入了一個集成到 Oracle 內核中的通用鎖管理器。在更高版本的 Oracle 中,這稱爲集成分佈式鎖管理器 (IDLM),依賴於稱爲操作系統依賴 (OSD) 層的附加層。這個新模型爲 Oracle 鋪平了道路,使其不僅擁有自己的 DLM,還可以在未來版本中創建自己的集羣件產品。

隨 Oracle9i 一同推出的 Oracle Real Application Clusters (RAC) 是 Oracle Parallel Server 的後續版本。由於使用了相同的 IDLM,Oracle 9i 仍然可以依賴於外部集羣件,但它是包含自己的集羣件產品(稱爲 Cluster Ready Services (CRS))的第一個版本。在 Oracle 9i 中,CRS 只能用於 Windows 和 Linux。到了 Oracle 10g 第 1 版,Oracle 的集羣件產品可用於所有操作系統,成爲了 Oracle RAC 所需的集羣技術。隨着 Oracle 數據庫 10g 第 2 版 (10.2) 的發佈,Cluster Ready Services 被重命名爲 Oracle Clusterware。如果使用 Oracle 10g 或更高版本,Oracle Clusterware 是大多數運行 Oracle RAC 的平臺所需的唯一集羣件(不包括 Tru 集羣,在這種情況下,您需要供應商集羣件)。您仍然可以使用其他供應商的集羣件(如果該集羣件通過了認證),但是請記住,Oracle RAC 仍然需要 Oracle Clusterware,因爲它與數據庫軟件完全集成。本指南使用 Oracle Clusterware,該集羣件從 11g 第 2 版 (11.2) 開始就是 Oracle Grid Infrastructure 的一個組件了。

與 OPS 一樣,Oracle RAC 允許多個實例同時訪問同一個數據庫(存儲)。通過允許系統進行擴展,RAC 提供了容錯、負載平衡和性能優勢。同時,由於所有實例都訪問同一個數據庫,因此一個節點出現故障不會導致無法訪問數據庫。

Oracle RAC 的核心是共享磁盤子系統。集羣中的每個實例都必須能夠訪問集羣中所有其他實例的所有數據、重做日誌文件、控制文件和參數文件。爲了使所有實例都能訪問數據庫,數據磁盤必須全局可用。每個實例都有自己的、可在本地讀寫的重做日誌文件和 UNDO 表空間。集羣中的其他實例必須能夠訪問這些文件(只讀),以便在系統出現故障時恢復該實例。一個實例的重做日誌文件只能由該實例自己寫入,其他實例只能在系統故障期間讀取該實例。另一方面,UNDO 可以在正常數據庫操作(例如,CR 構建)期間隨時讀取。

Oracle RAC 與 OPS 之間的最大區別在於使用了緩存融合技術。使用 OPS 時,從一個實例到另一個實例的數據請求需要首先將數據寫到磁盤,然後請求實例才能讀取該數據(獲得必需的鎖之後)。此過程稱爲磁盤 ping。而使用緩存融合,數據沿着使用複雜鎖定算法的高速互連鏈路傳遞。

並非所有數據庫集羣解決方案都使用共享存儲。一些供應商使用聯合集羣 方法,在這種方法中,數據分佈在多臺計算機中,而不是由所有計算機共享。但是,對於 Oracle RAC,多個實例使用一組相同的磁盤存儲數據。Oracle 的集羣方法利用了集羣中所有節點的集體處理能力,同時提供了故障切換安全性。

Dell、IBM 和 HP 等供應商提供了預先配置的面向生產環境的 Oracle RAC 解決方案。但是,本文將重點討論如何使用 Linux 服務器和低成本的共享磁盤解決方案 iSCSI 整合您自己的 Oracle RAC 11g 環境以進行開發和測試。

有關 Oracle RAC 的更多背景知識,請訪問 OTN 上的 Oracle RAC 產品中心

 


3. 共享存儲概述

現在,光纖通道是最流行的共享存儲解決方案之一。前面曾提到過,光纖通道是一種高速串行傳輸接口,用於在點到點 (FC-P2P)、仲裁環路 (FC-AL) 或交換式拓撲結構 (FC-SW) 中連接系統與存儲設備。光纖通道支持的協議包括 SCSI 和 IP。光纖通道配置最多可支持 127 個節點,每個方向上最高可實現每秒 2.12 Gb 的吞吐量,預期可達 4.25 Gbps。

但是,光纖通道的價格很昂貴。單是光纖通道交換機的起價就可能需要約 1,000 美元。這還不包括光纖通道存儲陣列和高端驅動器,一個 36GB 驅動器的價格可達 300 美元左右。典型的光纖通道安裝包括用於服務器的光纖通道卡。基本安裝的費用爲大約 10,000 美元,還不包括構成集羣的服務器的成本。

光纖通道的一種較爲便宜的替代方法是 SCSI。SCSI 技術提供了可接受的共享存儲性能。但對於那些習慣了基於 GPL 的 Linux 價格的管理員和開發人員來說,即使是 SCSI(一個雙節點集羣的價格在 2,000 美元到 5,000 美元左右)也可能超出預算。

另一種流行的解決方案是基於 NAS 的 Sun NFS(網絡文件系統)。只有在您使用網絡設備或類似的設備時,它纔可以用於共享存儲。具體來說就是,您需要擁有能夠保證在 NFS 上進行直接 I/O、將 TCP 作爲傳輸協議並且讀/寫塊大小爲 32K 的服務器。有關可用於 Oracle RAC 的受支持的網絡連接存儲 (NAS) 設備,請參見 Oracle Metalink 上的 Certify 頁面。其中一個主要缺陷限制了使用 NFS 和 NAS 進行數據庫存儲的優勢,即,性能降低和複雜的配置要求。標準的 NFS 客戶端軟件(使用操作系統提供的 NFS 驅動程序的客戶端系統)沒有針對 Oracle 數據庫文件 I/O 訪問模式進行優化。隨着 Oracle 11g 的推出,一個稱爲 Direct NFS Client 的新特性將 NFS 客戶端功能直接集成到 Oracle 軟件中。通過該集成,Oracle 可以優化 Oracle 軟件與 NFS 服務器之間的 I/O 路徑,從而顯著提高性能。Direct NFS Client 可以爲數據庫負載簡化(在許多情況下可以自動化)NFS 客戶端配置的性能優化。要了解有關 Direct NFS Client 的更多信息,請參閱標題爲「Oracle 數據庫 11g Direct NFS Client 」的 Oracle 白皮書。

本文將採用的共享存儲基於 iSCSI 技術,使用網絡存儲服務器(隨 Openfiler 安裝)。該解決方案提供了一個低成本的光纖通道替代方案,只用於測試和教學目的。考慮到方案中使用低端硬件,不應將其用於生產環境。

 


4. iSCSI 技術

多年以來,光纖通道存儲區域網 (FC SAN) 是構建基於網絡的存儲解決方案所使用的唯一技術。基於以前的一組 ANSI 協議(稱爲光纖分佈式數據接口 (FDDI)),開發了光纖通道以在存儲網絡上移動 SCSI 命令。

FC SAN 的優勢包括提高了性能、磁盤利用率、可用性以及可伸縮性等,但最重要的是支持服務器集羣!但是,FC SAN 現在仍受三個主要缺點的限制。首先是價格。儘管構建 FC SAN 的成本在近幾年有所下降,但進入成本對於 IT 預算有限的小公司來說仍然是高的驚人。第二個缺點是硬件組件不兼容。採用 FC SAN 之後,許多產品製造商對光纖通道規範的解釋各不相同,從而導致許多互連問題。如果從公共製造商購買光纖通道組件,這通常不是一個問題。第三個缺點是光纖通道網絡不是以太網!它需要一種不同的網絡技術,並要求數據中心人員具備另外一組技能。

隨着千兆位以太網的普及以及對降低成本的需要,基於 iSCSI 的存儲系統逐漸成爲光纖通道的有力競爭對手。現在,iSCSI SAN 仍然是 FC SAN 的最大競爭者。

2003 年 2 月 11 日,經過 Internet 工程任務組 (IETF) 的批准,Internet 小型計算機系統接口(一般稱爲 iSCSI)成爲一個基於 Internet 協議 (IP) 的存儲網絡標準,用於建立和管理基於 IP 的存儲設備、主機和客戶端之間的連接。iSCSI 是 SCSI-3 規範框架中定義的數據傳輸協議,它與光纖通道的類似之處在於它也負責在存儲網絡上運送塊級數據。塊級通信意味着數據以「塊」的形式在主機和客戶端之間傳輸。數據庫服務器依賴此類通訊(而不是大多數 NAS 系統使用的文件級通訊)來工作。與 FC SAN 一樣,iSCSI SAN 是一個專用於存儲的單獨物理網絡,但其組件與典型 IP 網絡 (LAN) 中的組件基本相同。

儘管 iSCSI 擁有光明的前景,但早期的批評很快指出了其在性能方面的內在不足。iSCSI 的優勢是能夠利用大家熟悉的 IP 網絡作爲傳輸機制。但是,TCP/IP 協議非常複雜並且佔用過多的 CPU 資源。而使用 iSCSI,大部分對數據進行的處理(TCP 和 iSCSI)都由軟件執行,比完全通過硬件處理的光纖通道慢得多。將每個 SCSI 命令映射到等價 iSCSI 事務所帶來的開銷過大。對許多公司來說,解決方案是取消 iSCSI 軟件啓動器,投資能夠從服務器 CPU 中卸載 TCP/IP 和 iSCSI 處理的專用卡。這些專用卡有時稱爲 iSCSI 主機總線適配器 (HBA) 或 TCP 卸載引擎 (TOE) 卡。還要考慮到目前 10 Gb 以太網是主流!

與其他新技術一樣,iSCSI 具有一組自己的縮略語和術語。對於本文來說,用戶只需要瞭解 iSCSI 啓動器與 iSCSI 目標之間的區別即可。

iSCSI 啓動器

從本質上說,iSCSI 啓動器是一個客戶端設備,它連接到服務器(在本例中是 iSCSI 目標)提供的某一服務,併發起對該服務的請求。iSCSI 啓動器軟件需要安裝在每個 Oracle RAC 節點(racnode1 和racnode2)上。

iSCSI 啓動器可以用軟件實現,也可以用硬件實現。軟件 iSCSI 啓動器可用於大部分主要操作系統平臺。對於本文,我們將使用 iscsi-initiator-utils RPM 中提供的免費 Linux Open-iSCSI 軟件驅動程序。iSCSI 軟件啓動器通常與標準網絡接口卡 (NIC)(大多數情況下是千兆位以太網卡)配合使用。硬件啓動器是一個 iSCSI HBA(或 TCP 卸載引擎 (TOE) 卡),它本質上只是一個專用以太網卡,其上的 SCSI ASIC 可以從系統 CPU 內卸載所有工作(TCP 和 SCSI 命令)。iSCSI HBA 可以從許多供應商處購買,包括 Adaptec、Alacritech、Intel 和 QLogic。

iSCSI 目標

iSCSI 目標是 iSCSI 網絡的「服務器」組件。它通常是一個存儲設備,包含您所需的信息並響應來自(一個或多個)啓動器的請求。對於本文,節點 openfiler1 將是 iSCSI 目標。

因此,根據有關 iSCSI 的所有這些討論,是否意味着光纖通道很快就會消失?可能不會。多年以來,光纖通道憑藉其極快的速度、靈活性和強健的可靠性,爲自己的能力提供了有力的證明。對高性能存儲、大型複雜連接以及任務關鍵可靠性有嚴格要求的客戶將毫不猶豫地繼續選擇光纖通道。

在結束本節內容之前,我認爲應該提供一個列表,對各種類型的磁盤接口和網絡技術的速度進行一番比較。對於每種接口,我提供了以每秒千位 (kb)、千字節 (KB)、兆位 (Mb)、兆字節 (MB)、千兆位 (Gb) 以及千兆字節 (GB) 爲單位的最大傳輸速率,較常用的以灰色突出顯示。

 

磁盤接口/網絡/總線 速度
Kb KB Mb MB Gb GB
串行 115 14.375 0.115 0.014    
並行(標準) 920 115 0.92 0.115    
10Base-T 以太網     10 1.25    
IEEE 802.11b 無線 Wi-Fi(2.4 GHz 頻帶)     11 1.375    
USB 1.1     12 1.5    
並行 (ECP/EPP)     24 3    
SCSI-1     40 5    
IEEE 802.11g 無線 WLAN(2.4 GHz 頻帶)     54 6.75    
SCSI-2(快速 SCSI/快速窄帶 SCSI)     80 10    
100Base-T 以太網(高速以太網)     100 12.5    
ATA/100(並行)     100 12.5    
IDE     133.6 16.7    
快速寬帶 SCSI(寬帶 SCSI)     160 20    
Ultra SCSI(SCSI-3 / Fast-20 / Ultra 窄帶)     160 20    
Ultra IDE     264 33    
寬帶 Ultra SCSI(快速寬帶 20)     320 40    
Ultra2 SCSI     320 40    
FireWire 400 — (IEEE1394a)     400 50    
USB 2.0     480 60    
寬帶 Ultra2 SCSI     640 80    
Ultra3 SCSI     640 80    
FireWire 800 — (IEEE1394b)     800 100    
千兆位以太網     1000 125 1  
PCI —(33 MHz / 32 位)     1064 133 1.064  
串行 ATA I — (SATA I)     1200 150 1.2  
寬帶 Ultra3 SCSI     1280 160 1.28  
Ultra160 SCSI     1280 160 1.28  
PCI —(33 MHz / 64 位)     2128 266 2.128  
PCI —(66 MHz / 32 位)     2128 266 2.128  
AGP 1x —(66 MHz / 32 位)     2128 266 2.128  
串行 ATA II — (SATA II)     2400 300 2.4  
Ultra320 SCSI     2560 320 2.56  
FC-AL 光纖通道     3200 400 3.2  
PCI-Express x1 —(雙向)     4000 500 4  
PCI —(66 MHz / 64 位)     4256 532 4.256  
AGP 2x —(133 MHz / 32 位)     4264 533 4.264  
串行 ATA III — (SATA III)     4800 600 4.8  
PCI-X —(100 MHz / 64 位)     6400 800 6.4  
PCI-X —(133 MHz / 64 位)       1064 8.512 1
AGP 4x —(266 MHz / 32 位)       1066 8.528 1
10G 以太網 — (IEEE 802.3ae)       1250 10 1.25
PCI-Express x4 —(雙向)       2000 16 2
AGP 8x —(533 MHz / 32 位)       2133 17.064 2.1
PCI-Express x8 —(雙向)       4000 32 4
PCI-Express x16 —(雙向)       8000 64 8

 


5. 硬件及成本

用於構建示例 Oracle RAC 11g 環境的硬件包括三個 Linux 服務器(兩個 Oracle RAC 節點和一個網絡存儲服務器),以及可以在許多本地計算機商店或通過互聯網購買到的組件。

Oracle RAC 節點 1 — (racnode1)
Dell PowerEdge T100 
  • 雙核 Intel(R) Xeon(R) E3110,3.0 GHz,6MB 緩存,1333MHz
  • 4GB,DDR2,800MHz
  • 160GB 7.2K RPM SATA 3Gbps 硬盤驅動器
  • 集成顯卡 — (ATI ES1000)
  • 集成千兆位以太網卡 — (Broadcom(R) NetXtreme IITM 5722)
  • 16x DVD 驅動器
  • 無鍵盤、顯示器或鼠標 —(連接到 KVM 切換設備)
450 美元
1 個以太網 LAN 卡

 

用於 racnode2 與 Openfiler 網絡存儲的 RAC 互連。

 

Oracle RAC 的每個 Linux 服務器應該包含兩個 NIC 適配器。Dell PowerEdge T100 包括一個嵌入式 Broadcom(R) NetXtreme IITM 5722 千兆位以太網 NIC,該 NIC 將用於連接公共網絡。另一個 NIC 適配器將用於專用網絡(RAC 互連和 Openfiler 網絡存儲)。所選 NIC 適配器要與專用網絡將使用的網絡交換機的最大數據傳輸速度兼容。對於本文,我在專用網絡中使用了千兆位以太網交換機(以及一個 1Gb 的以太網卡)。

 

     千兆位以太網
90 美元
Oracle RAC 節點 2 — (racnode2)
Dell PowerEdge T100 
  • 雙核 Intel(R) Xeon(R) E3110,3.0 GHz,6MB 緩存,1333MHz
  • 4GB,DDR2,800MHz
  • 160GB 7.2K RPM SATA 3Gbps 硬盤驅動器
  • 集成顯卡 — (ATI ES1000)
  • 集成千兆位以太網卡 — (Broadcom(R) NetXtreme IITM 5722)
  • 16x DVD 驅動器
  • 無鍵盤、顯示器或鼠標 —(連接到 KVM 切換設備)
450 美元
1 個以太網 LAN 卡

 

用於 racnode2 與 Openfiler 網絡存儲的 RAC 互連。

 

Oracle RAC 的每個 Linux 服務器應該包含兩個 NIC 適配器。Dell PowerEdge T100 包括一個嵌入式 Broadcom(R) NetXtreme IITM 5722 千兆位以太網 NIC,該 NIC 將用於連接公共網絡。另一個 NIC 適配器將用於專用網絡(RAC 互連和 Openfiler 網絡存儲)。所選 NIC 適配器要與專用網絡將使用的網絡交換機的最大數據傳輸速度兼容。對於本文,我在專用網絡中使用了千兆位以太網交換機(以及一個 1Gb 的以太網卡)。

 

     千兆位以太網
90 美元
網絡存儲服務器 — (openfiler1)
Dell PowerEdge 1800 
  • 雙 3.0GHz Xeon/1MB 緩存/ 800FSB (SL7PE)
  • 6GB ECC 內存
  • 500GB SATA 內置硬盤
  • 73GB 15K SCSI 內置硬盤
  • 集成顯卡
  • 一個嵌入式 Intel 10/100/1000 千兆位 NIC
  • 16x DVD 驅動器
  • 無鍵盤、顯示器或鼠標 —(連接到 KVM 切換設備)

 操作系統和 Openfiler 應用程序將安裝在 500GB 內置 SATA 磁盤上。將配置另一個內置 73GB 15K SCSI 硬盤用於數據庫存儲。Openfiler 服務器將配置爲使用另一個硬盤進行基於 iSCSI 的存儲,並將在 Oracle RAC 11g 配置中用於存儲 Oracle Clusterware 所需的共享文件以及集羣數據庫文件。

請注意,任何類型的硬盤(內置或外置),只要網絡存儲服務器 (Openfiler) 能夠識別並且該硬盤具有足夠的空間,都可用於數據庫存儲。例如,我已在 500GB 內置 SATA 磁盤上建立了一個額外的分區用於 iSCSI 目標,但決定在此例中使用速度更快的 SCSI 磁盤。

800 美元
1 個以太網 LAN 卡

 

用於專用網絡上的網絡存儲。

 

網絡存儲服務器(Openfiler 服務器)應包含兩個 NIC 適配器。Dell PowerEdge 1800 包含一個集成的 10/100/1000 以太網適配器,該適配器將用於連接公共網絡。另一個 NIC 適配器將用於專用網絡(Openfiler 網絡存儲)。所選 NIC 適配器要與專用網絡將使用的網絡交換機的最大數據傳輸速度兼容。對於本文,我在專用網絡中使用了千兆位以太網交換機(以及 1Gb 的以太網卡)。

 

     千兆位以太網
125 美元
其他組件
1 臺以太網交換機

 

用於將部署在 192.168.2.0 網絡上的 racnode1-priv 和 racnode2-priv 之間的互連。該交換機還將用於傳輸 Openfiler 的網絡存儲流量。對於本文,我在專用網絡中使用了千兆位以太網交換機(以及 1Gb 的以太網卡)。

 

     千兆位以太網
50 美元
6 根網絡電纜 10 美元 
10 美元 
10 美元 
10 美元 
10 美元 
10 美元
可選組件
KVM 切換設備

 

爲了安裝操作系統並執行多項配置任務,本指南需要可以訪問所有節點(服務器)的控制檯。管理少量服務器時,爲了訪問其控制檯,將每臺服務器與自己的顯示器、鍵盤和鼠標相連可能行得通。但是,隨着需要管理的服務器數量越來越多,這一解決方案變得難以實施。更實際的解決方案是配置一臺專用計算機,該計算機包括一個顯示器、鍵盤和鼠標,可以直接訪問每臺服務器的控制檯。使用一臺鍵盤、視頻和鼠標切換設備(也稱作 KVM 切換設備)可以實現該解決方案。KVM 切換設備是一臺允許用戶通過一個鍵盤、視頻顯示器和鼠標來控制多臺計算機的硬件設備。Avocent 提供了一種帶有 4 根 6 英尺電纜的優質、低成本 4 端口切換設備:

有關 KVM 切換設備及其使用的詳細說明和指南,請參閱「家用和企業 KVM 切換設備」一文。

340 美元
合計 2,455 美元

下面,我們將開始安裝過程。既然我們已經討論了將在本示例中使用的硬件,下面我們對連接好所有硬件組件後的環境進行概念性的瞭解(單擊下圖查看大圖像)

 

 

圖 1:體系結構

在開始詳細說明安裝過程之前,請注意本文中的大部分任務需要在兩個 Oracle RAC 節點(racnode1 和 racnode2)上執行。我將在每節開始處指出是應在這兩個 Oracle RAC 節點上還是在網絡存儲服務器 (openfiler1) 上執行該任務。

 


6. 安裝 Linux 操作系統

在集羣中的兩個 Oracle RAC 節點上執行以下安裝步驟。

本節總結了用於安裝 Linux 操作系統的各個屏幕。本指南與適用於 x86_64 的 Oracle Enterprise Linux 第 5 版 Update 4 配合使用,並且遵循 Oracle 的如下建議:執行「默認 RPM」安裝類型以確保擁有成功進行 Oracle RDBMS 安裝所需的 Linux 操作系統程序包。

在兩個 Oracle RAC 節點上安裝 Oracle Enterprise Linux 之前,應已安裝好兩個 NIC 接口卡,這兩個接口卡將分別用於公共網絡和專用網絡。

根據您的硬件體系結構,下載適用於 x86 或 x86_64 的 Oracle Enterprise Linux 第 5 版 Update 4 的以下 ISO 映像。

針對 Oracle Enterprise Linux 的 Oracle E-Delivery 網站

32 位 (x86) 安裝

 

  • V17787-01.zip (582 MB)
  • V17789-01.zip (612 MB)
  • V17790-01.zip (620 MB)
  • V17791-01.zip (619 MB)
  • V17792-01.zip (267 MB)

下載 Oracle Enterprise Linux 操作系統之後,解壓縮每個文件。您將獲得以下 ISO 映像,需要將其刻錄到 CD 上:

 

  • Enterprise-R5-U4-Server-i386-disc1.iso
  • Enterprise-R5-U4-Server-i386-disc2.iso
  • Enterprise-R5-U4-Server-i386-disc3.iso
  • Enterprise-R5-U4-Server-i386-disc4.iso
  • Enterprise-R5-U4-Server-i386-disc5.iso

如果 Linux RAC 節點安裝了 DVD,您可能會發現使用如下的單個 DVD 映像更方便:

 

  • V17793-01.zip (2.7 GB)

解壓縮該單個 DVD 映像文件後將其刻錄到一張 DVD 中:

 

  • Enterprise-R5-U4-Server-i386-dvd.iso

64 位 (x86_64) 安裝

 

  • V17795-01.zip (580 MB)
  • V17796-01.zip (615 MB)
  • V17797-01.zip (605 MB)
  • V17798-01.zip (616 MB)
  • V17799-01.zip (597 MB)
  • V17800-01.zip (198 MB)

下載 Oracle Enterprise Linux 操作系統之後,解壓縮每個文件。您將獲得以下 ISO 映像,需要將其刻錄到 CD 上:

 

  • Enterprise-R5-U4-Server-x86_64-disc1.iso
  • Enterprise-R5-U4-Server-x86_64-disc2.iso
  • Enterprise-R5-U4-Server-x86_64-disc3.iso
  • Enterprise-R5-U4-Server-x86_64-disc4.iso
  • Enterprise-R5-U4-Server-x86_64-disc5.iso
  • Enterprise-R5-U4-Server-x86_64-disc6.iso

如果 Linux RAC 節點安裝了 DVD,您可能會發現使用如下的單個 DVD 映像更爲方便:

 

  • V17794-01.zip (3.2 GB)

解壓縮該單個 DVD 映像文件後將其刻錄到一張 DVD 中:

 

  • Enterprise-R5-U4-Server-x86_64-dvd.iso

如果您將以上 ISO 文件下載到 MS Windows 計算機,可以使用多種方法將這些映像(ISO 文件)刻錄到一張 CD/DVD 上。您可能很熟悉這個過程,並且已經擁有合適的軟件,可以將映像刻錄到 CD/DVD。如果您不熟悉這個過程,並且沒有將映像刻錄到 CD/DVD 所需的軟件,這裏提供了兩個軟件程序包(實際上有許多個)供您使用:

 


下載 Oracle Enterprise Linux 映像(ISO 文件)並將其刻錄到 CD/DVD 後,將 OEL 1 號盤插入第一個服務器(在本示例中是 racnode1),打開電源,然後按照以下說明迴應安裝屏幕的提示。在第一個節點上安裝完 Linux 後,在第二個節點上執行相同的 Linux 安裝,但將節點名 racnode1 替換爲 racnode2 並設定另一個合適的 IP 地址。

引導屏幕 
第一個屏幕是 Oracle Enterprise Linux 引導屏幕。在 boot:提示符處按 [Enter] 鍵啓動安裝過程。

介質測試 
當要求測試 CD 介質時,用 Tab 鍵切換到 [Skip] 並按 [Enter] 鍵。如果有錯誤,介質刻錄軟件應該已經向我們發出警告。在幾秒鐘後,安裝程序將會檢測視頻卡、顯示器和鼠標。然後安裝程序進入 GUI 模式。

歡迎使用 Oracle Enterprise Linux 
在歡迎屏幕上,單擊 [Next] 繼續。

語言/鍵盤選項 
接下來的兩個屏幕提示您進行語言和鍵盤設置。請爲您的配置作出合適的選擇。

檢測以前的安裝 
注意,如果安裝程序檢測到以前版本的 Oracle Enterprise Linux,它將詢問您是「Install Enterprise Linux」還是「Upgrade an existing Installation」。始終選擇「Install Enterprise Linux」。

磁盤分區設置 
選中 [Remove all partitions on selected drives and create default layout],選中 [Review and modify partitioning layout] 選項。單擊 [Next] 繼續。

此時會顯示一個對話窗口,詢問您是否真的要刪除所有 Linux 分區。單擊 [Yes] 回覆這一警告。

分區 
隨後安裝程序將允許您查看(如果需要還可以修改)它自動選擇的磁盤分區。對於大多數自動佈局,安裝程序將爲 /boot 分配 100MB 空間,爲交換分區分配 RAM 的雙倍數量(系統 RAM <= 2,048MB 時)或 RAM 的同等數量(系統 RAM > 2,048MB 時),而將剩餘空間分配給根 (/) 分區。從 RHEL 4 開始,安裝程序將創建與剛纔提到的相同的磁盤配置,但將使用邏輯卷管理器 (LVM) 創建它們。例如,它將第一個硬盤驅動器(我的配置使用 /dev/sda)劃分爲兩個分區 — 一個用於 /boot 分區 (/dev/sda1),而磁盤的剩餘部分專用於 LVM 指定的 VolGroup00 (/dev/sda2)。然後,將 LVM 卷組 (VolGroup00) 劃分爲兩個 LVM 分區 — 一個用於根文件系統 (/),另一個用於交換分區。

在分區階段,主要是要確保爲 Oracle 分配了足夠的交換空間(可用 RAM 的倍數)。下面是 Oracle 的最小交換空間要求:

 

可用 RAM 所需交換空間
介於 1,024MB 和 2,048MB 之間 RAM 大小的 1.5 倍
介於 2,049MB 和 8,192MB 之間 與 RAM 大小相同
超過 8,192MB RAM 大小的 0.75 倍


就本安裝而言,我將接受所有自動選用的大小。(包括 5,952MB 的交換空間,因爲我安裝了 4GB 的 RAM。)

如果出於任何原因,自動佈局無法配置足夠數量的交換空間,您可以通過此屏幕輕鬆地進行更改。要增加交換分區的大小,單擊 [Edit] 編輯卷組 VolGroup00。這將顯示「Edit LVM Volume Group:VolGroup00」對話框。首先,單擊 [Edit] 進行編輯,減少根文件系統 (/) 的大小(減少的數量是您要添加到交換分區的數量)。例如,要爲交換分區添加 512MB 的空間,您需要將根文件系統的大小減少 512MB(即,36,032MB - 512MB = 35,520MB)。現在,將您從根文件系統減少的空間 (512MB) 添加到交換分區。完成後,單擊「Edit LVM Volume Group:VolGroup00」對話框中的 [OK]。

如果您對磁盤佈局滿意,單擊 [Next] 繼續。

引導加載程序配置 
安裝程序默認情況下將使用 GRUB 引導加載程序。要使用 GRUB 引導加載程序,接受所有默認值並單擊 [Next] 繼續。

網絡配置 
在開始安裝操作系統之前,我已確認在每個 Linux 計算機上安裝了兩個 NIC 接口(卡)。本屏幕應該已經成功地檢測到每個網絡設備。由於我們要在該計算機上安裝 Oracle 數據庫,因此需要對網絡配置進行一些更改。當然,您在此處的設置取決於您的網絡配置。關鍵的一點是永遠不要使用 DHCP 配置該計算機,因爲該機算機將用作駐留 Oracle 數據庫服務器的主機。您需要使用靜態 IP 地址配置該計算機。您還需要使用實際主機名配置服務器。

首先,確保將每個網絡設備設置爲 [Active on boot]。默認情況下,安裝程序可能選擇不** eth1。

接下來,單擊 [Edit],按照以下方法對 eth0 和 eth1 進行編輯。驗證已選中「Enable IPv4 support」選項。單擊選中「Manual configuration」單選按鈕可取消選中「Dynamic IP configuration (DHCP)」選項,然後爲您的環境配置一個靜態 IP 地址和網絡掩碼。單擊取消選中「Enable IPv6 support」選項。您可能要爲本指南中的eth0 和 eth1 使用不同的 IP 地址,這沒有問題。可以將 eth1(互連)置於不同於 eth0(公共網絡)的子網中:

eth0: 
- 選中 [Enable IPv4 support] 選項 
- 取消選中 [Dynamic IP configuration (DHCP)] 選項 —(選擇人工配置) 
   IPv4 地址:192.168.1.151 
   前綴(網絡掩碼):255.255.255.0 
- 取消選中 [Enable IPv6 support] 選項

eth1: 
- 選中 [Enable IPv4 support] 選項 
- 取消選中 [Dynamic IP configuration (DHCP)] 選項 —(選擇人工配置) 
   IPv4 地址:192.168.2.151 
   前綴(網絡掩碼):255.255.255.0 
- 取消選中 [Enable IPv6 support] 選項

接着,手動設置主機名。我對第一個節點使用「racnode1」,對第二個節點使用「racnode2」。然後提供您的網關和 DNS 服務器,最後關閉該對話框。

時區選擇 
爲您的環境選擇適當的時區,然後單擊 [Next] 繼續。

設置根口令 
選擇一個根口令,然後單擊 [Next] 繼續。

程序包安裝默認值 
默認情況下,Oracle Enterprise Linux 將安裝一臺典型服務器所需的大部分軟件。但成功安裝 Oracle 軟件還需要若干其他程序包 (RPM)。運行安裝程序時,您可以選擇「Customize software」添加 RPM 分組,如「Development Libraries」或「Legacy Library Support」。添加這樣的 RPM 分組不成問題。然而,取消選擇任何「默認的 RPM」分組或單個的 RPM 可能會導致 Oracle Grid Infrastructure 和 Oracle RAC 安裝嘗試失敗。

對於本文,選中 [Customize now] 單選按鈕,然後單擊 [Next] 繼續。

您可以在這裏選擇要安裝的程序包。Oracle 軟件需要的大部分程序包都集中在「程序包組」中(即 Application -> Editors)。由於這些節點上將駐留 Oracle Grid Infrastructure 和 Oracle RAC 軟件,請驗證至少選擇安裝以下程序包組。注意,對於許多 Linux 程序包組,並不是所有與該組關聯的程序包都被選擇進行安裝。(選擇一個程序包組之後,請注意「Optional packages」按鈕。)因此,儘管選擇了安裝該程序包組,但 Oracle 需要的某些程序包還是沒有安裝。實際上,Oracle 需要的某些程序包不屬於任何 可用的程序包組(例如 libaio-devel)。不要擔心。下一節將提供適用於 Oracle Enterprise Linux 5 的 Oracle Grid Infrastructure 11g 第 2 版和 Oracle RAC 11g 第 2 版所需程序包的完整列表。安裝操作系統之後,需要從 Oracle Enterprise Linux CD 手動安裝這些程序包。現在,安裝以下程序包組:

 

  • Desktop Environments
    • GNOME Desktop Environment
  • Applications
    • Editors
    • Graphical Internet
    • Text-based Internet
  • Development
    • Development Libraries
    • Development Tools
    • Legacy Software Development
  • Servers
    • Server Configuration Tools
  • Base System
    • Administration Tools
    • Base
    • Java
    • Legacy Software Support
    • System Tools
    • X Window System

除了上述程序包外,還可選擇您希望爲此節點安裝的任何其他程序包,請記住,不要取消選擇任何「默認」的 RPM 程序包。選擇要安裝的程序包之後,單擊 [Next] 繼續。

準備安裝 
該屏幕本質上是一個確認屏幕。單擊 [Next] 開始安裝。如果您使用 CD 安裝 Oracle Enterprise Linux,在安裝過程中,系統會根據您選擇安裝的程序包來要求您更換 CD。

恭喜 
大功告成。您已經在第一個節點 (racnode1) 上成功安裝了 Oracle Enterprise Linux。安裝程序將從 CD-ROM 驅動器中彈出 CD/DVD。取出 CD/DVD,單擊 [Reboot] 重新引導系統。

安裝後向導歡迎屏幕 
當系統第一次引導進入 Oracle Enterprise Linux 時,將爲您顯示另一個 Welcome 屏幕,進入「Post Installation Wizard」。安裝後向導允許您進行最終的 O/S 配置設置。在「Welcome」屏幕上,單擊 [Forward] 繼續。

許可協議 
閱讀許可協議。選擇「Yes, I agree to the License Agreement」,然後單擊 [Forward] 繼續。

防火牆 
在該屏幕上,確保選中 [Disabled] 選項,然後單擊 [Forward] 繼續。

系統將顯示一個警告對話框,提示您未設置防火牆。顯示該對話框之後,單擊 [Yes] 繼續。

SELinux 
在 SELinux 屏幕上,選中 [Disabled] 選項,然後單擊 [Forward] 繼續。

系統將顯示一個警告對話框,提示您更改 SELinux 設置需要重新引導系統以便重新標記整個文件系統。顯示該對話框之後,單擊 [Yes] 確認在第一次引導(安裝後向導)完成後將重新引導系統。

Kdump 
接受 Kdump 屏幕上的默認設置(禁用),然後單擊 [Forward] 繼續。

日期和時間設置 
如果需要,調整日期和時間設置,然後單擊 [Forward] 繼續。

創建用戶 
如果需要,創建其他(非 oracle)操作系統用戶帳戶,然後單擊 [Forward] 繼續。對於本文,我不會創建任何其他操作系統帳戶。在本指南稍後我將創建「grid」和「oracle」用戶帳戶。

如果您選擇不定義任何其他操作系統用戶帳戶,單擊 [Continue] 確認警告對話框。

聲卡 
只有當嚮導檢測到聲卡時,纔會出現該屏幕。在聲卡屏幕上,單擊 [Forward] 繼續。

其他 CD 
在「Additional CDs」屏幕上,單擊 [Finish] 繼續。

重新引導系統 
由於我們更改了 SELinux 選項(更改爲 disabled),系統將提示重新引導系統。單擊 [OK] 重新引導系統以便正常使用。

登錄屏幕 
重新引導計算機之後,將爲您顯示登錄屏幕。使用「root」用戶帳戶和在安裝期間提供的口令登錄。

在第二個節點上進行相同的安裝 
在第一個節點上安裝完 Linux 後,在第二個節點 (racnode2) 上重複上述步驟。確保計算機名和網絡進行了正確配置。在我的安裝中, racnode2 的配置如下:

首先,確保將每個網絡設備設置爲 [Active on boot]。安裝程序可能選擇不** eth1。

接下來,單擊 [Edit],按照以下方法對 eth0 和 eth1 進行編輯。驗證已選中「Enable IPv4 support」選項。單擊選中「Manual configuration」單選按鈕可取消選中「Dynamic IP configuration (DHCP)」選項,然後爲您的環境配置一個靜態 IP 地址和網絡掩碼。單擊取消選中「Enable IPv6 support」選項。您可能要爲本指南中的eth0 和 eth1 使用不同的 IP 地址,這沒有問題。可以將 eth1(互連)置於不同於 eth0(公共網絡)的子網中:

eth0: 
- 選中 [Enable IPv4 support] 選項 
- 取消選中 [Dynamic IP configuration (DHCP)] 選項 —(選擇人工配置) 
   IPv4 地址:192.168.1.152 
   前綴(網絡掩碼):255.255.255.0 
- 取消選中 [Enable IPv6 support] 選項

eth1: 
- 選中 [Enable IPv4 support] 選項 
- 取消選中 [Dynamic IP configuration (DHCP)] 選項 —(選擇人工配置) 
   IPv4 地址:192.168.2.152 
   前綴(網絡掩碼):255.255.255.0 
- 取消選中 [Enable IPv6 support] 選項

接着,手動設置您的主機名。我對第二個節點使用「racnode2」。然後提供您的網關和 DNS 服務器,最後關閉該對話框。

 


7. 安裝 Oracle RAC 所需的 Linux 程序包

在集羣中的兩個 Oracle RAC 節點上安裝以下必需的 Linux 程序包。

安裝 Enterprise Linux 之後,下一步是驗證並安裝 Oracle Clusterware 和 Oracle RAC 所需的所有程序包 (RPM)。Oracle Universal Installer (OUI) 將在安裝期間在計算機上執行檢查,以檢驗是否滿足相應的操作系統程序包要求。要確保這些檢查成功完成,請在開始安裝 Oracle 之前查看本節中說明的軟件要求。

儘管許多 Oracle 必需的程序包已經在 Enterprise Linux 安裝期間安裝,但還缺少一些程序包,因爲它們在程序包組中被視爲可選,或者根本不存在於任何程序包組中!

本節中列出的程序包(或更高版本)是 Oracle Enterprise Linux 5 平臺上運行的 Oracle Grid Infrastructure 11g 第 2 版和 Oracle RAC 11g 第 2 版所必需的。

 

32 位 (x86) 安裝

 

  • binutils-2.17.50.0.6
  • compat-libstdc++-33-3.2.3
  • elfutils-libelf-0.125
  • elfutils-libelf-devel-0.125
  • elfutils-libelf-devel-static-0.125
  • gcc-4.1.2
  • gcc-c++-4.1.2
  • glibc-2.5-24
  • glibc-common-2.5
  • glibc-devel-2.52
  • glibc-headers-2.5
  • kernel-headers-2.6.18
  • ksh-20060214
  • libaio-0.3.106
  • libaio-devel-0.3.106
  • libgcc-4.1.2
  • libgomp-4.1.2
  • libstdc++-4.1.2
  • libstdc++-devel-4.1.2
  • make-3.81
  • sysstat-7.0.2
  • unixODBC-2.2.11
  • unixODBC-devel-2.2.11

上面列出的每個程序包都可以在 Oracle Enterprise Linux 5 - (x86) CD 的 1 號 CD、2 號 CD 和 3 號 CD 中找到。儘管可以查詢每個單獨的程序包以確定缺少並需要安裝哪個程序包,但更簡單的方法是針對這三個 CD 運行 rpm -Uvh PackageName 命令,如下所示。對於已經存在並且是最新版本的程序包,RPM 命令將忽略安裝,並在控制檯上打印警告消息,表明該程序包已經安裝。

 # From Enterprise Linux 5.4 (x86)- [CD #1]
mkdir -p /media/cdrom

mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/Server
rpm -Uvh binutils-2.*
rpm -Uvh elfutils-libelf-0.*

rpm -Uvh glibc-2.*
rpm -Uvh glibc-common-2.*
rpm -Uvh kernel-headers-2.*
rpm -Uvh ksh-2*
rpm -Uvh libaio-0.*
rpm -Uvh libgcc-4.*
rpm -Uvh libstdc++-4.*
rpm -Uvh make-3.*
cd /
eject

# From Enterprise Linux 5.4 (x86) - [CD #2]
mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/Server
rpm -Uvh elfutils-libelf-devel-*
rpm -Uvh gcc-4.*
rpm -Uvh gcc-c++-4.*
rpm -Uvh glibc-devel-2.*
rpm -Uvh glibc-headers-2.*
rpm -Uvh libgomp-4.*
rpm -Uvh libstdc++-devel-4.*
rpm -Uvh unixODBC-2.*
cd /
eject

# From Enterprise Linux 5.4 (x86) - [CD #3]
mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/Server
rpm -Uvh compat-libstdc++-33*
rpm -Uvh libaio-devel-0.*
rpm -Uvh sysstat-7.*
rpm -Uvh unixODBC-devel-2.*
cd /
eject

 

64 位 (x86_64) 安裝

 

  • binutils-2.17.50.0.6
  • compat-libstdc++-33-3.2.3
  • compat-libstdc++-33-3.2.3(32 位)
  • elfutils-libelf-0.125
  • elfutils-libelf-devel-0.125
  • elfutils-libelf-devel-static-0.125
  • gcc-4.1.2
  • gcc-c++-4.1.2
  • glibc-2.5-24
  • glibc-2.5-24(32 位)
  • glibc-common-2.5
  • glibc-devel-2.5
  • glibc-devel-2.5(32 位)
  • glibc-headers-2.5
  • ksh-20060214
  • libaio-0.3.106
  • libaio-0.3.106(32 位)
  • libaio-devel-0.3.106
  • libaio-devel-0.3.106(32 位)
  • libgcc-4.1.2
  • libgcc-4.1.2(32 位)
  • libstdc++-4.1.2
  • libstdc++-4.1.2(32 位)
  • libstdc++-devel 4.1.2
  • make-3.81
  • sysstat-7.0.2
  • unixODBC-2.2.11
  • unixODBC-2.2.11(32 位)
  • unixODBC-devel-2.2.11
  • unixODBC-devel-2.2.11(32 位)

上面列出的每個程序包都可以在 Oracle Enterprise Linux 5 - (x86_64) CD 的 1 號 CD、2 號 CD、3 號 CD 和 4 號 CD 中找到。儘管可以查詢每個單獨的程序包以確定缺少並需要安裝哪個程序包,但更簡單的方法是針對這四個 CD 運行 rpm -Uvh PackageName 命令,如下所示。對於已經存在並且是最新版本的程序包,RPM 命令將忽略安裝,並在控制檯上打印警告消息,表明該程序包已經安裝。

 # From Enterprise Linux 5.4 (x86_64)- [CD #1]
mkdir -p /media/cdrom
mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/Server
rpm -Uvh binutils-2.*
rpm -Uvh elfutils-libelf-0.*
rpm -Uvh glibc-2.*
rpm -Uvh glibc-common-2.*
rpm -Uvh ksh-2*
rpm -Uvh libaio-0.*
rpm -Uvh libgcc-4.*
rpm -Uvh libstdc++-4.*
rpm -Uvh make-3.*
cd /
eject

# From Enterprise Linux 5.4 (x86_64) - [CD #2]
mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/Server
rpm -Uvh elfutils-libelf-devel-*
rpm -Uvh gcc-4.*
rpm -Uvh gcc-c++-4.*
rpm -Uvh glibc-devel-2.*
rpm -Uvh glibc-headers-2.*
rpm -Uvh libstdc++-devel-4.*
rpm -Uvh unixODBC-2.*
cd /
eject

# From Enterprise Linux 5.4 (x86_64) - [CD #3]
mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/Server
rpm -Uvh compat-libstdc++-33*
rpm -Uvh libaio-devel-0.*
rpm -Uvh unixODBC-devel-2.*
cd /
eject

# From Enterprise Linux 5.4 (x86_64) - [CD #4]
mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/Server
rpm -Uvh sysstat-7.*
cd /
eject

 


8. 網絡配置

在集羣中的兩個 Oracle RAC 節點上執行下列網絡配置。

儘管我們在 Linux 安裝期間進行了一些網絡配置,但不要跳過此節,這很重要,因爲此節包含了重要的檢查步驟,可以檢查您是否擁有集羣安裝的 Oracle Grid Infrastructure 所需的網絡硬件和互聯網協議 (IP) 地址。

網絡硬件要求

以下爲該網絡配置的硬件要求列表:

 

  • 每個 Oracle RAC 節點至少必須有兩個網絡適配器(即網絡接口卡 (NIC)):一個用於公共網絡接口,另一個用於專用網絡接口(互連)。要對公共網絡或專用網絡使用多個 NIC,Oracle 建議採用 NIC 綁定。對公共網絡和專用網絡使用不同的綁定(即,對公共網絡使用 bond0,對專用網絡使用 bond1),這是因爲在安裝過程中,每個接口要麼定義爲公共接口,要麼定義爲專用接口。本文不討論 NIC 綁定。
  • 每個網絡中網絡適配器的相關公共接口名稱在所有節點上都應相同,網絡適配器的相關專用接口名稱在所有節點上都應相同。

     

    例如,對於我們的兩節點集羣,不能這樣配置網絡適配器:在 racnode1 配置 eth0 作爲公共接口,而在 racnode2 上卻配置 eth1 作爲公共接口。公共接口名稱必須相同,因此,必須在兩個節點上均配置 eth0 作爲公共接口。同樣,應在相同的網絡適配器上配置專用接口。如果 eth1 是 racnode1 的專用接口,則 eth1 必須是 racnode2 的專用接口。
  • 對於公共網絡,每個網絡適配器必須支持 TCP/IP。
  • 對於專用網絡,互連必須支持用戶數據報協議 (UDP),使用支持 TCP/IP(最小要求爲 1 Gb 以太網)的高速網絡適配器和交換機。

     

    UDP 是 Oracle RAC 的默認互連協議,TCP 是 Oracle Clusterware 的互連協議。對於此互連,必須使用一個交換機。Oracle 建議您使用一個專用交換機。

     

    對於互連,Oracle 不支持令牌環和交叉電纜。
  • 對於專用網絡,所有指定互連接口的端點在網絡上必須完全可達。每個節點均應連接到所有的專用網絡接口。可以使用 ping 命令測試一個互連接口是否可達。
  • 在 Oracle Grid Infrastructure 的安裝過程中,系統都會要求您標識 OUI 在您的集羣節點上檢測到的每個網絡接口計劃使用方式。必須將每個接口標識爲 public interfaceprivate interface 或 not used,並且必須對 Oracle Clusterware 和 Oracle RAC 使用相同的專用接口。

     

    可將若干獨立的接口綁定爲一個公共接口,這樣可在某個 NIC 出現故障時提供冗餘性。但是,Oracle 建議您不要爲 Oracle Clusterware 和 Oracle RAC 創建不同的接口。如果您對專用互連使用多個 NIC,Oracle 建議您使用 NIC 綁定。請注意,多個專用接口提供負載平衡,但不提供故障切換功能,只有將它們綁定在一起時才提供故障切換功能。

     

    從 Oracle Clusterware 11g 第 2 版開始,無需再爲互連提供專用名稱或 IP 地址。標識爲專用的子網上的 IP 地址將被分配作爲集羣成員節點的專用 IP 地址。無需在 hosts 目錄中手動配置這些地址。如果需要針對互連進行名稱解析,可在 hosts 文件或 DNS 上配置專用 IP 名稱。而 Oracle Clusterware 會爲安裝期間定義爲專用接口的那個接口(如 eth1)分配互連地址,並將該地址分配給用作專用子網的那個子網。實際上,在本指南中,我會繼續在每個節點包括一個專用名稱和 IP 地址以用於 RAC 互連。這在專用網絡上提供了自我文檔編制的方法和一組端點,可供故障排除之用:
     192.168.2.151   racnode1-priv
    192.168.2.152 racnode2-priv
  • 在使用 iSCSI 進行網絡存儲的生產環境中,我們強烈建議使用 TCP/IP 卸載引擎 (TOE) 卡配置第三個網絡接口(如 eth2)作爲冗餘接口來處理這種存儲流量。爲簡單起見,本文中的配置是讓 RAC 專用互連接口 (eth1) 所屬的網絡同時承載 iSCSI 網絡存儲流量。在同一網絡接口上同時處理 Oracle RAC 的 iSCSI 存儲流量和緩存融合流量使我們的測試系統成本低廉,但永遠不要考慮在生產環境中使用該方法。

     

    TOE 的基本用意是將 TCP/IP 協議的處理工作從主機處理器卸載到適配器上的硬件或系統中。TOE 通常內嵌在網絡接口卡 (NIC) 或主機總線適配器 (HBA) 中,用於減少 CPU 和服務器 I/O 子系統上的 TCP/IP 處理工作量以提高總體性能。


分配 IP 地址

記得我們說過,每個節點至少需要配置兩個網絡接口,一個使用專用 IP 地址,另一個使用公共 IP 地址。在 Oracle Clusterware 11g 第 2 版之前,網絡管理員需要手動分配所有的 IP 地址,要使用靜態 IP 地址 — 絕不使用 DHCP。這會包括節點的公共 IP 地址、RAC 互連地址、虛擬 IP 地址 (VIP),以及 11g 第 2 版中新增的單客戶端訪問名稱 (SCAN) IP 地址。實際上,在我以前的所有文章中,我都會強調絕不要使用 DHCP 來分配任何這些 IP 地址。在 11g 第 2 版中,您現在可以選擇通過以下兩種方法爲每個 Oracle RAC 節點分配 IP 地址 — 使用 DHCP 的網格命名服務 (GNS),或者使用 DNS 手動分配靜態 IP 地址的傳統方法。

網格命名服務 (GNS)

從 Oracle Clusterware 11g 第 2 版開始,引入了另一種分配 IP 地址的方法,即網格命名服務 (GNS)。該方法允許使用 DHCP 分配所有專用互連地址以及大多數 VIP 地址。GNS 和 DHCP 是 Oracle 的新的網格即插即用 (GPnP) 特性的關鍵要素,如 Oracle 所述,該特性使我們無需配置每個節點的數據,也不必具體地添加和刪除節點。通過實現對集羣網絡需求的自我管理,GNS 實現了動態 網格基礎架構。與手動定義靜態 IP 地址相比,使用 GNS 配置 IP 地址確實有其優勢並且更爲靈活,但代價是增加了複雜性,該方法所需的一些組件未在這個構建經濟型 Oracle RAC 的指南中定義。例如,爲了在集羣中啓用 GNS,需要在公共網絡上有一個 DHCP 服務器,我認爲這個 DHCP 服務器超出了本文的討論範圍。

要了解 GNS 的更多優勢及其配置方法,請參見適用於 Linux 的 Oracle Grid Infrastructure 11g 第 2 版 (11.2) 安裝指南 

手動分配靜態 IP 地址 —(DNS 方法)

如果選擇不使用 GNS,在 Oracle Clusterware 11g 第 2 版中仍可手動定義靜態 IP 地址,本文將使用此方法分配所有需要的 Oracle Clusterware 聯網組件(節點的公共 IP 地址、RAC 互連地址、虛擬 IP 地址以及 SCAN IP 地址)。

您會注意到本節的標題包含了「DNS 方法」這樣的字眼。Oracle 建議在開始安裝 Oracle Grid Infrastructure之前,在域名服務器 (DNS) 中手動配置靜態 IP 地址。然而,在構個經濟型 Oracle RAC 時,您並非總是可以訪問 DNS 服務器。在 11g 第 2 版之前,這不是一個很大的障礙,因爲可以在所有節點的 host 文件 (/etc/hosts) 中定義每個 IP 地址而不必使用 DNS。這包括節點的公共 IP 地址、RAC 互連地址和虛擬 IP 地址 (VIP)。

然而,事情在 Oracle Grid Infrastructure 11g 第 2 版中有了些許變化。

讓我們從 RAC 專用互連開始。在 Oracle Grid Infrastructure 的安裝過程中無需再爲互連提供 IP 地址或專用名稱(即 racnode1-priv 或 racnode2-priv)。現在,Oracle Clusterware 爲安裝期間定義爲專用接口的接口(如 eth1)分配互連地址,並將該地址分配給用作專用子網的那個子網(本文中爲192.168.2.0)。如果需要針對互連進行名稱解析,可在 hosts 文件或 DNS 上配置專用 IP 名稱。實際上,在本指南中,我會繼續在每個節點包括一個專用名稱和 IP 地址以用於 RAC 互連。這在專用網絡上提供了自我文檔編制的方法和一組端點,可供故障排除之用:

 192.168.2.151   racnode1-priv
192.168.2.152 racnode2-priv


在 11g 第 2 版中,節點的公共 IP 地址和虛擬 IP 地址 (VIP) 保持不變。Oracle 建議定義每個節點的名稱和 IP 地址(將來要通過 DNS 進行解析)並將該定義包括每個節點的 hosts 文件中。對於 Oracle Grid Infrastructure 的當前版本和以前版本,Oracle Clusterware 毫無疑問可以僅用一個 hosts 文件來解析節點的公共 IP 地址和 VIP:

 192.168.1.151   racnode1
192.168.1.251 racnode1-vip
192.168.1.152 racnode2
192.168.1.252 racnode2-vip

單客戶端訪問名稱 (SCAN) 虛擬 IP 是 11g 第 2 版的一個新特性,看起來該特性引發了很多討論!必須在 GNS 或 DNS 中配置 SCAN 以便循環解析爲三個地址(建議的數量)或至少一個地址。如果您選擇不使用 GNS,Oracle 會告訴您,SCAN 必須通過 DNS 來解析而不是通過 hosts 文件來解析。如果不能通過 DNS(或 GNS)解析 SCAN,Oracle Grid Infrastructure 安裝過程中的集羣驗證實用程序檢查將失敗。如果您不能訪問 DNS,我在配置 SCAN 而不使用 DNS 一節提供了一種簡單的變通方法。該方法需要在安裝 Oracle Grid Infrastructure 之前修改 nslookup 實用程序。

集羣的單客戶端訪問名稱 (SCAN)

如果您曾經通過添加新節點來擴展 Oracle RAC 集羣(或者通過刪除節點來縮小 RAC 集羣),您就會了解這種痛苦 — 遍歷所有客戶端,更新每個客戶端的 SQL*Net 或 JDBC 配置以反映這個新增或刪除的節點!爲解決此問題,Oracle 11g 第 2 版引入了一個新特性,即單客戶端訪問名稱(簡稱爲 SCAN)。SCAN 這個新特性爲客戶端提供了單一的主機名,用於訪問集羣中運行的 Oracle 數據庫。如果您在集羣中添加或刪除節點,使用 SCAN 的客戶端無需更改自己的 TNS 配置。無論集羣包含哪些節點,SCAN 資源及其關聯的 IP 地址提供了一個穩定的名稱供客戶端進行連接使用。在 Oracle Grid Infrastructure 安裝過程的詢問階段,系統會要求您提供主機名和最多三個 IP 地址以便用於 SCAN 資源。爲了獲得較高的可用性和可伸縮性,Oracle 建議您對 SCAN 名稱進行配置,以便解析爲三個 IP 地址。SCAN 必須至少解析爲一個地址。

SCAN 虛擬 IP 名稱類似於節點的虛擬 IP 地址所使用的名稱,如 racnode1-vip。然而,與虛擬 IP 不同的是,SCAN 與整個集羣相關聯,而不是與一個節點相關聯,它可與多個 IP 地址相關聯,而不是隻與一個地址相關聯。注意,SCAN 地址、虛擬 IP 地址和公共 IP 地址必須屬於同一子網。

應該將 SCAN 配置爲可由集羣中的網格命名服務 (GNS) 進行解析,或由域名服務 (DNS) 解析進行解析。

在本文中,我會將 SCAN 配置爲使用 DNS 方法僅解析爲一個手動配置的靜態 IP 地址(但不在 DNS 中對其進行實際定義):

 192.168.1.187   racnode-cluster-scan 

配置公共網絡和專用網絡

在我們的雙節點示例中,需要在兩個節點上配置網絡,以訪問公共網絡及其專用互連。

在 Enterprise Linux 中配置網絡設置的最簡單方法是使用「Network Configuration」程序。Network Configuration 是一個 GUI 應用程序,可以從命令行以「root」用戶帳戶進行啓動,如下所示:

[[email protected] ~]# /usr/bin/system-config-network &                       

使用 Network Configuration 應用程序,您需要配置兩個 NIC 設備以及 /etc/hosts 文件。您可以使用 Network Configuration GUI 完成這兩個任務。注意,兩個節點的 /etc/hosts 設置相同,而且我刪除了與 IPv6 有關的所有項。例如:

                             ::1 localhost6.localdomain6 localhost6                         

我們的示例 Oracle RAC 配置將使用以下網絡設置:

Oracle RAC 節點 1 — (racnode1)
設備 IP 地址 子網 網關 用途
eth0 192.168.1.151 255.255.255.0 192.168.1.1 將 racnode1 連接到公共網絡
eth1 192.168.2.151 255.255.255.0   將 racnode1(互連)連接到 racnode2 (racnode2-priv)
/etc/hosts
 # Do not remove the following line, or various programs # that require network functionality will fail.  127.0.0.1        localhost.localdomain   localhost                                    
# Public Network - (eth0)
192.168.1.151
1racnode1
192.168.1.152
1racnode2

# Private Interconnect - (eth1)
192.168.2.151 racnode1-priv
192.168.2.152 racnode2-priv

# Public Virtual IP (VIP) addresses - (eth0:1)
192.168.1.251 racnode1-vip
192.168.1.252 racnode2-vip

# Single Client Access Name (SCAN)
192.168.1.187 racnode-cluster-scan

# Private Storage Network for Openfiler - (eth1)
192.168.1.195 openfiler1
192.168.2.195 openfiler1-priv


# Miscellaneous Nodes 192.168.1.1 router 192.168.1.105 packmule 192.168.1.106 melody 192.168.1.121 domo 192.168.1.122 switch1 192.168.1.125 oemprod 192.168.1.245 accesspoint

 

Oracle RAC 節點 2 — (racnode2)
設備 IP 地址 子網 網關 用途
eth0 192.168.1.152 255.255.255.0 192.168.1.1 將 racnode2 連接到公共網絡
eth1 192.168.2.152 255.255.255.0   將 racnode2(互連)連接到 racnode1 (racnode1-priv)
/etc/hosts
 # Do not remove the following line, or various programs # that require network functionality will fail.  127.0.0.1        localhost.localdomain   localhost                                    
# Public Network - (eth0)
192.168.1.151 racnode1
192.168.1.152 racnode2

# Private Interconnect - (eth1)
192.168.2.151 racnode1-priv
192.168.2.152 racnode2-priv

# Public Virtual IP (VIP) addresses - (eth0:1)
192.168.1.251 racnode1-vip
192.168.1.252 racnode2-vip

# Single Client Access Name (SCAN)
192.168.1.187 racnode-cluster-scan

# Private Storage Network for Openfiler - (eth1)
192.168.1.195 openfiler1
192.168.2.195 openfiler1-priv


# Miscellaneous Nodes 192.168.1.1 router 192.168.1.105 packmule 192.168.1.106 melody 192.168.1.121 domo 192.168.1.122 switch1 192.168.1.125 oemprod 192.168.1.245 accesspoint

以下屏幕截圖只顯示了 Oracle RAC 節點 1 (racnode1)。確保對兩個 Oracle RAC 節點進行了所有適當的網絡設置。

圖 2:Network Configuration 屏幕,節點 1 (racnode1)


圖 3:Ethernet Device 屏幕,eth0 (racnode1)


圖 4:Ethernet Device 屏幕,eth1 (racnode1)


圖 5:Network Configuration 屏幕,/etc/hosts (racnode1)


配置網絡之後,可以使用 ifconfig 命令驗證一切是否正常。以下示例來自於 racnode1

[[email protected] ~]# /sbin/ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:14:6C:76:5C:71
inet addr:192.168.1.151 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::214:6cff:fe76:5c71/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:759780 errors:0 dropped:0 overruns:0 frame:0
TX packets:771948 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:672708275 (641.5 MiB) TX bytes:727861314 (694.1 MiB)
Interrupt:177 Base address:0xcf00

eth1 Link encap:Ethernet HWaddr 00:0E:0C:64:D1:E5
inet addr:192.168.2.151 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::20e:cff:fe64:d1e5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:120 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:24544 (23.9 KiB) TX bytes:8634 (8.4 KiB)
Base address:0xddc0 Memory:fe9c0000-fe9e0000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3191 errors:0 dropped:0 overruns:0 frame:0
TX packets:3191 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4296868 (4.0 MiB) TX bytes:4296868 (4.0 MiB)

sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

確保 RAC 節點名沒有出現在環回地址中

確保 /etc/hosts 文件的環回地址中包含節點名(racnode1 或 racnode2)。如果計算機名出現在環回地址條目中,如下所示:

 127.0.0.1  racnode1 localhost.localdomain localhost

需要將其刪除,如下所示:

 127.0.0.1 localhost.localdomain localhost 

如果 RAC 節點名出現在環回地址中,您在 RAC 安裝期間將收到以下錯誤消息:

      ORA-00603: ORACLE server session terminated by fatal error                         
或者
      ORA-29702: error occurred in Cluster Group Service operation                         

檢查並關閉 UDP ICMP 拒絕

在 Linux 安裝期間,我曾說過不配置防火牆選項。默認情況下,安裝程序會選中配置防火牆的選項。這使我吃了好幾次苦頭,因此我要反覆確認未配置防火牆選項,並確保 udp ICMP 過濾功能已關閉。

如果防火牆阻止或拒絕了 UDP ICMP,Oracle Clusterware 軟件將在運行幾分鐘之後崩潰。如果 Oracle Clusterware 進程出現故障,您的 <計算機名>_evmocr.log 文件中將出現類似以下的內容:

08/29/2005 22:17:19
oac_init:2: Could not connect to server, clsc retcode = 9
08/29/2005 22:17:19
a_init:12!: Client init unsuccessful : [32]
ibctx:1:ERROR: INVALID FORMAT
proprinit:problem reading the bootblock or superbloc 22


如果遇到此類錯誤,解決方法是刪除 UDP ICMP (iptables) 拒絕規則,或者只需關閉防火牆選項。之後,Oracle Clusterware 軟件將開始正常工作而不會崩潰。以下命令應以 root 用戶帳戶的身份執行:

  1. 檢查以確保關閉了防火牆選項。如果防火牆選項已停用(如下面的示例所示),則不必繼續執行下面的步驟。
    [[email protected] ~]# /etc/rc.d/init.d/iptables status
    Firewall is stopped.

     

  2. 如果防火牆選項已啓用,您首先需要手動禁用 UDP ICMP 拒絕:
     [[email protected] ~]# /etc/rc.d/init.d/iptables stop
    Flushing firewall rules: [ OK ]
    Setting chains to policy ACCEPT: filter [ OK ]
    Unloading iptables modules: [ OK ]

     

  3. 然後,針對下一次服務器重新引導關閉 UDP ICMP 拒絕(應該始終被關閉):
     [[email protected] ~]# chkconfig iptables off                           

 


9. 集羣時間同步服務

在集羣中的兩個 Oracle RAC 節點上執行以下集羣時間同步服務配置。

Oracle Clusterware 11g 第 2 版及更高版本要求在部署了 Oracle RAC 的集羣的所有節點上實現時間同步。Oracle 提供了兩種方法來實現時間同步:一種方法是配置了網絡時間協議 (NTP) 的操作系統,另一種方法是新的 Oracle 集羣時間同步服務 (CTSS)。Oracle 集羣時間同步服務 (ctssd) 旨在爲那些 Oracle RAC 數據庫無法訪問 NTP 服務的組織提供服務。

對 NTP 的配置不在本文的討論範圍內,因此我們選擇集羣時間同步服務作爲網絡時間協議。

配置集羣時間同步服務 — (CTSS)

如果您想使用集羣時間同步服務在集羣中提供同步服務,需要卸載網絡時間協議 (NTP) 及其配置。

要停用 NTP 服務,必須停止當前的 ntpd 服務,從初始化序列中禁用該服務,並刪除 ntp.conf 文件。要在 Oracle Enterprise Linux 上完成這些步驟,以 root 用戶身份在兩個 Oracle RAC 節點上運行以下命令:

[[email protected] ~]# /sbin/service ntpd stop
[[email protected] ~]# chkconfig ntpd off
[[email protected] ~]# mv /etc/ntp.conf /etc/ntp.conf.original

還要刪除以下文件:

 [[email protected] ~]# rm /var/run/ntpd.pid                       

此文件保存了 NTP 後臺程序的 pid。

當安裝程序發現 NTP 協議處於非活動狀態時,安裝集羣時間同步服務將以活動模式自動進行安裝並通過所有節點的時間。如果發現配置了 NTP,則以觀察者模式 啓動集羣時間同步服務,Oracle Clusterware 不會在集羣中進行活動的時間同步。

在安裝後,要確認 ctssd 處於活動狀態,請作爲網格安裝所有者 (grid) 輸入以下命令:

[[email protected] ~]$ crsctl check ctss
CRS-4701: The Cluster Time Synchronization Service is in Active mode.
CRS-4702: Offset (in msec): 0

配置網絡時間協議 —(僅當不按如上所述使用 CTSS 時)

請注意,本指南將使用集羣時間同步服務實現集羣中的兩個 Oracle RAC 節點的時間同步。提供此節僅出於說明目的,此節內容可供已設置爲其域中使用 NTP 的組織使用。

如果您正在使用 NTP,並且願意繼續使用它而不是集羣時間同步服務,那麼您需要修改 NTP 初始化文件,在其中設置 -x 標誌,這樣可避免向後調整時間。完成此任務後,重啓網絡時間協議後臺程序。

爲了在 Oracle Enterprise Linux、Red Hat Linux 和 Asianux 系統上完成此任務,編輯/etc/sysconfig/ntpd 文件,添加 -x 標誌,如下例所示:

 # Drop root to id 'ntp:ntp' by default.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=no
# Additional options for ntpdate
NTPDATE_OPTIONS=""

然後,重啓 NTP 服務。

 # /sbin/service ntp restart                       

在 SUSE 系統上,修改配置文件 /etc/sysconfig/ntp,在其中進行以下設置:

 NTPD_OPTIONS="-x -u ntp" 

用以下命令重啓後臺程序:

 # service ntp restart                       

 


10. 安裝 Openfiler

在網絡存儲服務器 (openfiler1) 上執行以下安裝。

在兩個 Oracle RAC 節點上進行網絡配置之後,下一步是將 Openfiler 軟件安裝到網絡存儲服務器 (openfiler1)。本文稍後會將網絡存儲服務器配置爲 iSCSI 存儲設備,以滿足 Oracle Clusterware 和 Oracle RAC 的所有共享存儲需求。

Openfiler 構建於 rPath Linux 之上,它是一個基於瀏覽器的免費網絡存儲管理實用程序,可在一個框架中提供基於文件的網絡連接存儲 (NAS) 和基於塊的存儲區域網 (SAN)。整個軟件體系與許多開源應用程序(如 Apache、Samba、LVM2、ext3、Linux NFS 和 iSCSI Enterprise Target)相連接。Openfiler 將這些隨處可見的技術組合到一個易於管理的小型管理解決方案中,該解決方案的前端是一個基於 Web 的功能強大的管理界面。

Openfiler 支持 CIFS、NFS、HTTP/DAV 和 FTP,但是,我們將僅使用它的 iSCSI 功能爲 Oracle RAC 11g 所需的共享存儲組件實現低成本的 SAN。操作系統和 Openfiler 應用程序將安裝在一個內置 SATA 磁盤上。另一個內置 73GB 15K SCSI 硬盤將被配置爲一個「卷組」,用於滿足所有共享磁盤存儲需求。Openfiler 服務器將配置爲使用該卷組進行基於 iSCSI 的存儲,並且將在我們的 Oracle RAC 11g 配置中使用該卷組存儲 Oracle Clusterware 和 Oracle RAC 數據庫所需的共享文件。

請注意,只要網絡存儲服務器 (Openfiler) 能夠識別並具有足夠的空間,任何類型的硬盤(內置或外置)都可用於數據庫存儲。例如,我已在 500GB 內置 SATA 磁盤上建立了一個額外的分區用於 iSCSI 目標,但決定在此例中使用速度更快的 SCSI 磁盤。

要了解有關 Openfiler 的更多信息,請訪問其網站 http://www.openfiler.com/

下載 Openfiler

根據您的硬件體系結構,使用以下鏈接下載適用於 x86 或 x86_64 的 Openfiler NAS/SAN Appliance 2.3 版(最終版)。本指南使用 x86_64。下載 Openfiler 之後,需要將 ISO 映像刻錄到 CD。

32 位 (x86) 安裝

 



64 位 (x86_64) 安裝

 



如果您將以上 ISO 文件下載到 MS Windows 計算機,可以使用多種方法將這些映像(ISO 文件)刻錄到 CD。您可能很熟悉這個過程,甚至已經擁有合適的軟件,可以將映像刻錄到 CD。如果您不熟悉這個過程,並且沒有將映像刻錄到 CD 所需的軟件,這裏提供了兩個軟件程序包(實際上有許多個):

 



安裝 Openfiler

本節概述了用於安裝 Openfiler 軟件的各個屏幕。在本文中,我選擇了使用所有默認選項安裝 Openfiler。所需的唯一手動更改是爲了配置本地網絡設置。

安裝完成之後,服務器將重新引導以確保啓動並識別所需的所有組件、服務和驅動程序。重新引導之後,Openfiler 服務器將會發現所有外置硬盤驅動器(若已連接)。

有關更詳細的安裝說明,請訪問 http://www.openfiler.com/learn/。但是,我建議使用下面提供的說明對該 Oracle RAC 11g 進行配置。

將 Openfiler 軟件安裝到網絡存儲服務器之前,應該先安裝兩個 NIC 接口(卡),連接並打開所有外置硬盤驅動器(如果您要使用外置硬盤驅動器)。

在下載並將 Openfiler ISO 映像(ISO 文件)刻錄到 CD 之後,將該 CD 插入網絡存儲服務器(在本例中是 openfiler1),打開電源,並按照以下說明來回應安裝屏幕的提示。

引導屏幕 
第一個屏幕是 Openfiler 引導屏幕。在 boot:提示符處按 [Enter] 鍵啓動安裝過程。

介質測試 
當要求測試 CD 介質時,用 Tab 鍵切換到 [Skip] 並按 [Enter] 鍵。如果有錯誤,介質刻錄軟件應該已經向我們發出警告。在幾秒鐘後,安裝程序將會檢測視頻卡、顯示器和鼠標。然後安裝程序進入 GUI 模式。

歡迎使用 Openfiler NSA 
在該歡迎屏幕上,單擊 [Next] 繼續。

鍵盤配置 
下一個屏幕將提示您進行鍵盤設置。爲您的配置作出合適的選擇。

磁盤分區設置 
下一個屏幕將詢問是使用「Automatic Partitioning」還是「Manual Partitioning with Disk Druid」進行磁盤分區。雖然 Openfiler 官方文檔建議使用手動分區,但我選擇使用「自動分區」,因爲我的示例配置較爲簡單。

選擇 [Automatically partition] 並單擊 [Next] 繼續。

自動分區 
如果以前在本機上安裝了 Linux,則下一屏幕將詢問您是要「刪除」還是「保留」舊分區。選擇 [Remove all partitions on this system] 選項。就我的示例配置而言,我選擇了僅使用 500GB SATA 內置硬盤驅動器 [sda] 來進行操作系統和 Openfiler 應用程序的安裝。我取消了對 73GB SCSI 內置硬盤驅動器的選擇,因爲在下一節中該磁盤將專門用於創建單個「卷組」,該卷組將用於 Oracle Clusterware 和 Oracle RAC 的所有基於 iSCSI 的共享磁盤存儲之需。

我還選中了 [Review (and modify if needed) the partitions created] 複選框。單擊 [Next] 繼續。

隨後會顯示一個對話窗口,詢問您是否真的要刪除所有分區。單擊 [Yes] 回覆這一警告。

分區 
隨後安裝程序將允許您查看(如果需要還可以更改)它爲您在上一屏中選擇的硬盤自動選擇的磁盤分區。在絕大多數情況下,安裝程序將爲 /boot 分配 100MB,爲交換分區分配足夠量的空間,而將剩餘空間分配給這個(這些)磁盤的根 (/) 分區。在本示例中,我對安裝程序爲 /dev/sda 建議的分區感到滿意。

安裝程序還將顯示它所發現的任何其他內置硬盤。對於我的示例配置,安裝程序發現了 73GB SCSI 內置硬盤作爲 /dev/sdb。現在,我將「刪除」此驅動器上的任何及所有分區(只有一個分區,/dev/sdb1)。在下一節,我將爲該特定硬盤創建所需分區。

網絡配置 
在啓動 Openfiler 安裝之前,我已確認在網絡存儲服務器上安裝了兩個 NIC 接口(卡)。本屏幕應該已經成功地檢測到每個網絡設備。

首先,確保將每個網絡設備設置爲 [Active on boot]。默認情況下,安裝程序可能選擇不** eth1。

接下來,單擊 [Edit],按照以下方法對 eth0 和 eth1 進行編輯。您可能要爲 eth0 和 eth1 使用不同的 IP 地址,沒有問題。但是,您必須將 eth1(存儲網絡)配置爲與 racnode1 和 racnode2 上的 eth1 位於同一子網中:

eth0: 
- 取消選中 [Configure using DHCP] 選項 
- 選中 [Activate on boot] 
- IP 地址:192.168.1.195 
- 子網掩碼:255.255.255.0

eth1: 
- 取消選中 [Configure using DHCP] 選項 
- 選中 [Activate on boot] 
- IP 地址:192.168.2.195 
- 子網掩碼:255.255.255.0

接着,手動設置您的主機名。我使用的主機名是「openfiler1」。然後提供您的網關和 DNS 服務器,最後關閉該對話框。



時區選擇 
下一個屏幕將允許您配置時區信息。爲您的位置作出合適的選擇。

設置根口令 
選擇一個根口令,然後單擊 [Next] 繼續。

準備安裝 
該屏幕本質上是一個確認屏幕。單擊 [Next] 開始安裝。

恭喜 
大功告成。您已經成功地在網絡存儲服務器上安裝了 Openfiler。安裝程序將從 CD-ROM 驅動器中彈出 CD。取出 CD,單擊 [Reboot] 重新引導系統。

如果在重新引導後一切都已成功,您現在應該看到文本登錄屏幕和用於管理 Openfiler 服務器的 URL。

在 Openfiler 服務器上修改 /etc/hosts 文件 
雖然並非必要,但我通常會將 /etc/hosts 文件的內容從一個 Oracle RAC 節點複製到新的 Openfiler 服務器。在測試集羣網絡時,這可以實現方便的名稱解析。

 


11. 使用 Openfiler 配置 iSCSI 卷

在網絡存儲服務器 (openfiler1) 上執行以下配置任務。

可以使用 Openfiler Storage Control Center(一個基於瀏覽器的工具,通過端口 446 上的 https 連接實現)執行 Openfiler 管理。例如:

                           https://openfiler1.idevelopment.info:446/                       

從 Openfiler Storage Control Center 的主頁,以管理員身份登錄。Openfiler 的默認管理員登錄憑證爲:

 

  • Username: openfiler
  • Password: password


管理員看到的第一個頁面是 [Status] / [System Information] 屏幕。

要將 Openfiler 用作 iSCSI 存儲服務器,我們需要執行六個主要任務:設置 iSCSI 服務、配置網絡訪問、指定物理存儲器並對其分區、創建新的卷組、創建所有邏輯卷,最後,爲每個邏輯卷創建新的 iSCSI 目標。

服務

要控制服務,我們使用 Openfiler Storage Control Center 並轉到 [Services] / [Manage Services]:


 
圖 6:啓用 iSCSI Openfiler 服務

要啓用 iSCSI 服務,單擊「iSCSI target server」服務名稱後面的「Enable」鏈接。之後,「iSCSI target server」狀態應變爲「Enabled」。

ietd 程序將實現 iSCSI Enterprise Target 軟件的用戶級部分,以便在 Linux 上構建 iSCSI 存儲系統。啓用 iSCSI target 之後,我們應該能夠通過 SSH 登錄到 Openfiler 服務器,並且可看到 iscsi-target 服務正在運行:

[[email protected] ~]# service iscsi-target status
ietd (pid 14243) is running...

網絡訪問配置

下一步是配置 Openfiler 中的網絡訪問,指定需要通過存儲(專用)網絡訪問 iSCSI 卷的兩個 Oracle RAC 節點(racnode1 和 racnode2)。注意,本節稍後將會創建 iSCSI 卷。另請注意,本步驟並不實際授予兩個 Oracle RAC 節點訪問 iSCSI 邏輯卷所需的相應權限。授予權限的操作將在本節稍後通過對每個新邏輯卷更新 ACL 來進行。

如同上一節,我們使用 Openfiler Storage Control Center 並轉到 [System] / [Network Setup] 來完成網絡訪問配置。通過頁面底部的「Network Access Configuration」部分,管理員可以設置網絡和/或主機以允許其訪問 Openfiler appliance 導出的資源。就本文而言,我們希望單獨添加兩個 Oracle RAC 節點,而不是允許整個 192.168.2.0 網絡訪問 Openfiler 資源。

輸入每個 Oracle RAC 節點時,請注意「Name」域只是一個邏輯名稱,僅供參考。根據輸入節點的慣例,我僅使用了爲該 IP 地址定義的節點名稱。接下來,在「Network/Host」域中輸入實際節點時,始終使用其 IP 地址,即使其主機名已經在 /etc/hosts 文件或 DNS 中定義。最後,在我們的 C 類網絡中輸入實際主機時,使用子網掩碼 255.255.255.255

記住,您要爲集羣中的每個 RAC 節點輸入專用 網絡 (eth1) 的 IP 地址,這一點很重要。

下圖顯示了添加兩個 Oracle RAC 節點後的結果:


 
圖 7:爲 Oracle RAC 節點配置 Openfiler 網絡訪問

物理存儲

在本節中,我們將創建三個 iSCSI 卷,以供集羣中的兩個 Oracle RAC 節點用作共享存儲。這將在連接到 Openfiler 服務器的內置 73GB 15K SCSI 硬盤驅動器上執行多個步驟。

存儲設備(如內置 IDE/SATA/SCSI/SAS 磁盤、存儲陣列、外置 USB 驅動器、外置 FireWire 驅動器或者任何其他存儲設備)可以連接到 Openfiler 服務器,並供客戶端使用。如果在操作系統級發現了這些設備,就可以使用 Openfiler Storage Control Center 設置和管理所有這些存儲設備。

在本例中,我們有一個 73GB 的內置 SCSI 硬盤驅動器用於滿足共享存儲之需。在 Openfiler 服務器上,該驅動器顯示爲 /dev/sdb (MAXTOR ATLAS15K2_73SCA)。要看到該驅動器並啓動 iSCSI 卷的創建過程,請從 Openfiler Storage Control Center 轉到 [Volumes] / [Block Devices]:


 
圖 8:Openfiler 物理存儲 — 塊設備管理

對物理磁盤進行分區

我們要執行的第一步是在 /dev/sdb 內置硬盤上創建一個主分區。單擊 /dev/sdb 鏈接,我們會看到「Edit」或「Create」選項,分別用於編輯和創建分區。由於我們將創建一個跨整個磁盤的主分區,因此可以將大多數選項保留爲默認設置,唯一的修改是將「Partition Type」由「Extended partition」更改爲「Physical volume」。下面是我爲了在 /dev/sdb 上創建主分區而指定的值:

模式:Primary 
分區類型:Physical volume 
開始柱面:
結束柱面:8924

現在,大小將顯示 68.36 GB。要接受該設置,單擊「Create」按鈕。這將在我們的內置硬盤上生成一個新的分區 (/dev/sdb1):


 
圖 9:對物理捲進行分區

卷組管理

下一步是創建卷組。我們將創建一個名爲 racdbvg 的卷組,其中包含新創建的主分區。

從 Openfiler Storage Control Center 中轉到 [Volumes] / [Volume Groups]。我們將看到所有現有的卷組,或者什麼也看不到(我們的情況就是這樣)。在 Volume Group Management 屏幕中,輸入新卷組的名稱 (racdbvg),單擊 /dev/sdb1 前面的複選框以選中該分區,最後單擊「Add volume group」按鈕。之後,我們會看到一個列表,其中顯示出我們新創建的這個名爲「racdbvg」的卷組:


 
圖 10:創建了新卷組

邏輯卷

現在,我們可以在新創建的卷組 (racdbvg) 中創建三個邏輯卷。

從 Openfiler Storage Control Center 中轉到 [Volumes] / [Add Volume]。我們將看到新創建的卷組 (racdbvg) 及其塊存儲統計信息。該屏幕底部還提供了一個選項,用於在選定的卷組中創建一個新卷 —(在「racdbvg」中創建一個卷)。使用該屏幕創建以下三個邏輯 (iSCSI) 卷。在創建每個邏輯卷之後,應用程序將轉至「Manage Volumes」屏幕。然後,您需要單擊後退到「Add Volume」選項卡以創建下一個邏輯卷,直至三個 iSCSI 卷全部創建完畢:

 

iSCSI / 邏輯卷
卷名 卷描述 所需空間 (MB) 文件系統類型
racdb-crs1 racdb - ASM CRS Volume 1 2,208 iSCSI
racdb-data1 racdb - ASM Data Volume 1 33,888 iSCSI
racdb-fra1 racdb - ASM FRA Volume 1 33,888 iSCSI

實際上,我們已經創建了三個 iSCSI 磁盤,現在可以將它們呈現給網絡上的 iSCSI 客戶端(racnode1 和 racnode2)。「Manage Volumes」屏幕應如下所示:


 
圖 11:新的 iSCSI 邏輯卷

iSCSI 目標

現在,我們有了三個 iSCSI 邏輯卷。但是,爲了使 iSCSI 客戶端可以訪問這些邏輯卷,首先需要爲這三個卷中的每個卷創建一個 iSCSI 目標。每個 iSCSI 邏輯卷將映射 到一個特定的 iSCSI 目標,並將爲兩個 Oracle RAC 節點授予對該目標的相應網絡訪問權限。對於本文,在 iSCSI 邏輯卷和 iSCSI 目標之間將會有一一映射的關係。

創建和配置 iSCSI 目標的過程包括三步:創建一個唯一的目標 IQN(實質上是新的 iSCSI 目標的通用名稱),將上一節中創建的一個 iSCSI 邏輯卷映射到新創建的 iSCSI 目標,最後,授予兩個 Oracle RAC 節點訪問該新 iSCSI 目標的權限。請注意,需要對上一節中創建的三個 iSCSI 邏輯卷中的每個卷都執行一次此過程。

對於本文,下表列出了新的 iSCSI 目標名稱(目標 IQN)及其將映射到的 iSCSI 邏輯卷:

iSCSI 目標/邏輯卷映射
目標 IQN iSCSI 卷名 卷描述
iqn.2006-01.com.openfiler:racdb.crs1 racdb-crs1 racdb - ASM CRS Volume 1
iqn.2006-01.com.openfiler:racdb.data1 racdb-data1 racdb - ASM Data Volume 1
iqn.2006-01.com.openfiler:racdb.fra1 racdb-fra1 racdb - ASM FRA Volume 1

現在我們來創建三個新的 iSCSI 目標 — 爲每個 iSCSI 邏輯卷創建一個。下面舉例說明通過創建 Oracle Clusterware/racdb-crs1 目標 ( iqn.2006-01.com.openfiler:racdb.crs1) 來創建新的 iSCSI 目標時所需執行的三個步驟。這個三步過程需要對上表中列出的三個新 iSCSI 目標中的每一個都重複執行一遍。

創建新目標 IQN

從 Openfiler Storage Control Center 中轉到 [Volumes] / [iSCSI Targets]。確保選擇了灰色子選項卡「Target Configuration」。您可在此選項卡頁中創建一個新的 iSCSI 目標。系統會自動生成一個默認值,作爲新 iSCSI 目標的名稱(常稱爲「目標 IQN」)。目標 IQN 的一個示例是「iqn.2006-01.com.openfiler:tsn.ae4683b67fd3」:


 
圖 12:創建新的 iSCSI 目標:默認目標 IQN

我喜歡用更具含義的字串來替換這個默認目標 IQN 最後一段。對於第一個 iSCSI 目標(Oracle Clusterware/racdb-crs1),我將這樣來修改默認的目標 IQN:將字符串「tsn.ae4683b67fd3」替換爲「racdb.crs1」,如下面的圖 13 所示:


 
圖 13:創建新的 iSCSI 目標:替換默認目標 IQN

對新的目標 IQN 滿意之後,單擊「Add」按鈕。這將會創建一個新的 iSCSI 目標,然後會出現一個頁面,您可以在該頁面中修改新 iSCSI 目標的一系列設置。對於本文,無需更改新 iSCSI 目標的任何設置。

LUN 映射

創建新的 iSCSI 目標之後,下一步是將相應的 iSCSI 邏輯卷映射到該目標。在「Target Configuration」子選項卡下,驗證在「Select iSCSI Target」部分中選擇了正確的 iSCSI 目標。如果不是這樣,使用下拉菜單選擇正確的 iSCSI 目標,然後單擊「Change」按鈕。

接下來,單擊名爲「LUN Mapping」的灰色子選項卡(在「Target Configuration」子選項卡旁)。找到相應的 iSCSI 邏輯卷(本例中爲 /dev/racdbvg/racdb-crs1),然後單擊「Map」按鈕。無需更改此頁面中的任何設置。對卷 /dev/racdbvg/racdb-crs1 單擊「Map」按鈕後,您的屏幕應如圖 14 所示:


 
圖 14:創建新的 iSCSI 目標:映射 LUN

網絡 ACL

需要先授予 iSCSI 客戶端相應的權限,它才能訪問新創建的 iSCSI 目標。在前面,我們已通過 Openfiler 對兩個主機(Oracle RAC 節點)進行網絡訪問配置。這兩個節點需要通過存儲(專用)網絡訪問新的 iSCSI 目標。現在,我們需要授予這兩個 Oracle RAC 節點訪問新 iSCSI 目標的權限。

單擊名爲「Network ACL」的灰色子選項卡(在「LUN Mapping」子選項卡旁)。對當前的 iSCSI 目標,將兩個主機的「Access」值由「Deny」更改爲「Allow」,然後單擊「Update」按鈕。


 
圖 15:創建新的 iSCSI 目標:更新網絡 ACL

返回到創建新的目標 IQN 一節,對其餘兩個 ISCSI 邏輯卷執行這三個任務,同時替換「iSCSI 目標/邏輯卷映射」表中找到的值。

 


12. 在 Oracle RAC 節點上配置 iSCSI 卷

在集羣中的兩個 Oracle RAC 節點上配置 iSCSI 啓動器。而創建分區只應在 RAC 集羣的一個節點上執行。

iSCSI 客戶端可以是提供 iSCSI 支持(驅動程序)的任何系統(Linux、Unix、MS Windows、Apple Mac 等)。在我們的示例中,客戶端是兩個 Linux 服務器(racnode1 和 racnode2),它們運行的是 Oracle Enterprise Linux 5.4。

在本節中,我們將在兩個 Oracle RAC 節點上配置 iSCSI 軟件啓動器。Oracle Enterprise Linux 5.4 包括Open-iSCSI iSCSI 軟件啓動器,該軟件啓動器位於 iscsi-initiator-utils RPM 中。這是對早期版本 Oracle Enterprise Linux (4.x) 的一個更改,這些早期版本中包含作爲 Linux-iSCSI 項目的一部分而開發的 Linux iscsi-sfnet 軟件驅動程序。所有 iSCSI 管理任務(如發現和登錄)將使用 Open-iSCSI 中包含的命令行接口 iscsiadm

iSCSI 軟件啓動器將配置爲自動登錄網絡存儲服務器 (openfiler1),並發現 上一節中創建的 iSCSI 卷。之後,我們將逐步使用 udev 爲發現的每個 iSCSI 目標名稱創建永久性本地 SCSI 設備名稱(即/dev/iscsi/crs1)。擁有一致的本地 SCSI 設備名稱及其映射到的 iSCSI 目標,有助於在配置 ASM 時能夠區分三個卷。但是,在此之前,我們首先必須安裝 iSCSI 啓動器軟件。

本指南使用 ASMLib 2.0,它是 Oracle Database 的自動存儲管理 (ASM) 特性的一個支持庫。ASMLib 將用於對本指南中所使用的所有 iSCSI 捲進行標記。默認情況下,ASMLib 已爲 ASM 使用的存儲設備提供了永久性路徑和權限。有了該特性後,無需用存儲設備路徑和權限更新 udev 或 devlabel 文件。就本文來說,實際上我仍然選擇使用 udev 爲發現的每個 SCSI 目標名稱創建永久性本地 SCSI 設備名稱。這提供了一種自我文檔編制的方法,有助於快速確定每個卷的名稱和位置。

安裝 iSCSI(啓動器)服務

就 Oracle Enterprise Linux 5.4 來說,默認情況下不會安裝 Open-iSCSI iSCSI 軟件啓動器。該軟件包含在 1 號 CD 上的 iscsi-initiator-utils 程序包中。要確定該程序包是否已安裝(大多數情況下沒有安裝),在兩個 Oracle RAC 節點上執行以下命令:

[[email protected] ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n"| grep iscsi-initiator-utils                       

如果 iscsi-initiator-utils 程序包未安裝,將 1 號 CD 加載到每個 Oracle RAC 節點中並執行以下命令:

[[email protected] ~]# mount -r /dev/cdrom /media/cdrom
[[email protected] ~]# cd /media/cdrom/Server
[[email protected] ~]# rpm -Uvh iscsi-initiator-utils-*
[[email protected] ~]# cd /
[[email protected] ~]# eject

確認 iscsi-initiator-utils 程序包現在已安裝:

 [[email protected] ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n"| grep iscsi-initiator-utils
iscsi-initiator-utils-6.2.0.871-0.10.el5 (x86_64)


配置 iSCSI(啓動器)服務

驗證 iscsi-initiator-utils 程序包已經安裝到兩個 Oracle RAC 節點之後,啓動 iscsid 服務,並使其在系統引導時自動啓動。我們還將配置 iscsi 服務在系統啓動時自動啓動,自動登錄到所需的 iSCSI 目標。

[[email protected] ~]# service iscsid start
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
[ OK ]
[[email protected] ~]# chkconfig iscsid on
[[email protected] ~]# chkconfig iscsi on

現在 iSCSI 服務已經啓動,下面使用 iscsiadm 命令行接口發現網絡存儲服務器上的所有可用目標。這應該在兩個 Oracle RAC 節點上執行,以檢驗配置是否正常工作:

[[email protected] ~]# iscsiadm -m discovery -t sendtargets -p openfiler1-priv
192.168.2.195:3260,1 iqn.2006-01.com.openfiler:racdb.crs1
192.168.2.195:3260,1 iqn.2006-01.com.openfiler:racdb.fra1
192.168.2.195:3260,1 iqn.2006-01.com.openfiler:racdb.data1

手動登錄到 iSCSI 目標

此時,iSCSI 啓動器服務已經啓動,每個 Oracle RAC 節點都能夠從網絡存儲服務器中發現可用目標。下一步是手動登錄每個可用目標,這可以使用 iscsiadm 命令行接口完成。這需要在兩個 Oracle RAC 節點上運行。注意,我必須指定網絡存儲服務器的 IP 地址而非其主機名 (openfiler1-priv) — 我認爲必須這麼做,因爲上述發現使用 IP 地址顯示目標。

[[email protected] ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs1 
-p 192.168.2.195 -l

[[email protected] ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1
-p 192.168.2.195 -l

[[email protected] ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1
-p 192.168.2.195 -l

配置自動登錄

下一步是確保在計算機引導(或 iSCSI 啓動器服務啓動/重啓)時,客戶端將自動登錄到上面列出的每個目標。如同上面描述的手動登錄過程,在兩個 Oracle RAC 節點上執行以下命令:

[[email protected] ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs1 
-p 192.168.2.195 --op update -n node.startup -v automatic

[[email protected] ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1
-p 192.168.2.195 --op update -n node.startup -v automatic

[[email protected] ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1
-p 192.168.2.195 --op update -n node.startup -v automatic

創建永久性本地 SCSI 設備名稱

在本節中,我們將逐步爲每個 iSCSI 目標名稱創建永久性本地 SCSI 設備名稱。我們將使用 udev 來完成該任務。擁有一致的本地 SCSI 設備名稱及其映射到的 iSCSI 目標,有助於在配置 ASM 時能夠區分三個卷。儘管並未嚴格要求這麼做(因爲我們將對所有卷使用 ASMLib 2.0),這提供了一種自我文檔編制的方法,有助於快速確定每個 iSCSI 卷的名稱和位置。

如果任一 Oracle RAC 節點引導並且 iSCSI 啓動器服務啓動,它會以一種隨機的方式自動登錄到配置的每個目標,並將這些目標映射到下一個可用的本地 SCSI 設備名稱。例如,目標 iqn.2006-01.com.openfiler:racdb.crs1 可能會映射到 /dev/sdb。實際上,我可以通過查看/dev/disk/by-path 目錄來確定所有目標的當前映射:

[[email protected] ~]# (cd /dev/disk/by-path; ls -l *openfiler* | awk '{FS=" "; 
print $9 " " $10 " " $11}')

ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs1-lun-0 -> ../../sdb
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0 -> ../../sdd
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra1-lun-0 -> ../../sdc

使用上述 ls 命令的輸出結果,我們可以建立以下當前映射:

iSCSI 目標名稱到本地 SCSI 設備名稱的當前映射
iSCSI 目標名稱 SCSI 設備名稱
iqn.2006-01.com.openfiler:racdb.crs1 /dev/sdb
iqn.2006-01.com.openfiler:racdb.data1 /dev/sdd
iqn.2006-01.com.openfiler:racdb.fra1 /dev/sdc

但是,每次重新引導 Oracle RAC 節點時,該映射都可能有所不同。例如,重新引導之後,可能會決定將 iSCSI 目標 iqn.2006-01.com.openfiler:racdb.crs1 映射到本地 SCSI 設備 /dev/sdc。由於您無法預測重新引導後的 iSCSI 目標映射,依賴於使用本地 SCSI 設備名稱是不現實的。

我們需要的是可引用的一致的設備名稱(即 /dev/iscsi/crs1),該設備名稱在重新引導後將始終指向相應的 iSCSI 目標。這就是引入名爲 udev 的動態設備管理 工具的原因。 udev 提供了一個動態設備目錄,使用一組可配置的規則通過符號鏈接指向實際設備。當 udev 收到設備事件(例如,客戶端登錄到 iSCSI 目標)時,就會根據 sysfs 中提供的可用設備屬性匹配其配置好的規則以便識別設備。匹配規則可以提供其他設備信息或指定設備節點名和多個符號鏈接名,並指示 udev 運行其他程序(例如,一個 SHELL 腳本)作爲設備事件處理過程的一部分。

第一步是創建一個新的規則文件。該文件將命名爲 /etc/udev/rules.d/55-openiscsi.rules,並且只包含一行用於接收我們感興趣事件的名稱=值對。它還將定義一個調出 SHELL 腳本 (/etc/udev/scripts/iscsidev.sh),用於處理事件。

在兩個 Oracle RAC 節點上創建以下規則文件 /etc/udev/rules.d/55-openiscsi.rules

 ..............................................
# /etc/udev/rules.d/55-openiscsi.rules
KERNEL=="sd*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev.sh %b",
SYMLINK+="iscsi/%c/part%n"
..............................................

現在,我們需要創建在接收該事件時將調用的 UNIX SHELL 腳本。我們首先在兩個 Oracle RAC 節點上創建一個單獨的目錄,用於存儲 udev 腳本:

[[email protected] ~]# mkdir -p /etc/udev/scripts                       

接下來,在兩個 Oracle RAC 節點上創建 UNIX shell 腳本 /etc/udev/scripts/iscsidev.sh

 ..............................................
#!/bin/sh
# FILE: /etc/udev/scripts/iscsidev.sh

BUS=${1}
HOST=${BUS%%:*}
[ -e /sys/class/iscsi_host ] || exit 1
file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/
targetname"
target_name=$(cat ${file})
# This is not an open-scsi drive
if [ -z "${target_name}" ]; then
exit 1
fi

# Check if QNAP drive
check_qnap_target_name=${target_name%%:*}
if [ $check_qnap_target_name = "iqn.2004-04.com.qnap" ]; then
target_name=`echo "${target_name%.*}"`
fi

echo "${target_name##*.}"
..............................................

創建 UNIX SHELL 腳本後,將其更改爲可執行文件:

 [[email protected] ~]# chmod 755 /etc/udev/scripts/iscsidev.sh                       

既然已經配置了 udev,下面將在兩個 Oracle RAC 節點上重新啓動 iSCSI 服務:

[[email protected] ~]# service iscsi stop
Logging out of session [sid: 6, target: iqn.2006-01.com.openfiler:racdb.crs1, portal: 192.168.2.195,3260]
Logging out of session [sid: 7, target: iqn.2006-01.com.openfiler:racdb.fra1, portal: 192.168.2.195,3260]
Logging out of session [sid: 8, target: iqn.2006-01.com.openfiler:racdb.data1, portal: 192.168.2.195,3260]
Logout of [sid: 6, target: iqn.2006-01.com.openfiler:racdb.crs1, portal: 192.168.2.195,3260]: successful
Logout of [sid: 7, target: iqn.2006-01.com.openfiler:racdb.fra1, portal: 192.168.2.195,3260]: successful
Logout of [sid: 8, target: iqn.2006-01.com.openfiler:racdb.data1, portal: 192.168.2.195,3260]: successful
Stopping iSCSI daemon: [ OK ]

[[email protected] ~]# service iscsi start
iscsid dead but pid file exists
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
[ OK ]
Setting up iSCSI targets: Logging in to [iface: default, target: iqn.2006-01.com.openfiler:racdb.crs1, portal: 192.168.2.195,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:racdb.fra1, portal: 192.168.2.195,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:racdb.data1, portal: 192.168.2.195,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:racdb.crs1, portal: 192.168.2.195,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:racdb.fra1, portal: 192.168.2.195,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:racdb.data1, portal: 192.168.2.195,3260]: successful [ OK ]

下面,我們來看一下我們的辛勤工作是否得到了回報:

[[email protected] ~]# ls -l /dev/iscsi/*
/dev/iscsi/crs1:
total 0
lrwxrwxrwx 1 root root 9 Nov 3 18:13 part -> ../../sdc

/dev/iscsi/data1:
total 0
lrwxrwxrwx 1 root root 9 Nov 3 18:13 part -> ../../sde

/dev/iscsi/fra1:
total 0
lrwxrwxrwx 1 root root 9 Nov 3 18:13 part -> ../../sdd

上面的清單顯示, udev 所做的工作正是我們所期待的!現在,我們擁有了一組一致的本地設備名稱,可用於引用 iSCSI 目標。例如,我們可以安全地認爲設備名稱 /dev/iscsi/crs1/part 將始終引用 iSCSI 目標 iqn.2006-01.com.openfiler:racdb.crs1。現在,我們擁有了一致的 iSCSI 目標名稱到本地設備名稱的映射,如下表所示:

iSCSI 目標名稱到本地設備名稱的映射
iSCSI 目標名稱 本地設備名稱
iqn.2006-01.com.openfiler:racdb.crs1 /dev/iscsi/crs1/part
iqn.2006-01.com.openfiler:racdb.data1 /dev/iscsi/data1/part
iqn.2006-01.com.openfiler:racdb.fra1 /dev/iscsi/fra1/part

 

在 iSCSI 捲上創建分區

現在,我們需要在每個 iSCSI 捲上創建一個佔用整個卷大小的主分區。正如本文前面提到的,我將使用自動存儲管理 (ASM) 存儲 Oracle 集羣件所需的共享文件、物理數據庫文件(數據/索引文件、聯機重做日誌文件和控制文件),以及集羣數據庫的快速恢復區 (FRA)。

Oracle Clusterware 共享文件(OCR 和表決磁盤)將存儲在一個名爲 +CRS 的使用外部冗餘 配置的 ASM 磁盤組中。集羣數據庫的物理數據庫文件將存儲在一個名爲 +RACDB_DATA 的也使用外部冗餘配置的 ASM 磁盤組中。最後,快速恢復區(RMAN 備份和存檔重做日誌文件)將存儲於一個名爲 +FRA 的使用外部冗餘配置的第三個 ASM 磁盤組中。

下表列出了將要創建的三個 ASM 磁盤組及其將包含的 iSCSI 卷:

Oracle 共享驅動器配置
文件類型 ASM 磁盤組名稱 iSCSI 目標(短)名稱 ASM 冗餘 大小 ASMLib 卷名
OCR 和表決磁盤 +CRS crs1 External 2GB ORCL:CRSVOL1
Oracle 數據庫文件 +RACDB_DATA data1 External 32GB ORCL:DATAVOL1
Oracle 快速恢復區 +FRA fra1 External 32GB ORCL:FRAVOL1

如上表所示,我們需要在每個 iSCSI 卷(共三個)上創建一個 Linux 主分區。 fdisk 命令在 Linux 中用於創建(和刪除)分區。對於每個 iSCSI 卷(共三個),您都可以在創建主分區時使用默認值,因爲默認操作是使用整個磁盤。您可以放心地忽略任何指示設備未包含有效 DOS 分區(或 Sun、SGI 或 OSF 磁盤標籤)的警告。

在本例中,我將在 racnode1 上運行 fdisk 命令,使用上一節中通過 udev 創建的本地設備名稱在每個 iSCSI 目標上創建一個主分區:

 

  • /dev/iscsi/crs1/part
  • /dev/iscsi/data1/part
  • /dev/iscsi/fra1/part


要在每個 iSCSI 捲上創建單個分區,只能從 Oracle RAC 集羣中的一個節點上進行!(如racnode1

 # ---------------------------------------

[[email protected] ~]# fdisk /dev/iscsi/crs1/part
Command (m for help): n
Command action
e extended
p primary partition (1-4)

p

Partition number (1-4): 1
First cylinder (1-1012, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-1012, default 1012): 1012

Command (m for help): p

Disk /dev/iscsi/crs1/part: 2315 MB, 2315255808 bytes
72 heads, 62 sectors/track, 1012 cylinders
Units = cylinders of 4464 * 512 = 2285568 bytes

Device Boot Start End Blocks Id System
/dev/iscsi/crs1/part1 1 1012 2258753 83 Linux

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

Calling ioctl() to re-read partition table.
Syncing disks.

# ---------------------------------------

[[email protected] ~]# fdisk /dev/iscsi/data1/part
Command (m for help): n
Command action
e extended
p primary partition (1-4)

p

Partition number (1-4): 1
First cylinder (1-33888, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-33888, default 33888): 33888

Command (m for help): p

Disk /dev/iscsi/data1/part: 35.5 GB, 35534143488 bytes
64 heads, 32 sectors/track, 33888 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/iscsi/data1/part1 1 33888 34701296 83 Linux
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

# ---------------------------------------

[[email protected] ~]# fdisk /dev/iscsi/fra1/part
Command (m for help): n
Command action
e extended
p primary partition (1-4)

p

Partition number (1-4): 1
First cylinder (1-33888, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-33888, default 33888): 33888

Command (m for help): p

Disk /dev/iscsi/fra1/part: 35.5 GB, 35534143488 bytes
64 heads, 32 sectors/track, 33888 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/iscsi/fra1/part1 1 33888 34701296 83 Linux

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

Calling ioctl() to re-read partition table.
Syncing disks.

驗證新分區

在 racnode1 上創建所有需要的分區之後,現在應使用以下命令以「root」用戶帳戶從 Oracle RAC 集羣的所有其餘節點 (racnode2) 將分區更改通知給內核。注意,Openfiler 發現的 iSCSI 目標名稱和本地 SCSI 設備名稱的映射在兩個 Oracle RAC 節點上將有所不同。不用擔心,這不會導致任何問題,因爲我們將使用 udev 在上一節中創建的本地設備名稱而不是其他的本地 SCSI 設備名稱。

 

在 racnode2 上運行以下命令:

[[email protected] ~]# partprobe

[[email protected] ~]# fdisk -l

Disk /dev/sda: 160.0 GB, 160000000000 bytes
255 heads, 63 sectors/track, 19452 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 19452 156143767+ 8e Linux LVM

Disk /dev/sdb: 35.5 GB, 35534143488 bytes
64 heads, 32 sectors/track, 33888 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 33888 34701296 83 Linux

Disk /dev/sdc: 35.5 GB, 35534143488 bytes
64 heads, 32 sectors/track, 33888 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/sdc1 1 33888 34701296 83 Linux

Disk /dev/sdd: 2315 MB, 2315255808 bytes
72 heads, 62 sectors/track, 1012 cylinders
Units = cylinders of 4464 * 512 = 2285568 bytes

Device Boot Start End Blocks Id System
/dev/sdd1 1 1012 2258753 83 Linux

最後,您應該在兩個 Oracle RAC 節點上運行以下命令,以驗證 udev 爲每個新分區創建了新的符號鏈接:

[[email protected] ~]# (cd /dev/disk/by-path; ls -l *openfiler* | awk '{FS=" "; print $9 " " $10 " " $11}')
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs1-lun-0 -> ../../sdd
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs1-lun-0-part1 -> ../../sdd1
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0 -> ../../sdc
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0-part1 -> ../../sdc1
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra1-lun-0 -> ../../sdb
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra1-lun-0-part1 -> ../../sdb1

上面的清單顯示, udev 確實爲每個新分區創建了新的設備名稱。在本指南稍後,當我們爲 ASMlib 配置卷時,將使用這些新的設備名稱。

 

  • /dev/iscsi/crs1/part1
  • /dev/iscsi/data1/part1
  • /dev/iscsi/fra1/part1
  • 13. 創建任務角色劃分操作系統權限組、用戶和目錄

    在集羣的兩個 Oracle RAC 節點上針對 grid 和 oracle 用戶執行以下用戶、組和目錄配置並設置 shell 限制的任務。

    本節介紹如何使用 任務角色劃分 配置來創建操作系統用戶和組以安裝所有 Oracle 軟件。本節所使用的命令應在兩個 Oracle RAC 節點上以 root 用戶身份執行,從而創建組、用戶和目錄。請注意,組 ID 和用戶 ID 在集羣的兩個 Oracle RAC 節點上應保持一致。檢查以確保每個集羣成員節點上都存在您要使用的組 ID 和用戶 ID,確認每個網格基礎架構的集羣安裝所有者的主組擁有相同的名稱和組 ID,具體在本指南中爲 oinstall (GID 1000)。

    Oracle 的任務角色劃分權限配置是這樣一種配置,將對 Oracle Grid Infrastructure 安裝的管理訪問權限賦予給一些操作系統組和用戶,從而將這類權限從涉及其他 Oracle 安裝(例如,Oracle Database 軟件)的其他管理用戶和組中劃分出來。管理訪問權限由各個操作系統組授予,而安裝權限由每個 Oracle 安裝的各個安裝所有者授予。

    我們會爲每個 Oracle 軟件產品創建一個操作系統用戶作爲該產品的所有者 —「grid」作爲 Oracle Grid Infrastructure 的所有者,「oracle」作爲 Oracle RAC 軟件的所有者。在本文中,grid 的用戶是我們創建作爲 Oracle Grid Infrastructure 二進制文件所有者的用戶。該用戶將是 Oracle Clusterware 和 Oracle 自動存儲管理二進制文件的所有者。而 oracle 的用戶是我們創建作爲 Oracle 數據庫二進制文件 (Oracle RAC) 所有者的用戶。這兩個 Oracle 軟件所有者必須以 Oracle Inventory 組 (oinstall) 作爲其主組,這樣每個 Oracle 軟件安裝所有者都有權寫入中央清單 (oraInventory),以便正確設置 OCR 和 Oracle Clusterware 資源的權限。Oracle RAC 軟件所有者還必須以 OSDBA 組和可選的 OSOPER 組作爲其輔助組。

    此類配置是可選的,但是對於需要通過劃分各個管理用戶的負責區域來限制用戶對 Oracle 軟件的訪問的組織來說,Oracle 強烈建議採用這樣的配置。例如,一個小型組織可能只分配操作系統用戶權限,這樣就可以只使用一個管理用戶和一個組,該用戶和組通過操作系統認證之後會具有存儲層和數據庫層上的所有系統權限。就此類配置來說,您可以指定 oracle 用戶爲所有 Oracle 軟件(Grid Infrastructure 和 Oracle Database 軟件)的唯一安裝所有者,並指定 oinstall 爲唯一組,授予其成員 Oracle Clusterware、自動存儲管理及服務器上所有 Oracle 數據庫的所有系統權限,及其作爲安裝所有者的所有權限。然而,其他組織有一些專門的系統角色來負責 Oracle 軟件的安裝,如系統管理員、網絡管理員或存儲管理員。這些不同的管理員用戶可對系統進行配置以便爲集羣安裝的 Oracle Grid Infrastructure 作準備,並完成所有需要操作系統 root 權限的配置任務。在成功完成 Grid Infrastructure 的安裝與配置後,系統管理員應只需提供配置信息並授予數據庫管理員在 Oracle RAC 安裝期間以 root 用戶身份運行腳本的權限。

    我們將創建以下 O/S 組:

     

    描述 OS 組名 分配給該組的 OS 用戶 Oracle 權限 Oracle 組名
    Oracle 清單和軟件所有者 oinstall grid、oracle    
    Oracle 自動存儲管理組 asmadmin grid SYSASM OSASM
    ASM 數據庫管理員組 asmdba grid、oracle ASM 的 SYSDBA OSDBA for ASM
    ASM 操作員組 asmoper grid ASM 的 SYSOPER OSOPER for ASM
    數據庫管理員 dba oracle SYSDBA OSDBA
    數據庫操作員 oper oracle SYSOPER OSOPER


     

    • Oracle 清單組(一般爲 oinstall

      OINSTALL 組的成員被視爲 Oracle 軟件的「所有者」,擁有對 Oracle 中央清單 (oraInventory) 的寫入權限。在一個 Linux 系統上首次安裝 Oracle 軟件時,OUI 會創建 /etc/oraInst.loc 文件。該文件指定 Oracle 清單組的名稱(默認爲 oinstall)以及 Oracle 中央清單目錄的路徑。

      如果不存在 oraInventory 組,默認情況下,安裝程序會將集羣的網格基礎架構的安裝所有者的主組列爲 oraInventory 組。確保所有計劃的 Oracle 軟件安裝所有者都使用此組作爲主組。就本指南來說,必須將 grid 和 oracle 安裝所有者配置爲以 oinstall 作爲其主組。

    • Oracle 自動存儲管理組(一般爲 asmadmin

      此組爲必需組。如果想讓 Oracle ASM 管理員和 Oracle Database 管理員分屬不同的管理權限組,可單獨創建此組。在 Oracle 文檔中,OSASM 組是其成員被授予權限的操作系統組,在代碼示例中,專門創建了一個組來授予此權限,此組名爲 asmadmin

      OSASM 組的成員可通過操作系統身份驗證使用 SQL 以 SYSASM 身份連接到一個 Oracle ASM 實例。SYSASM 權限是在 Oracle ASM 11g 第 1 版 (11.1) 中引入的,現在,在 Oracle ASM 11g 第 2 版 (11.2) 中,該權限已從 SYSDBA 權限中完全分離出來。SYSASM 權限不再提供對 RDBMS 實例的訪問權限。用 SYSASM 權限代替 SYSDBA 權限來提供存儲層的系統權限,這使得 ASM 管理和數據庫管理之間有了清晰的責任劃分,有助於防止使用相同存儲的不同數據庫無意間覆蓋其他數據庫的文件。SYSASM 權限允許執行掛載和卸載磁盤組及其他存儲管理任務。

    • ASM 數據庫管理員組(OSDBA for ASM,一般爲 asmdba

      ASM 數據庫管理員組(OSDBA for ASM)的成員是 SYSASM 權限的一個子集,擁有對 Oracle ASM 管理的文件的讀寫權限。Grid Infrastructure 安裝所有者 (grid) 和所有 Oracle Database 軟件所有者 (oracle) 必須是該組的成員,而所有有權訪問 Oracle ASM 管理的文件並且具有數據庫的 OSDBA 成員關係的用戶必須是 ASM 的 OSDBA 組的成員。

    • ASM 操作員組(OSOPER for ASM,一般爲 asmoper
    • 該組爲可選組。如果需要單獨一組具有有限的 Oracle ASM 實例管理權限(ASM 的 SYSOPER 權限,包括啓動和停止 Oracle ASM 實例的權限)的操作系統用戶,則創建該組。默認情況下,OSASM 組的成員將擁有 ASM 的 SYSOPER 權限所授予的所有權限。

      要使用 ASM 操作員組創建 ASM 管理員組(該組擁有的權限比默認的 asmadmin 組要少),安裝 Grid Infrastructure 軟件時必須選擇 Advanced 安裝類型。這種情況下,OUI 會提示您指定該組的名稱。在本指南中,該組爲 asmoper

      如果要擁有一個 OSOPER for ASM 組,則集羣的 Grid Infrastructure 軟件所有者 (grid) 必須爲此組的一個成員。

    • 數據庫管理員(OSDBA,一般爲 dba

      OSDBA 組的成員可通過操作系統身份驗證使用 SQL 以 SYSDBA 身份連接到一個 Oracle 實例。該組的成員可執行關鍵的數據庫管理任務,如創建數據庫、啓動和關閉實例。該組的默認名稱爲 dbaSYSDBA 系統權限甚至在數據庫未打開時也允許訪問數據庫實例。對此權限的控制完全超出了數據庫本身的範圍。

      不要混淆 SYSDBA 系統權限與數據庫角色 DBADBA 角色不包括 SYSDBA 或 SYSOPER 系統權限。

    • 數據庫操作員組(OSOPER,一般爲 oper

      OSOPER 組的成員可通過操作系統身份驗證使用 SQL 以 SYSOPER 身份連接到一個 Oracle 實例。這個可選組的成員擁有一組有限的數據庫管理權限,如管理和運行備份。該組的默認名稱爲 operSYSOPER 系統權限甚至在數據庫未打開時也允許訪問數據庫實例。對此權限的控制完全超出了數據庫本身的範圍。要使用該組,選擇 Advanced 安裝類型來安裝 Oracle 數據庫軟件。



    爲 Grid Infrastructure 創建組和用戶

    在本節中,我們首先在兩個 Oracle RAC 節點上爲 Grid Infrastructure 創建推薦的操作系統組和用戶:

    [[email protected] ~]# groupadd -g 1000 oinstall 
    [[email protected] ~]# groupadd -g 1200 asmadmin
    [[email protected] ~]# groupadd -g 1201 asmdba
    [[email protected] ~]# groupadd -g 1202 asmoper
    [[email protected] ~]# useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d
    /home/grid -s /bin/bash -c "Grid Infrastructure Owner" grid


    [[email protected] ~]# id grid uid=1100(grid) gid=1000(oinstall)
    groups=1000(oinstall), 1200(asmadmin), 1201(asmdba),1202(asmoper)

    設置 grid 帳戶的口令:

    [[email protected] ~]# passwd grid  
    Changing password for user grid.
    New UNIX password:xxxxxxxxxxx
    Retype new UNIX password:xxxxxxxxxxx
    passwd: all authentication tokens updated successfully.

    爲 grid 用戶帳戶創建登錄腳本

    以 grid 用戶帳戶分別登錄到兩個 Oracle RAC 節點並創建以下登錄腳本 (.bash_profile):

    : 在爲每個 Oracle RAC 節點設置 Oracle 環境變量時,確保爲每個 RAC 節點指定唯一的 Oracle SID。對於此示例,我使用:

    • racnode1ORACLE_SID=+ASM1
    • racnode2ORACLE_SID=+ASM2
    [[email protected] ~]# su - grid
                                  
    # ---------------------------------------------------
    # .bash_profile
    # ---------------------------------------------------
    # OS User: grid
    # Application: Oracle Grid Infrastructure
    # Version: Oracle 11g release 2
    # ---------------------------------------------------

    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi

    alias ls="ls -FA"

    # ---------------------------------------------------
    # ORACLE_SID
    # ---------------------------------------------------
    # Specifies the Oracle system identifier (SID)
    # for the Automatic Storage Management (ASM)instance
    # running on this node.
    # Each RAC node must have a unique ORACLE_SID.
    # (i.e. +ASM1, +ASM2,...)
    # ---------------------------------------------------
    ORACLE_SID=+ASM1; export ORACLE_SID

    # ---------------------------------------------------
    # JAVA_HOME
    # ---------------------------------------------------
    # Specifies the directory of the Java SDK and Runtime
    # Environment.
    # ---------------------------------------------------
    JAVA_HOME=/usr/local/java; export JAVA_HOME

    # ---------------------------------------------------
    # ORACLE_BASE
    # ---------------------------------------------------
    # Specifies the base of the Oracle directory structure
    # for Optimal Flexible Architecture (OFA) compliant
    # installations. The Oracle base directory for the
    # grid installation owner is the location where
    # diagnostic and administrative logs, and other logs
    # associated with Oracle ASM and Oracle Clusterware
    # are stored.
    # ---------------------------------------------------
    ORACLE_BASE=/u01/app/grid; export ORACLE_BASE

    # ---------------------------------------------------
    # ORACLE_HOME
    # ---------------------------------------------------
    # Specifies the directory containing the Oracle
    # Grid Infrastructure software. For grid
    # infrastructure for a cluster installations, the Grid
    # home must not be placed under one of the Oracle base
    # directories, or under Oracle home directories of
    # Oracle Database installation owners, or in the home
    # directory of an installation owner. During
    # installation, ownership of the path to the Grid
    # home is changed to root. This change causes
    # permission errors for other installations.
    # ---------------------------------------------------
    ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME

    # ---------------------------------------------------
    # ORACLE_PATH
    # ---------------------------------------------------
    # Specifies the search path for files used by Oracle
    # applications such as SQL*Plus. If the full path to
    # the file is not specified, or if the file is not
    # in the current directory, the Oracle application
    # uses ORACLE_PATH to locate the file.
    # This variable is used by SQL*Plus, Forms and Menu.
    # ---------------------------------------------------
    ORACLE_PATH=/u01/app/oracle/common/oracle/sql; export ORACLE_PATH

    # ---------------------------------------------------
    # SQLPATH
    # ---------------------------------------------------
    # Specifies the directory or list of directories that
    # SQL*Plus searches for a login.sql file.
    # ---------------------------------------------------
    # SQLPATH=/u01/app/common/oracle/sql; export SQLPATH

    # ---------------------------------------------------
    # ORACLE_TERM
    # ---------------------------------------------------
    # Defines a terminal definition. If not set, it
    # defaults to the value of your TERM environment
    # variable. Used by all character mode products.
    # ---------------------------------------------------
    ORACLE_TERM=xterm; export ORACLE_TERM

    # ---------------------------------------------------
    # NLS_DATE_FORMAT
    # ---------------------------------------------------
    # Specifies the default date format to use with the
    # TO_CHAR and TO_DATE functions. The default value of
    # this parameter is determined by NLS_TERRITORY. The
    # value of this parameter can be any valid date
    # format mask, and the value must be surrounded by
    # double quotation marks. For example:
    # # NLS_DATE_FORMAT = "MM/DD/YYYY"
    # # ---------------------------------------------------
    NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT

    # ---------------------------------------------------
    # TNS_ADMIN
    # ---------------------------------------------------
    # Specifies the directory containing the Oracle Net
    # Services configuration files like listener.ora,
    # tnsnames.ora, and sqlnet.ora.
    # ---------------------------------------------------
    TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN

    # ---------------------------------------------------
    # ORA_NLS11
    # ---------------------------------------------------
    # Specifies the directory where the language,
    # territory, character set, and linguistic definition
    # files are stored.
    # ---------------------------------------------------
    ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11

    # ---------------------------------------------------
    # PATH
    # ---------------------------------------------------
    # Used by the shell to locate executable programs;
    # must include the $ORACLE_HOME/bin directory.
    # ---------------------------------------------------
    PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
    PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
    PATH=${PATH}:/u01/app/common/oracle/bin
    export PATH

    # ---------------------------------------------------
    # LD_LIBRARY_PATH
    # ---------------------------------------------------
    # Specifies the list of directories that the shared
    # library loader searches to locate shared object
    # libraries at runtime.
    # ---------------------------------------------------
    LD_LIBRARY_PATH=$ORACLE_HOME/lib
    LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
    LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
    export LD_LIBRARY_PATH

    # ---------------------------------------------------
    # CLASSPATH
    # ---------------------------------------------------
    # Specifies the directory or list of directories that
    # contain compiled Java classes.
    # ---------------------------------------------------
    CLASSPATH=$ORACLE_HOME/JRE
    CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
    CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
    CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
    export CLASSPATH

    # ---------------------------------------------------
    # THREADS_FLAG
    # ---------------------------------------------------
    # All the tools in the JDK use green threads as a
    # default. To specify that native threads should be
    # used, set the THREADS_FLAG environment variable to
    # "native". You can revert to the use of green
    # threads by setting THREADS_FLAG to the value
    # "green".
    # ---------------------------------------------------
    THREADS_FLAG=native; export THREADS_FLAG

    # ---------------------------------------------------
    # TEMP, TMP, and TMPDIR
    # ---------------------------------------------------
    # Specify the default directories for temporary
    # files; if set, tools that create temporary files
    # create them in one of these directories.
    # ---------------------------------------------------
    export TEMP=/tmp
    export TMPDIR=/tmp

    # ---------------------------------------------------
    # UMASK
    # ---------------------------------------------------
    # Set the default file mode creation mask
    # (umask) to 022 to ensure that the user performing
    # the Oracle software installation creates files
    # with 644 permissions.
    # ---------------------------------------------------
    umask 022

    爲 Oracle 數據庫軟件創建組和用戶

    接下來,我們在兩個 Oracle RAC 節點上爲 Oracle 數據庫軟件創建推薦的操作系統組和用戶:

    [[email protected] ~]# groupadd -g 1300 dba
    [[email protected] ~]# groupadd -g 1301 oper
    [[email protected] ~]# useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d
    /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle


    [[email protected] ~]# id oracle
    uid=1101(oracle)
    gid=1000(oinstall)
    groups=1000(oinstall),1201(asmdba),1300(dba),1301(oper)

    設置 oracle 帳戶的口令:

    [[email protected] ~]# passwd oracle
    Changing password for user oracle.
    New UNIX password:
    xxxxxxxxxxx
    Retype new UNIX password:
    xxxxxxxxxxx
    passwd: all authentication tokens updated successfully.

    爲 oracle 用戶帳戶創建登錄腳本

    以 oracle 用戶帳戶分別登錄到兩個 Oracle RAC 節點並創建以下登錄腳本 (.bash_profile):

    : 在爲每個 Oracle RAC 節點設置 Oracle 環境變量時,確保爲每個 RAC 節點指定唯一的 Oracle SID。對於此示例,我使用:

    • racnode1ORACLE_SID=racdb1
    • racnode2ORACLE_SID=racdb2
    [[email protected] ~]# su - oracle
                                  
    # ---------------------------------------------------
    # .bash_profile
    # ---------------------------------------------------
    # OS User: oracle
    # Application: Oracle Database Software Owner
    # Version: Oracle 11g release 2
    # ---------------------------------------------------

    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi

    alias ls="ls -FA"

    # ---------------------------------------------------
    # ORACLE_SID
    # ---------------------------------------------------
    # Specifies the Oracle system identifier (SID) for
    # the Oracle instance running on this node.
    # Each RAC node must have a unique ORACLE_SID.
    # (i.e. racdb1, racdb2,...)
    # ---------------------------------------------------
    ORACLE_SID=racdb1; export ORACLE_SID

    # ---------------------------------------------------
    # ORACLE_UNQNAME
    # ---------------------------------------------------
    # In previous releases of Oracle Database, you were
    # required to set environment variables for
    # ORACLE_HOME and ORACLE_SID to start, stop, and
    # check the status of Enterprise Manager. With
    # Oracle Database 11g release 2 (11.2) and later, you
    # need to set the environment variables ORACLE_HOME
    # and ORACLE_UNQNAME to use Enterprise Manager.
    # Set ORACLE_UNQNAME equal to the database unique
    # name.
    # ---------------------------------------------------
    ORACLE_UNQNAME=racdb; export ORACLE_UNQNAME

    # ---------------------------------------------------
    # JAVA_HOME
    # ---------------------------------------------------
    # Specifies the directory of the Java SDK and Runtime
    # Environment.
    # ---------------------------------------------------
    JAVA_HOME=/usr/local/java; export JAVA_HOME

    # ---------------------------------------------------
    # ORACLE_BASE
    # ---------------------------------------------------
    # Specifies the base of the Oracle directory structure
    # for Optimal Flexible Architecture (OFA) compliant
    # database software installations.
    # ---------------------------------------------------
    ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

    # ---------------------------------------------------
    # ORACLE_HOME
    # ---------------------------------------------------
    # Specifies the directory containing the Oracle
    # Database software.
    # ---------------------------------------------------
    ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME

    # ---------------------------------------------------
    # ORACLE_PATH
    # ---------------------------------------------------
    # Specifies the search path for files used by Oracle
    # applications such as SQL*Plus. If the full path to
    # the file is not specified, or if the file is not
    # in the current directory, the Oracle application
    # uses ORACLE_PATH to locate the file.
    # This variable is used by SQL*Plus, Forms and Menu.
    # ---------------------------------------------------
    ORACLE_PATH=/u01/app/common/oracle/sql; export ORACLE_PATH

    # ---------------------------------------------------
    # SQLPATH
    # ---------------------------------------------------
    # Specifies the directory or list of directories that
    # SQL*Plus searches for a login.sql file.
    # ---------------------------------------------------
    # SQLPATH=/u01/app/common/oracle/sql; export SQLPATH

    # ---------------------------------------------------
    # ORACLE_TERM
    # ---------------------------------------------------
    # Defines a terminal definition. If not set, it
    # defaults to the value of your TERM environment
    # variable. Used by all character mode products.
    # ---------------------------------------------------
    ORACLE_TERM=xterm; export ORACLE_TERM

    # ---------------------------------------------------
    # NLS_DATE_FORMAT
    # ---------------------------------------------------
    # Specifies the default date format to use with the
    # TO_CHAR and TO_DATE functions. The default value of
    # this parameter is determined by NLS_TERRITORY. The
    # value of this parameter can be any valid date
    # format mask, and the value must be surrounded by
    # double quotation marks. For example:
    # # NLS_DATE_FORMAT = "MM/DD/YYYY"
    # # ---------------------------------------------------
    NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT

    # ---------------------------------------------------
    # TNS_ADMIN
    # ---------------------------------------------------
    # Specifies the directory containing the Oracle Net
    # Services configuration files like listener.ora,
    # tnsnames.ora, and sqlnet.ora.
    # ---------------------------------------------------
    TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN

    # ---------------------------------------------------
    # ORA_NLS11
    # ---------------------------------------------------
    # Specifies the directory where the language,
    # territory, character set, and linguistic definition
    # files are stored.
    # ---------------------------------------------------
    ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11

    # ---------------------------------------------------
    # PATH
    # ---------------------------------------------------
    # Used by the shell to locate executable programs;
    # must include the $ORACLE_HOME/bin directory.
    # ---------------------------------------------------
    PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
    PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
    PATH=${PATH}:/u01/app/common/oracle/bin
    export PATH

    # ---------------------------------------------------
    # LD_LIBRARY_PATH
    # ---------------------------------------------------
    # Specifies the list of directories that the shared
    # library loader searches to locate shared object
    # libraries at runtime.
    # ---------------------------------------------------
    LD_LIBRARY_PATH=$ORACLE_HOME/lib
    LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
    LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
    export LD_LIBRARY_PATH

    # ---------------------------------------------------
    # CLASSPATH
    # ---------------------------------------------------
    # Specifies the directory or list of directories that
    # contain compiled Java classes.
    # ---------------------------------------------------
    CLASSPATH=$ORACLE_HOME/JRE
    CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
    CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
    CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
    export CLASSPATH

    # ---------------------------------------------------
    # THREADS_FLAG
    # ---------------------------------------------------
    # All the tools in the JDK use green threads as a
    # default. To specify that native threads should be
    # used, set the THREADS_FLAG environment variable to
    # "native". You can revert to the use of green
    # threads by setting THREADS_FLAG to the value
    # "green".
    # ---------------------------------------------------
    THREADS_FLAG=native; export THREADS_FLAG

    # ---------------------------------------------------
    # TEMP, TMP, and TMPDIR
    # ---------------------------------------------------
    # Specify the default directories for temporary
    # files; if set, tools that create temporary files
    # create them in one of these directories.
    # ---------------------------------------------------
    export TEMP=/tmp
    export TMPDIR=/tmp

    # ---------------------------------------------------
    # UMASK
    # ---------------------------------------------------
    # Set the default file mode creation mask
    # (umask) to 022 to ensure that the user performing
    # the Oracle software installation creates files
    # with 644 permissions.
    # ---------------------------------------------------
    umask 022

    驗證用戶 nobody 存在

    安裝軟件之前,執行以下過程,以驗證在兩個 Oracle RAC 節點上存在用戶 nobody

     

    1. 要確定該用戶是否存在,輸入以下命令:
      # id nobody
      uid=99(nobody) gid=99(nobody) groups=99(nobody)

      如果該命令顯示了 nobody 用戶的信息,則無需創建該用戶。

    2. 如果用戶 nobody 不存在,則輸入以下命令進行創建:
      # /usr/sbin/useradd nobody
                                        
    3. 在集羣中的所有其他 Oracle RAC 節點上重複此過程。


    創建 Oracle 基目錄路徑

    最後一步是配置 Oracle 基路徑,要遵循最佳靈活體系結構 (OFA) 的結構及正確的權限。需要以 root 用戶身份在集羣的兩個 Oracle RAC 節點上完成此任務。

    本指南假設在根文件系統中創建 /u01 目錄。請注意,這樣做是爲了簡便起見,不建議將其作爲通用做法。通常會將 /u01 目錄作爲配置了硬件或軟件鏡像功能的單獨文件系統供應。

    [[email protected] ~]# mkdir -p /u01/app/grid
    [[email protected] ~]# mkdir -p /u01/app/11.2.0/grid
    [[email protected] ~]# chown -R grid:oinstall /u01
    [[email protected] ~]# mkdir -p /u01/app/oracle
    [[email protected] ~]# chown oracle:oinstall /u01/app/oracle
    [[email protected] ~]# chmod -R 775 /u01

    本節結束時,兩個 Oracle RAC 節點應具有以下配置:

     

    • Oracle 中央清單組,即 oraInventory 組 (oinstall),其成員以中央清單組作爲主組,擁有對 oraInventory 目錄的寫入權限。
    • 單獨的 OSASM 組 (asmadmin),其成員擁有 SYSASM 權限,可以管理 Oracle Clusterware 和 Oracle ASM。
    • 單獨的 ASM OSDBA 組 (asmdba),其成員包括 grid 和 oracle,擁有對 Oracle ASM 的訪問權限。
    • 單獨的 ASM OSOPER 組 (asmoper),其成員包括 grid,擁有有限的 Oracle ASM 管理員權限(包括啓動和停止 Oracle ASM 實例的權限)。
    • 集羣的 Oracle 網格安裝所有者 (grid),該用戶以 oraInventory 組作爲其主組,以 OSASM (asmadmin)、OSDBA for ASM (asmdba) 和 OSOPER for ASM (asmoper) 組作爲其輔助組。
    • 單獨的 OSDBA 組 (dba),其成員擁有 SYSDBA 權限,可以管理 Oracle 數據庫。
    • 單獨的 OSOPER 組 (oper),其成員包括 oracle,擁有有限的 Oracle 數據庫管理員權限。
    • Oracle 數據庫軟件所有者 (oracle),該用戶以 oraInventory 組作爲其主組,以 OSDBA (dba)、OSOPER (oper) 和 OSDBA for ASM 組 (asmdba) 作爲其輔助組。
    • 符合 OFA 的掛載點 /u01,在安裝之前,其所有者爲 grid:oinstall
    • 網格的 Oracle 基目錄 /u01/app/grid,其所有者爲 grid:oinstall,權限設置爲 775,在安裝過程中其權限設置更改爲 755。網格安裝所有者的 Oracle 基目錄是存放 Oracle ASM 診斷和管理日誌文件的位置。
    • 網格主目錄 /u01/app/11.2.0/grid,其所有者爲 grid:oinstall,權限設置爲 775 (drwxdrwxr-x)。這些權限爲安裝所需,在安裝過程中會更改爲 root:oinstall 和 755 權限設置 (drwxr-xr-x)。
    • 在安裝過程中,OUI 在路徑 /u01/app/oraInventory 下創建 Oracle 清單目錄。此路徑的所有者一直爲 grid:oinstall,使其他 Oracle 軟件所有者可以寫入中央清單。
    • Oracle 基目錄 /u01/app/oracle,其所有者爲 oracle:oinstall,權限設置爲 775。


    爲 Oracle 軟件安裝用戶設置資源限制

    要改善 Linux 系統上的軟件性能,必須對 Oracle 軟件所有者用戶(gridoracle)增加以下資源限制:

     

    Shell 限制 limits.conf 中的條目 硬限制
    打開文件描述符的最大數 nofile 65536
    可用於單個用戶的最大進程數 nproc 16384
    進程堆棧段的最大大小 stack 10240


    要進行這些更改,以 root 用戶身份運行以下命令:

     

    1. 在每個 Oracle RAC 節點上,在 /etc/security/limits.conf 文件中添加以下幾行代碼(下面的示例顯示軟件帳戶所有者 oracle 和 grid):
      [[email protected] ~]# cat >> /etc/security/limits.conf <<EOF
      grid soft nproc 2047
      grid hard nproc 16384
      grid soft nofile 1024
      grid hard nofile 65536
      oracle soft nproc 2047
      oracle hard nproc 16384
      oracle soft nofile 1024
      oracle hard nofile 65536
      EOF
    2. 在每個 Oracle RAC 節點上,在 /etc/pam.d/login 文件中添加或編輯下面一行內容(如果不存在此行):
      [[email protected] ~]# cat >> /etc/pam.d/login <<EOF
      session required pam_limits.so
      EOF
    3. 根據您的 shell 環境,對默認的 shell 啓動文件進行以下更改,以便更改所有 Oracle 安裝所有者的 ulimit 設置(注意這裏的示例顯示 oracle 和 grid 用戶):

      對於 Bourne、Bash 或 Korn shell,通過運行以下命令將以下行添加到 /etc/profile 文件:

      [[email protected] ~]# cat >> /etc/profile <<EOF
      if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then
      if [ \$SHELL = "/bin/ksh" ]; then
      ulimit -p 16384
      ulimit -n 65536
      else
      ulimit -u 16384 -n 65536
      fi
      umask 022
      fi
      EOF


      對於 C shell(csh 或 tcsh),通過運行以下命令將以下行添加到 /etc/csh.login 文件:

      [[email protected] ~]# cat >> /etc/csh.login <<EOF
      if ( \$USER == "oracle" || \$USER == "grid" ) then
      limit maxproc 16384
      limit descriptors 65536
      endif
      EOF

    14. 使用 X 終端登錄遠程系統 

    爲了安裝操作系統並執行多項配置任務,本指南需要可以訪問所有計算機(Oracle RAC 節點和 Openfiler)的控制檯。管理少量服務器時,爲了訪問其控制檯,將每臺服務器與自己的顯示器、鍵盤和鼠標相連可能行得通。但是,隨着需要管理的服務器數量越來越多,這一解決方案變得難以實施。更實際的解決方案是配置一臺專用計算機,該計算機包括一個顯示器、鍵盤和鼠標,可以直接訪問每臺計算機的控制檯。使用一臺鍵盤、視頻和鼠標切換設備(常稱作 KVM 切換設備)可以實現該解決方案。

    安裝了 Linux 操作系統後,爲了安裝並配置 Oracle RAC,需要幾個應用程序,這幾個程序使用圖形用戶界面 (GUI) 並且需要使用 X11 顯示服務器。這些 GUI 應用程序(常稱爲 X 應用程序)中最爲有名的是 Oracle Universal Installer (OUI),儘管其他程序如 Virtual IP Configuration Assistant (VIPCA) 也需要使用 X11 顯示服務器。

    由於我編寫此文時所基於的系統使用了 KVM 切換設備,所以我能夠切換到每個節點,並且可依靠本機上的 Linux X11 顯示服務器來顯示 X 應用程序。

    如果您不是直接登錄到節點的圖形控制檯,而是使用某個遠程客戶端(如 SSH、PuTTY 或 Telnet)連接到節點,則對於任何 X 應用程序,均需在該客戶端上安裝一個 X11 顯示服務器。例如,您要從一個 Windows 工作站遠程終端連接到 racnode1,需要在該 Windows 客戶端上安裝一個 X11 顯示服務器(如 Xming)。如果您打算從安裝有 X11 顯示服務器的 Windows 工作站或另一個系統安裝 Oracle Grid Infrastructure 和 Oracle RAC 軟件,執行以下操作:

     

    1. 在客戶端工作站上啓動 X11 顯示服務器軟件。
    2. 配置 X 服務器軟件的安全設置以允許遠程主機在本地系統上顯示 X 應用程序。
    3. 從客戶端工作站登錄到您要以集羣軟件所有者 grid)或 Oracle RAC 軟件所有者 (oracle) 在其上安裝 Oracle Grid Infrastructure 軟件的服務器。
    4. 以軟件所有者(gridoracle)的身份設置 DISPLAY 環境:
      [[email protected] ~]# su - grid  

      [[email protected] ~]$ DISPLAY=<your local workstation>:0.0
      [[email protected] ~]$ export DISPLAY

      [[email protected] ~]$ # TEST X CONFIGURATION BY RUNNING xterm
      [[email protected] ~]$ xterm &

      圖 16:在 Windows 上測試 X11 顯示服務器,從節點 1 (racnode1) 運行 xterm


    15. 爲 Oracle 配置 Linux 服務器

    在集羣中的兩個 Oracle RAC 節點上執行以下配置過程。

    每次引導算機時,都需要在集羣中的兩個 Oracle RAC 節點上定義本節討論的內核參數。本節提供了設置 Oracle 必需的那些內核參數的信息。第 17 節(「用於兩個 Oracle RAC 節點的所有啓動命令」)中說明了如何將這些參數置於啓動腳本 (/etc/sysctl.conf) 中。

    概述

    本節主要介紹如何配置兩臺 Oracle RAC Linux 服務器 — 使每臺服務器作好準備,以便在 Oracle Enterprise Linux 5 平臺上安裝 Oracle 11g 第 2 版 Grid Infrastructure 和 Oracle RAC 11g 第 2 版。具體任務包括:驗證是否有足夠的內存和交換空間、設置共享內存和信號、設置文件句柄的最大數量、設置 IP 本地端口範圍,最後說明如何**系統的所有內核參數。

    有多種方法來配置這些參數。就本文而言,我將通過把所有設置值置於 /etc/sysctl.conf 文件中以使所有更改永久有效(通過重新引導)。

    內存和交換空間考慮事項

    RHEL/OEL 的最小 RAM 要求爲:1.5 GB 用於集羣的 Grid Infrastructure,或 2.5 GB 用於集羣的 Grid Infrastructure 和 Oracle RAC。在本指南中,每個 Oracle RAC 節點上將運行 Oracle Grid Infrastructure 和 Oracle RAC,因此每臺服務器至少需要 2.5 GB RAM。本文中使用的每個 RAC 節點配備了 4 GB 的物理 RAM。

    所需的最小交換空間爲 1.5 GB。對於 RAM 等於或小於 2 GB 的系統, Oracle 建議您將交換空間設置爲 RAM 容量的 1.5 倍。對於 RAM 在 2 GB 到 16 GB 之間的系統,請使用與 RAM 同等大小的交換空間。對於 RAM 大於 16 GB 的系統,請使用 16 GB 的交換空間。

    • 要檢查已擁有的內存容量,鍵入以下命令:
      [[email protected] ~]# cat /proc/meminfo | grep MemTotal 
      MemTotal:
      4038564 kB
    • 要檢查已分配的交換容量,鍵入以下命令:
      [[email protected] ~]# cat /proc/meminfo | grep SwapTotal 
      SwapTotal:
      6094840 kB
    • 如果內存少於 4GB(介於 RAM 與 SWAP 之間),您可以通過創建臨時交換文件添加臨時交換空間。這樣,您就不必使用原始設備甚至更爲徹底地重建系統了。

      以 root 身份創建一個用作額外交換空間的文件,假設大小爲 500MB: 

      # dd if=/dev/zero of=tempswap bs=1k count=500000

      現在我們應更改文件的權限: 

      # chmod 600 tempswap

      最後我們將該「分區」格式化爲交換分區,並將其添加到交換空間: 

      # mke2fs tempswap 
      # mkswap tempswap 
      # swapon tempswap 

    配置內核參數

    本節中出現的內核參數只是用於 Oracle 文檔的建議值。對於生產數據庫系統,Oracle 建議您對這些值進行調整,以優化系統性能。

    在兩個 Oracle RAC 節點上,驗證本節所述的內核參數的設置值大於或等於推薦值。另請注意,在設置四個信號值時,需要在同一行中輸入全部四個值。

    配置內核參數

    RHEL/OEL 5 上的 Oracle Database 11g 第 2 版需要如下所示的內核參數設置。給出的值都是最小值,因此如果您的系統使用更大的值,則不要更改。

    kernel.shmmax = 4294967295
    kernel.shmall = 2097152
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    fs.file-max = 6815744
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default=262144
    net.core.rmem_max=4194304
    net.core.wmem_default=262144
    net.core.wmem_max=1048576
    fs.aio-max-nr=1048576

    RHEL/OEL 5 已經配置了爲以下內核參數定義的默認值:

    kernel.shmall
    kernel.shmmax

    如果這些默認值等於或大於必需值,則使用這些默認值。

    本文假定採用 Oracle Enterprise Linux 5 的全新安裝,則已經設置了許多必需的內核參數(見上面)。如果是這樣,您以 root 用戶身份登錄後,只需將以下內容命令複製/粘貼到兩個 Oracle RAC 節點中:

    [[email protected] ~]# cat >> /etc/sysctl.conf <<EOF

    # Controls the maximum number of shared memory segments system wide
    kernel.shmmni = 4096

    # Sets the following semaphore values:
    # SEMMSL_value SEMMNS_value SEMOPM_value SEMMNI_value
    kernel.sem = 250 32000 100 128

    # Sets the maximum number of file-handles that the Linux kernel will allocate
    fs.file-max = 6815744

    # Defines the local port range that is used by TCP and UDP
    # traffic to choose the local port
    net.ipv4.ip_local_port_range = 9000 65500

    # Default setting in bytes of the socket "receive" buffer which
    # may be set by using the SO_RCVBUF socket option
    net.core.rmem_default=262144

    # Maximum setting in bytes of the socket "receive" buffer which
    # may be set by using the SO_RCVBUF socket option
    net.core.rmem_max=4194304

    # Default setting in bytes of the socket "send" buffer which
    # may be set by using the SO_SNDBUF socket option
    net.core.wmem_default=262144

    # Maximum setting in bytes of the socket "send" buffer which
    # may be set by using the SO_SNDBUF socket option
    net.core.wmem_max=1048576

    # Maximum number of allowable concurrent asynchronous I/O requests requests
    fs.aio-max-nr=1048576
    EOF

    **系統的所有內核參數

    上述命令將所需的內核參數插入到 /etc/sysctl.conf 啓動文件中,這樣每次系統重啓時這些參數保持不變。Linux 允許在系統當前已啓動並運行時修改這些內核參數,所以無需在更改內核參數後重啓系統。要在當前運行的系統中**新的內核參數值,在集羣中的兩個 Oracle RAC 節點上,以 root 用戶身份運行以下命令:

    [[email protected] ~]# sysctl -p 
    net.ipv4.ip_forward = 0
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    kernel.sysrq = 0
    kernel.core_uses_pid = 1
    net.ipv4.tcp_syncookies = 1
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    kernel.shmmax = 68719476736
    kernel.shmall = 4294967296
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    fs.file-max = 6815744
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576
    fs.aio-max-nr = 1048576

    通過在集羣中的兩個 Oracle RAC 節點上運行以下命令來驗證新的內核參數值:

    [[email protected] ~]# /sbin/sysctl -a | grep shm 
    vm.hugetlb_shm_group = 0
    kernel.shmmni = 4096
    kernel.shmall = 4294967296
    kernel.shmmax = 68719476736

    [[email protected] ~]# /sbin/sysctl -a | grep sem
    kernel.sem = 250 32000 100 128

    [[email protected] ~]# /sbin/sysctl -a | grep file-max
    fs.file-max = 6815744

    [[email protected] ~]# /sbin/sysctl -a | grep ip_local_port_range
    net.ipv4.ip_local_port_range = 9000 65500

    [[email protected] ~]# /sbin/sysctl -a | grep 'core\.[rw]mem'
    net.core.rmem_default = 262144
    net.core.wmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_max = 1048576

     


    16. 配置 RAC 節點以便可以使用 SSH 進行遠程訪問(可選)

    在兩個 Oracle RAC 節點上執行以下可選過程,以便手動配置「grid」和「oracle」用戶在兩個集羣成員節點之間無口令的 SSH 連接。

    本文檔這一節的一個最大好處是,此節是完全可選的!這並不是說沒必要在 Oracle RAC 節點之間配置安全 Shell (SSH) 連接。相反,Oracle Universal Installer (OUI) 在軟件安裝過程中會使用安全 shell 工具 ssh 和 scp 命令對集羣的其他節點運行遠程命令並將文件複製到集羣的其他節點上。Oracle 軟件安裝過程中必須對 SSH 進行配置,這些命令纔不會要求輸入口令。運行 SSH 命令而不要求輸入口令,這種能力有時稱作 用戶等效性

    本文這一節之所以是可選的,是因爲 11g 第 2 版中的 OUI 界面包含了一個新的特性,該特性可以在 Oracle 軟件的實際安裝階段爲執行該安裝的用戶帳戶自動配置 SSH。OUI 執行的自動配置會在集羣的所有成員節點間創建無口令的 SSH 連接。Oracle 建議,只要有可能就使用自動配置過程。

    除了在安裝 Oracle 軟件時使用 SSH 外,在軟件安裝之後,配置助手、Oracle Enterprise Manager、OPatch 以及其他執行從本地節點到遠程節點的配置操作的特性也會使用 SSH。

    Oracle Clusterware 11g 第 2 版及更高版本不再支持使用口令短語配置 SSH。Oracle 11g 第 2 版及更高版本需要無口令的 SSH。

    由於本指南用 grid 作爲 Oracle Grid Infrastructure 軟件所有者,用 oracle 作爲 Oracle RAC 軟件所有者,因此必須爲這兩個用戶帳戶配置無口令的 SSH。

    如果沒有 SSH,安裝程序會嘗試使用 rsh 和 rcp 命令取代 ssh 和 scp。不過,在大多數 Linux 系統上,這些服務在默認情況下處於禁用狀態。本文不討論 RSH 的使用。

    驗證已安裝 SSH 軟件

    Linux 發佈版本支持的 SSH 版本爲 OpenSSH。Linux 發佈版本的最低安裝應包括 OpenSSH。要確認安裝了 SSH 程序包,在兩個 Oracle RAC 節點上運行以下命令:

    [[email protected] ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} 
    (%{ARCH})\n"| grep ssh

    openssh-askpass-4.3p2-36.el5 (x86_64)
    openssh-clients-4.3p2-36.el5 (x86_64)
    openssh-4.3p2-36.el5 (x86_64)
    openssh-server-4.3p2-36.el5 (x86_64)

    如果看不到 SSH 程序包列表,則爲您的 Linux 發佈版本安裝這些程序包。例如,將 1 號 CD 裝到每個 Oracle RAC 節點中,執行以下命令安裝 OpenSSH 程序包:

    [[email protected]ode1 ~]# mount -r /dev/cdrom /media/cdrom 
    [[email protected] ~]# cd /media/cdrom/Server
    [[email protected] ~]# rpm -Uvh openssh-*
    [[email protected] ~]# cd /
    [[email protected] ~]# eject

    爲何使用手動方法選項來配置 SSH 用戶等效性?

    如果 OUI 已包括可以自動配置兩個 Oracle RAC 節點間的 SSH 的特性,我們爲什麼還提供一節的內容來說明如何手動配置無口令的 SSH 連接?事實上,對本文而言,爲了支持 Oracle 的自動配置方法(包括在安裝程序中),我已決定放棄手動配置 SSH 連接。

    提供此節(手動配置 SSH)的一個原因是爲了說明這樣的事實:必須從所有 Oracle 軟件安裝所有者的配置文件中刪除 stty 命令,並且刪除登錄時觸發的、可生成發往終端的消息的其他安全措施。這些消息、郵件檢查及其他顯示會阻止 Oracle 軟件安裝所有者使用 Oracle Universal Installer 中內置的 SSH 配置腳本。如果沒有禁用這些安全措施,則必須手動配置 SSH 後纔可運行安裝。本節稍後將介紹其他說明如何防止因 stty 命令引發的安裝錯誤的文檔。

    另一個原因是,您可能決定手動配置用戶等效性 SSH,以便能夠在安裝 Oracle 軟件之前運行集羣驗證實用程序 (CVU)。CVU (runcluvfy.sh) 是一個非常有用的工具,位於 Oracle 集羣件的根目錄下。該工具不僅檢查是否滿足了軟件安裝前的所有前提條件,還能夠生成稱作「修復腳本」的 shell 腳本程序,從而解決許多不滿足系統配置要求的問題。然而,CVU 確實有它自己的前提條件,那就是爲運行安裝的用戶帳戶正確配置 SSH 用戶等效性。如果您打算使用 OUI 配置 SSH 連接,就要知道 CVU 實用程序將會失敗,它沒有機會執行任何關鍵檢查。

    [[email protected] ~]$ /media/cdrom/grid/runcluvfy.sh stage -pre crsinst -fixup -n 
    racnode1,racnode2 -verbose

    Performing pre-checks for cluster services setup

    Checking node reachability...

    Check: Node reachability from node "racnode1"
    Destination Node Reachable?
    ------------------------------------ ------------------------
    racnode1 yes
    racnode2 yes
    Result: Node reachability check passed from node "racnode1"


    Checking user equivalence...

    Check: User equivalence for user "grid"
    Node Name Comment
    ------------------------------------ ------------------------
    racnode2 failed
    racnode1 failed
    Result: PRVF-4007 : User equivalence check failed for user "grid"

    ERROR:
    User equivalence unavailable on all the specified nodes
    Verification cannot proceed


    Pre-check for cluster services setup was unsuccessful on all the nodes.

    請注意,在安裝 Oracle 軟件之前不一定非要運行 CVU 實用程序。從 Oracle 11g 第 2 版開始,安裝程序會檢測不滿足最低安裝要求的情況並執行與 CVU 相同的任務 — 生成修復腳本以解決不滿足系統配置要求的問題。


    在集羣的所有節點上手動配置 SSH 連接

    需要重申的是,在運行 OUI 之前手動配置 SSH 連接並不是必需的。在 11g 第 2 版中,OUI 在安裝過程中爲執行安裝的用戶帳戶提供了一個界面,以便在所有集羣成員節點之間自動創建無口令的 SSH 連接。這是 Oracle 建議採用的方法,也是本文使用的方法。我們將完成以下任務來手動配置所有集羣成員節點之間的 SSH 連接,提供此手動配置過程只是爲了說明之目的。要記住本指南使用 grid 作爲 Oracle Grid Infrastructure 軟件所有者,使用 oracle 作爲 Oracle RAC 軟件的所有者。如果您決定手動配置 SSH 連接,應對這兩個用戶帳戶都進行這樣的配置。

    此節旨在爲 grid 和 oracle 這兩個操作系統用戶帳戶設置用戶等效性。利用用戶等效性,grid 和 oracle 用戶帳戶無需口令即可訪問集羣中的所有其他節點(運行命令和複製文件)。Oracle 在 10g 第 1 版中增加了對使用 SSH 工具套件設置用戶等效性的支持。在 Oracle 數據庫 10g 之前,只能使用遠程 shell (RSH) 配置用戶等效性。

    下面示例中列出的 Oracle 軟件所有者是 grid 用戶。

    檢查系統中的現有 SSH 配置

    要確定是否 SSH 已安裝並運行,輸入以下命令:

    [[email protected] ~]$ pgrep sshd 2535 19852                               

    如果 SSH 正在運行,那麼該命令的響應將是一個進程 ID 號(一個或多個)列表。在集羣中的兩個 Oracle RAC 節點上運行此命令,驗證 SSH 後臺程序已安裝並正在運行。

    您需要 SSH 協議所需的 RSA 或 DSA **。RSA 用於 SSH 1.5 協議,而 DSA 則默認用於 SSH 2.0 協議。而對於 OpenSSH,您既可以使用 RSA,也可以使用 DSA。下面的說明是針對 SSH1 的。如果您安裝了 SSH2,但不能使用 SSH1,那麼請參考 SSH 分發文檔來配置 SSH1 兼容性或使用 DSA 配置 SSH2。

    使用 OUI 自動配置無口令的 SSH 會在集羣的所有節點上生成 RSA 加***。

    在集羣節點上配置無口令的 SSH

    要配置無口令的 SSH,必須先在每個集羣節點上生成 RSA 或 DSA **,然後將所有集羣節點成員上生成的所有**複製到 授權**文件 中,該文件在每個節點上都是相同的。注意,SSH 文件必須只能由 root 用戶、軟件安裝用戶(grid、oracle)讀取,因爲如果其他用戶可以訪問一個私鑰文件,則 SSH 會忽略該文件。以下示例中使用 DSA **。

    對於安裝時要使用的 Oracle 軟件安裝所有者(grid、oracle),您必須爲每個所有者分別配置無口令的 SSH。

    要配置無口令的 SSH,完成以下任務:

    在每個節點上創建 SSH 目錄並生成 SSH **

    在每個節點上完成以下步驟:

    1. 以軟件所有者身份(此例中爲 grid 用戶)登錄。
      [[email protected] ~]# su - grid                                   
    2. 要確保您是以 grid 登錄的,並驗證用戶 ID 與預期的用戶 ID(即您已爲grid 用戶分配的用戶 ID)一致,輸入 id 和 id grid 命令。確保 Oracle 用戶組和用戶與您當前使用的用戶終端窗口進程的組和用戶 ID 相同。例如:
      [[email protected] ~]$ id uid=1100(grid) gid=1000(oinstall)
      groups=1000(oinstall),1200(asmadmin),1201(asmdba),1202(asmoper)
      [[email protected] ~]$ id grid uid=1100(grid) gid=1000(oinstall)
      groups=1000(oinstall),1200(asmadmin),1201(asmdba),1202(asmoper)
    3. 如有必要,在 grid 用戶的主目錄下創建.ssh 目錄並設置相應權限,以確保僅 oracle 用戶具有讀寫權限:
      [[email protected] ~]$ mkdir ~/.ssh [[email protected] ~]$ chmod 700 ~/.ssh                                   
      如果權限未設置爲 700,SSH 配置將失敗。
    4. 輸入以下命令,爲 SSH 協議生成 DSA **對(公共**和私有**):出現提示時,接受默認的**文件位置和無口令短語設置(按 [Enter]):
      [[email protected] ~]$ /usr/bin/ssh-****** -t dsa 
      Generating public/private dsa key pair.
      Enter file in which to save the key (/home/grid/.ssh/id_dsa):[Enter]
      Enter passphrase (empty for no passphrase):[Enter]
      Enter same passphrase again:[Enter]
      Your identification has been saved in /home/grid/.ssh/id_dsa.
      Your public key has been saved in /home/grid/.ssh/id_dsa.pub.
      The key fingerprint is: 7b:e9:e8:47:29:37:ea:10:10:c6:b6:7d:d2:73:e9:03 [email protected]

      Oracle Clusterware 11g 第 2 版及更高版本不支持使用口令短語的 SSH。Oracle 11g 第 2 版及更高版本必須使用無口令的 SSH。

      此命令將 DSA 公共**寫入 ~/.ssh/id_dsa.pub 文件,將私有**寫入 ~/.ssh/id_dsa 文件。

      絕不要將私鑰分發給任何無權執行 Oracle 軟件安裝的用戶。

    5. 對您想使其成爲集羣成員的所有其他使用 DSA **的節點 (racnode2) 重複第 1 步到第 4 步。


    將所有**添加到一個公共 authorized_keys 文件

    現在,每個 Oracle RAC 節點都包含用於 DSA 的公共和私有**,您需要在其中一個節點上創建一個授權**文件 (authorized_keys)。授權**文件只是一個包含每個用戶(每個節點)的 DSA 公共**的文件。在授權**文件包含了所有公共**後,將其分發至集羣中的所有其他節點。

    每個節點上 grid 用戶的 ~/.ssh/authorized_keys 文件必須包含您在所有集羣節點上生成的所有 ~/.ssh/id_dsa.pub 文件中的內容。

    在集羣中的一個節點上完成以下步驟以生成授權**文件,然後分發該文件。對於此文而言,我將使用集羣中的主節點 racnode1

     

    1. 從 racnode1(本地節點)中確定所有者的主目錄 .ssh 中是否存在授權**文件 ~/.ssh/authorized_keys。大多數情況下,該文件是不存在的,因爲本文假設您正在進行新的安裝。如果該文件不存在,那麼現在進行創建:
      [[email protected] ~]$ touch ~/.ssh/authorized_keys 
      [[email protected] ~]$ ls -l ~/.ssh
      total 8
      -rw-r--r-- 1 grid oinstall 0 Nov 12 12:34 authorized_keys
      -rw------- 1 grid oinstall 668 Nov 12 09:24 id_dsa
      -rw-r--r-- 1 grid oinstall 603 Nov 12 09:24 id_dsa.pub

      在 .ssh 目錄中,您會看到前面生成的 id_dsa.pub **以及空白文件 authorized_keys

    2. 在本地節點 (racnode1) 上,使用 SCP(安全複製)或 SFTP(安全 FTP)將 ~/.ssh/id_dsa.pub 公共**的內容從集羣中的兩個 Oracle RAC 節點複製到剛纔創建的授權**文件 (~/.ssh/authorized_keys) 中。同樣,從 racnode1 進行該操作。系統將提示您爲每個訪問的 Oracle RAC 節點輸入 grid OS 用戶帳戶口令。

      以下示例是在 racnode1 節點上運行的,假定集羣有兩個節點,分別是 racnode1 和 racnode2

      [[email protected] ~]$ ssh racnode1 cat ~/.ssh/id_dsa.pub >> 
      ~/.ssh/authorized_keys

      The authenticity of host 'racnode1 (192.168.1.151)' can't be established.
      RSA key fingerprint is 2f:0d:2c:da:9f:d4:3d:2e:ea:e9:98:20:2c:b9:e8:f5.
      Are you sure you want to continue connecting (yes/no)? yes
      Warning: Permanently added 'racnode1,192.168.1.151' (RSA) to the list of known
      hosts.
      [email protected]'s password:xxxxx

      [[email protected] ~]$ ssh racnode2 cat ~/.ssh/id_dsa.pub >>
      ~/.ssh/authorized_keys

      The authenticity of host 'racnode2 (192.168.1.152)' can't be established.
      RSA key fingerprint is 97:ab:db:26:f6:01:20:cc:e0:63:d0:d1:73:7e:c2:0a.
      Are you sure you want to continue connecting (yes/no)? yes
      Warning: Permanently added 'racnode2,192.168.1.152' (RSA) to the list of known
      hosts.
      [email protected]'s password:xxxxx

      第一次使用 SSH 從某個特定系統連接到節點時,您會看到類似以下的消息:

      The authenticity of host 'racnode1 (192.168.1.151)' can't be established.
      RSA key fingerprint is 2f:0d:2c:da:9f:d4:3d:2e:ea:e9:98:20:2c:b9:e8:f5.
      Are you sure you want to continue connecting (yes/no)? yes

      在該提示下輸入 yes 繼續。於是,會將公共主機名添加到 ~/.ssh 目錄下的 known_hosts 文件中,以後再從此係統連接到相同節點時就不會看到此消息了。

    3. 此時,racnode1 上的授權**文件 (~/.ssh/authorized_keys) 中含有來自集羣中各個節點的 DSA 公共**。
      [[email protected] ~]$ ls -l ~/.ssh 
      total 16
      -rw-r--r-- 1 grid oinstall 1206 Nov 12 12:45 authorized_keys
      -rw------- 1 grid oinstall 668 Nov 12 09:24 id_dsa
      -rw-r--r-- 1 grid oinstall 603 Nov 12 09:24 id_dsa.pub
      -rw-r--r-- 1 grid oinstall 808 Nov 12 12:45 known_hosts

      我們現在將其複製到集羣中的其餘節點。在我們的雙節點集羣示例中,唯一剩下的節點就是 racnode2。使用 scp 命令將授權**文件複製到集羣中的所有其餘節點:

      [[email protected] ~]$ scp ~/.ssh/authorized_keys racnode2:.ssh/authorized_keys 
      [email protected]'s password:xxxxx
      authorized_keys 100% 1206 1.2KB/s 00:00
    4. 通過登錄到節點並運行以下命令,爲集羣中的兩個 Oracle RAC 節點更改授權**文件的權限:
      [[email protected] ~]$ chmod 600 ~/.ssh/authorized_keys                                   

    在集羣節點上啓用 SSH 用戶等效性

    將包含所有公共**的 authorized_keys 文件複製到集羣中的每個節點之後,完成本節中的各個步驟以確保正確配置了集羣成員節點之間的無口令 SSH 連接。在本示例中,將使用名爲 grid 的 Oracle Grid Infrastructure 軟件所有者。

    當您運行本節中的測試 SSH 命令時,如果看到除日期和主機名之外的任何其他消息或文本,則 Oracle 安裝將失敗。如果任一節點提示您輸入口令或口令短語,則驗證節點上的 ~/.ssh/authorized_keys 文件中包含了正確的公共**並且您已創建了具有同樣組成員關係和 ID 的 Oracle 軟件所有者。進行必要的更改,以確保您在輸入這些命令時只顯示日期和主機名。您應當確保對生成任何輸出或詢問任何問題的登錄腳本的任何部分進行修改,以便它們僅當 shell 是 交互式 shell 時纔會生效。

     

    1. 在您希望運行 OUI 的系統 (racnode1) 上,以 grid 用戶身份登錄。
      [[email protected] ~]# su - grid                                   
    2. 如果 SSH 配置正確,您將能夠從終端對話使用 ssh 和 scp 命令,而無需提供口令或口令短語。
      [[email protected] ~]$ ssh racnode1 "date;hostname" 
      Fri Nov 13 09:46:56 EST 2009
      racnode1

      [[email protected] ~]$ ssh racnode2 "date;hostname"
      Fri Nov 13 09:47:34 EST 2009
      racnode2
    3. 在 Oracle RAC 集羣中的其餘節點 (racnode2) 上執行相同的操作,以確保這些節點同樣可以訪問所有其他節點而無需提供口令或口令短語,並且這些節點添加到了 known_hosts 文件中:
      [[email protected] ~]$ ssh racnode1 "date;hostname" 
      The authenticity of host 'racnode1 (192.168.1.151)' can't be established.
      RSA key fingerprint is 2f:0d:2c:da:9f:d4:3d:2e:ea:e9:98:20:2c:b9:e8:f5.
      Are you sure you want to continue connecting (yes/no)? yes
      Warning: Permanently added 'racnode1,192.168.1.151' (RSA) to the list of known
      hosts.
      Fri Nov 13 10:19:57 EST 2009
      racnode1

      [[email protected] ~]$ ssh racnode1 "date;hostname"
      Fri Nov 13 10:20:58 EST 2009
      racnode1

      --------------------------------------------------------------------------

      [[email protected] ~]$ ssh racnode2 "date;hostname"
      The authenticity of host 'racnode2 (192.168.1.152)' can't be established.
      RSA key fingerprint is 97:ab:db:26:f6:01:20:cc:e0:63:d0:d1:73:7e:c2:0a.
      Are you sure you want to continue connecting (yes/no)? yes
      Warning: Permanently added 'racnode2,192.168.1.152' (RSA) to the list of known
      hosts.
      Fri Nov 13 10:22:00 EST 2009
      racnode2

      [[email protected] ~]$ ssh racnode2 "date;hostname"
      Fri Nov 13 10:22:01 EST 2009
      racnode2
    4. Oracle Universal Installer 是一個 GUI 接口,要求使用 X 服務器。在啓用了用戶等效性的終端會話中(您將從其中執行 Oracle 安裝的節點),將環境變量 DISPLAY 設置爲有效的 X 窗口顯示:

      Bourne、Korn 和 Bash shell:

      [[email protected] ~]$ DISPLAY=<Any X-Windows Host>:0 
      [[email protected] ~]$ export DISPLAY

      C shell:

      [[email protected] ~]$ setenv DISPLAY <Any X-Windows Host>:0                                   

      將 DISPLAY 變量設置爲有效的 X 窗口顯示後,您應當執行當前終端會話的另一個測試,以確保未啓用 X11 forwarding

      [[email protected] ~]$ ssh racnode1 hostname 
      racnode1

      [[email protected] ~]$ ssh racnode2 hostname
      racnode2

      如果您使用遠程客戶端連接到執行安裝的節點,則會看到類似這樣的消息:「Warning:No xauth data; using fake authentication data for X11 forwarding.」,這意味着您的授權**文件配置正確,但是,您的 SSH 配置啓用了 X11 forwarding。例如:

      [[email protected] ~]$ export DISPLAY=melody:0 
      [[email protected] ~]$ ssh racnode2 hostname
      Warning: No xauth data; using fake authentication data for X11 forwarding.
      racnode2

      注意,啓用 X11 Forwarding 將導致 Oracle 安裝失敗。要糾正這個問題,需爲禁用 X11 Forwarding 的 oracle OS 用戶帳戶創建一個用戶級 SSH 客戶端配置文件:

      1. 使用文本編輯器,編輯或創建 ~/.ssh/config 文件
      2. 確保 ForwardX11 屬性設爲 no。例如,將以下內容插入 ~/.ssh/config 文件:
        Host *

        ForwardX11 no

    防止 stty 命令引發的安裝錯誤

    在 Oracle Grid Infrastructure 或 Oracle RAC 軟件的安裝過程中,OUI 使用 SSH 運行命令並將文件複製到其他節點。在安裝過程中,系統中的隱藏文件(例如 .bashrc 或 .cshrc)如果包含stty 命令,則會導致生成文件錯誤和其他安裝錯誤。

    要避免該問題,必須在每個 Oracle 安裝所有者的用戶主目錄中修改這些文件以取消所有 STDERR 輸出,如下所示: 

    • Bourne、Bash 或 Korn shell:
      if [ -t 0 ]; then  stty intr ^C
      fi 
    • C shell:
      test -t 0 if ($status == 0) then 
      stty intr ^C
      endif

    如果由遠程 shell 加載的隱藏文件包含 stty 命令,則 OUI 將指示錯誤並停止安裝。

     


    17. 適用於這兩個 Oracle RAC 節點的所有啓動命令

    驗證以下啓動命令都包含在集羣中的兩個 Oracle RAC 節點上。

    至此,我們已經詳細介紹了需要在 Oracle 11g RAC 集羣配置的兩個節點上配置的參數和資源。在本節中,我們將回顧前幾節中提到的在兩個 Oracle RAC 節點引導時需要使用的參數、命令和條目。

    對於下面每個啓動文件, 紅色的條目應包含在每個啓動文件中。

     

    /etc/sysctl.conf

    我們希望調整互連的默認和最大發送緩衝區大小以及默認和最大的接收緩衝區大小。該文件還包含負責配置由 Oracle 實例使用的共享內存、信號、文件句柄以及本地 IP 範圍的參數。

    .................................................................
    # Kernel sysctl configuration file for Red Hat Linux
    # # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
    # sysctl.conf(5) for more details.

    # Controls IP packet forwarding
    net.ipv4.ip_forward = 0

    # Controls source route verification
    net.ipv4.conf.default.rp_filter = 1

    # Do not accept source routing
    net.ipv4.conf.default.accept_source_route = 0

    # Controls the System Request debugging functionality of the kernel
    kernel.sysrq = 0

    # Controls whether core dumps will append the PID to the core filename
    # Useful for debugging multi-threaded applications
    kernel.core_uses_pid = 1

    # Controls the use of TCP syncookies
    net.ipv4.tcp_syncookies = 1

    # Controls the maximum size of a message, in bytes
    kernel.msgmnb = 65536

    # Controls the default maxmimum size of a mesage queue
    kernel.msgmax = 65536


    # Controls the maximum shared segment size, in bytes
    kernel.shmmax = 68719476736

    # Controls the maximum number of shared memory segments, in pages
    kernel.shmall = 4294967296

    # Controls the maximum number of shared memory segments system wide
    kernel.shmmni = 4096

    # Sets the following semaphore values:
    # SEMMSL_value SEMMNS_value SEMOPM_value SEMMNI_value
    kernel.sem = 250 32000 100 128

    # Sets the maximum number of file-handles that the Linux kernel will allocate
    fs.file-max = 6815744

    # Defines the local port range that is used by TCP and UDP
    # traffic to choose the local port
    net.ipv4.ip_local_port_range = 9000 65500

    # Default setting in bytes of the socket "receive" buffer which
    # may be set by using the SO_RCVBUF socket option
    net.core.rmem_default=262144

    # Maximum setting in bytes of the socket "receive" buffer which
    # may be set by using the SO_RCVBUF socket option
    net.core.rmem_max=4194304

    # Default setting in bytes of the socket "send" buffer which
    # may be set by using the SO_SNDBUF socket option
    net.core.wmem_default=262144

    # Maximum setting in bytes of the socket "send" buffer which
    # may be set by using the SO_SNDBUF socket option
    net.core.wmem_max=1048576

    # Maximum number of allowable concurrent asynchronous I/O requests requests
    fs.aio-max-nr=1048576

    .................................................................

    驗證 /etc/sysctl.conf 文件中配置了每個所需內核參數。然後,在集羣的兩個 Oracle RAC 節點上運行以下命令,以確保每個參數真正生效:

    [[email protected] ~]# sysctl -p 
    net.ipv4.ip_forward = 0
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    kernel.sysrq = 0
    kernel.core_uses_pid = 1
    net.ipv4.tcp_syncookies = 1
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    kernel.shmmax = 68719476736
    kernel.shmall = 4294967296
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    fs.file-max = 6815744
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576
    fs.aio-max-nr = 1048576

     

    /etc/hosts

    我們的 RAC 集羣中的節點的所有機器/IP 地址項。

    .................................................................
    # Do not remove the following line, or various programs
    # that require network functionality will fail.


    127.0.0.1 localhost.localdomain localhost

    # Public Network - (eth0)
    192.168.1.151 racnode1
    192.168.1.152 racnode2

    # Private Interconnect - (eth1)
    192.168.2.151 racnode1-priv
    192.168.2.152 racnode2-priv

    # Public Virtual IP (VIP) addresses - (eth0:1)
    192.168.1.251 racnode1-vip
    192.168.1.252 racnode2-vip

    # Single Client Access Name (SCAN)
    192.168.1.187 racnode-cluster-scan

    # Private Storage Network for Openfiler - (eth1)
    192.168.1.195 openfiler1
    192.168.2.195 openfiler1-priv


    # Miscellaneous Nodes
    192.168.1.1 router
    192.168.1.105 packmule
    192.168.1.106 melody
    192.168.1.121 domo
    192.168.1.122 switch1
    192.168.1.125 oemprod
    192.168.1.245 accesspoint
    .................................................................

     

    /etc/udev/rules.d/55-openiscsi.rules

    udev 用來掛載 iSCSI 卷的規則文件。此文件包含所有用於接收事件的名稱=值對以及處理事件的 SHELL 調出腳本。

    .................................................................                                 
    # /etc/udev/rules.d/55-openiscsi.rules
    KERNEL=="sd*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev.sh %b",
    SYMLINK+="iscsi/%c/part%n"

    .................................................................

    /etc/udev/scripts/iscsidev.sh

    SHELL 調出腳本,用於處理從 udev 規則文件(見上面)傳遞過來的事件,並且用於掛載 iSCSI 卷。

    .................................................................                                 
    #!/bin/sh

    # FILE: /etc/udev/scripts/iscsidev.sh

    BUS=${1}
    HOST=${BUS%%:*}

    [ -e /sys/class/iscsi_host ] || exit 1

    file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*
    /targetname"

    target_name=$(cat ${file})

    # This is not an open-scsi drive
    if [ -z "${target_name}" ]; then
    exit 1
    fi

    # Check if QNAP drive
    check_qnap_target_name=${target_name%%:*}
    if [ $check_qnap_target_name = "iqn.2004-04.com.qnap" ]; then
    target_name=`echo "${target_name%.*}"`
    fi

    echo "${target_name##*.}"

    .................................................................

    18. 安裝並配置 ASMLib 2.0

    應在集羣中的兩個 Oracle RAC 節點上執行本節中的安裝和配置過程。但創建 ASM 磁盤將只需在集羣中的單個節點 (racnode1) 上執行。

    在本節中,我們將安裝並配置 ASMLib 2.0,它是 Oracle 數據庫的自動存儲管理 (ASM) 特性的一個支持庫。本文將使用 ASM 作爲 Oracle Clusterware 文件(OCR 和表決磁盤)、Oracle Database 文件(數據、聯機重做日誌、控制文件、存檔重做日誌)和快速恢復區的共享文件系統和卷管理器。

    自動存儲管理簡化了數據庫的管理工作,有了它,DBA 無需直接管理可能數千個的 Oracle 數據庫文件,而只需管理分配給 Oracle 數據庫的磁盤組。ASM 內置在 Oracle 內核中,既可用於 Oracle 的單實例環境中,也可用於 Oracle 的集羣實例環境中。Oracle 使用的所有文件和目錄將保存在 磁盤組 中 —(本文中爲三個磁盤組)。ASM 在所有可用磁盤驅動器上執行並行負載平衡,以防止熱點問題並最大程度地提高性能,甚至對於數據使用快速變化的模式也是如此。ASMLib 令使用 ASM 的 Oracle 數據庫更加高效,並能夠訪問它當前使用的磁盤組。

    請記住 ASMLib 只是 ASM 軟件的一個支持庫。本指南稍後將 ASM 軟件作爲 Oracle Grid Infrastructure 的一部分來安裝。 從 Oracle Grid Infrastructure 11g 第 2 版 (11.2) 開始,自動存儲管理和 Oracle Clusterware 軟件一起打包到同一個二進制發佈版本中並安裝到同一個主目錄中,這個主目錄稱爲 Grid Infrastructure 主目錄。Oracle Grid Infrastructure 軟件將爲 grid 用戶所擁有。

    那麼,ASM 是否必須使用 ASMLib?完全不是。事實上,有兩種不同方法可在 Linux 上配置 ASM: 

    • 使用 ASMLib I/O 的 ASM:此方法使用 ASMLib 調用在由 ASM 管理的原始 塊設備 上創建所有 Oracle 數據庫文件。由於 ASMLib 使用塊設備,因此該方法不需要原始設備。
    • 使用標準 Linux I/O 的 ASM:此方法不使用 ASMLib。此方法使用標準 Linux I/O 系統調用在 ASM 管理的原始字符設備 上創建所有的 Oracle 數據庫文件。您將需要爲 ASM 使用的所有磁盤分區創建原始設備。

    在本文中,我將使用「使用 ASMLib I/O 的 ASM」方法。Oracle 在 Metalink Note 275315.1 中說明,「所提供的 ASMLib 用於支持對 Linux 磁盤的 ASM I/O,同時不受標準 UNIX I/O API 的限制」。我計劃將來執行幾個測試以確定使用 ASMLib 將會帶來的性能改善。這些性能度量和測試細節超出了本文的範圍,因此將不予討論。

    如果要了解有關 Oracle ASMLib 2.0 的詳細信息,請訪問這裏

    安裝 ASMLib 2.0 程序包

    在本文的前幾個版本中,此時您需要從適用於 Red Hat Enterprise Linux Server 5 的 Oracle ASMLib 下載處下載 ASMLib 2.0 軟件。由於 Oracle Enterprise Linux 中包含了 ASMLib 軟件,此處不再需要進行這一操作(但用戶空間庫除外,它需要單獨下載)。ASMLib 2.0 軟件體系包含下面的軟件包:

    32 位 (x86) 安裝  

    • ASMLib 內核驅動程序
      • oracleasm-x.x.x-x.el5-x.x.x-x.el5.i686.rpm —(用於默認內核)
      • oracleasm-x.x.x-x.el5xen-x.x.x-x.el5.i686.rpm —(用於 xen 內核) 
    • 用戶空間庫
      • oracleasmlib-x.x.x-x.el5.i386.rpm 
    • 驅動程序支持文件
      • oracleasm-support-x.x.x-x.el5.i386.rpm

    64 位 (x86_64) 安裝

     

    • ASMLib 內核驅動程序
      • oracleasm-x.x.x-x.el5-x.x.x-x.el5.x86_64.rpm —(用於默認內核)
      • oracleasm-x.x.x-x.el5xen-x.x.x-x.el5.x86_64.rpm —(用於 xen 內核) 
    • 用戶空間庫
      • oracleasmlib-x.x.x-x.el5.x86_64.rpm 
    • 驅動程序支持文件
      • oracleasm-support-x.x.x-x.el5.x86_64.rpm

    就 Oracle Enterprise Linux 5 來說,默認情況下不安裝 ASMLib 2.0 軟件包。5 號 CD 上有 ASMLib 2.0 內核驅動程序,3 號 CD 上有驅動程序支持文件。用戶空間庫需單獨下載,因爲 Enterprise Linux 不包含該庫。要確定 Oracle ASMLib 軟件包是否已安裝(多數情況下沒有),在兩個 Oracle RAC 節點上執行以下命令:

    [[email protected] ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} 
    (%{ARCH})\n"| grep oracleasm | sort

    如果未安裝 ASMLib 2.0 軟件包,依次加載 Enterprise Linux 3 號 CD 和 5 號 CD 到每個 Oracle RAC 節點上並執行以下命令:

    From Enterprise Linux 5.4 (x86_64) - [CD #3] 
    mount -r /dev/cdrom /media/cdrom cd /media/cdrom/Server
    rpm -Uvh oracleasm-support-2.1.3-1.el5.x86_64.rpm
    cd /
    ejectFrom Enterprise Linux 5.4 (x86_64) - [CD #5]
    mount -r /dev/cdrom /media/cdrom cd /media/cdrom/Server
    rpm -Uvh oracleasm-2.6.18-164.el5-2.0.5-1.el5.x86_64.rpm
    cd /
    eject

    安裝完 ASMLib 軟件包後,在兩個 Oracle RAC 節點上驗證已安裝該軟件:

    [[email protected] ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} 
    (%{ARCH})\n"| grep oracleasm | sort

    oracleasm-2.6.18-164.el5-2.0.5-1.el5 (x86_64)
    oracleasm-support-2.1.3-1.el5 (x86_64)

    下載 Oracle ASMLib 用戶空間庫

    如上節所述,ASMLib 2.0 軟件包含在 Enterprise Linux 中,但用戶空間庫則不然(用戶空間庫也稱做 ASMLib 支持庫)。用戶空間庫是必需的,可在此處免費下載:

    32 位 (x86) 安裝  


    64 位 (x86_64) 安裝  


    將用戶空間庫下載到集羣中的兩個 Oracle RAC 節點後,使用以下命令進行安裝:

    [[email protected] ~]# rpm -Uvh oracleasmlib-2.0.4-1.el5.x86_64.rpm 
    Preparing... ########################################### [100%]
    1:oracleasmlib ########################################### [100%]

    有關如何通過 Unbreakable Linux Network 獲取 ASMLib 支持庫(並非本文必需)的信息,請訪問通過 Unbreakable Linux Network 獲得 Oracle ASMLib

    配置 ASMLib

    現在,您已安裝了用於 Linux 的 ASMLib 程序包,接下來您需要配置並加載 ASM 內核模塊。需要在兩個 Oracle RAC 節點上作爲 root 用戶帳戶執行該任務。

    oracleasm 命令的默認路徑爲 /usr/sbin。以前版本中使用的 /etc/init.d 路徑並未被棄用,但該路徑下的 oracleasm 二進制文件現在一般用於內部命令。如果輸入 oracleasm configure 命令時不帶 -i 標誌,則顯示當前配置。例如,

    [[email protected] ~]# /usr/sbin/oracleasm configure 
    ORACLEASM_ENABLED=false
    ORACLEASM_UID=
    ORACLEASM_GID=
    ORACLEASM_SCANBOOT=true
    ORACLEASM_SCANORDER=""
    ORACLEASM_SCANEXCLUDE=""
    1. 輸入以下命令,以使用 configure 選項運行 oracleasm 初始化腳本:
      [[email protected] ~]# /usr/sbin/oracleasm configure -i 
      Configuring the Oracle ASM library driver.
      This will configure the on-boot properties of the Oracle ASM library driver.
      The following questions will determine whether the driver is loaded on boot
      and what permissions it will have.
      The current values will be shown in brackets ('[]').
      Hitting <ENTER> without typing an answer will keep that current value.
      Ctrl-C will abort.

      Default user to own the driver interface []: grid
      Default group to own the driver interface []: asmadmin
      Start Oracle ASM library driver on boot (y/n) [n]: y
      Scan for Oracle ASM disks on boot (y/n) [y]: y
      Writing Oracle ASM library driver configuration: done

      該腳本完成以下任務: 

      • 創建 /etc/sysconfig/oracleasm 配置文件
      • 創建 /dev/oracleasm 掛載點
      • 掛載 ASMLib 驅動程序文件系統

      : ASMLib 驅動程序文件系統並非常規的文件系統。它只用於自動存儲管理庫與自動存儲管理驅動程序的通訊。

    2. 輸入以下命令以加載 oracleasm 內核模塊:
      [[email protected] ~]# /usr/sbin/oracleasm init 
      Creating /dev/oracleasm mount point: /dev/oracleasm
      Loading module "oracleasm": oracleasm
      Mounting ASMlib driver filesystem: /dev/oracleasm
    3. 對集羣中要安裝 Oracle RAC 的所有節點 (racnode2) 重複此過程。

    爲 Oracle 創建 ASM 磁盤

    創建 ASM 磁盤只需在 RAC 集羣中的一個節點上以 root 用戶帳戶執行。我將在 racnode1 上運行這些命令。在另一個 Oracle RAC 節點上,您將需要執行 scandisk 以識別新卷。該操作完成後,應在兩個 Oracle RAC 節點上運行 oracleasm listdisks 命令以驗證是否創建了所有 ASM 磁盤以及它們是否可用。

    在「在 iSCSI 捲上創建分區」一節中,我們對 ASM 要使用的三個 iSCSI 捲進行了配置(分區)。ASM 將用於存儲 Oracle Clusterware 文件、Oracle 數據庫文件(如聯機重做日誌、數據庫文件、控制文件、存檔重做日誌文件)和快速恢復區。在配置三個 ASM 卷時,使用 udev 創建的本地設備名。

    要使用 iSCSI 目標名到本地設備名映射創建 ASM 磁盤,鍵入以下命令:

    [[email protected] ~]# /usr/sbin/oracleasm createdisk CRSVOL1 /dev/iscsi/crs1/part1 
    Writing disk header: done
    Instantiating disk: done

    [[email protected] ~]# /usr/sbin/oracleasm createdisk DATAVOL1 /dev/iscsi/data1/part1
    Writing disk header: done
    Instantiating disk: done

    [[email protected] ~]# /usr/sbin/oracleasm createdisk FRAVOL1 /dev/iscsi/fra1/part1
    Writing disk header: done
    Instantiating disk: done

    要使磁盤可用於集羣中其他節點 (racnode2),以 root 用戶身份在每個節點上輸入以下命令:

    [[email protected] ~]# /usr/sbin/oracleasm scandisks 
    Reloading disk partitions: done
    Cleaning any stale ASM disks...
    Scanning system for ASM disks...
    Instantiating disk "FRAVOL1"
    Instantiating disk "DATAVOL1"
    Instantiating disk "CRSVOL1"

    現在,我們可以使用以下命令在 RAC 集羣中的兩個節點上以 root 用戶帳戶測試是否成功創建了 ASM 磁盤。此命令指出連接的節點的、標記爲自動存儲管理磁盤的共享磁盤:

    [[email protected] ~]# /usr/sbin/oracleasm listdisks 
    CRSVOL1
    DATAVOL1
    FRAVOL1

    [[email protected] ~]# /usr/sbin/oracleasm listdisks
    CRSVOL1
    DATAVOL1
    FRAVOL1

     


    19. 下載 Oracle RAC 11g 第 2 版軟件

    只需在集羣中的一個節點上執行以下下載過程。

    下一步是從 Oracle 技術網 (OTN) 下載並解壓縮所需的 Oracle 軟件包: 

    : 如果您目前沒有 Oracle OTN 帳戶,那麼您需要創建一個。這是免費帳戶!

    Oracle 提供了一個免費的開發和測試許可。但不提供支持,且該許可不允許用於生產目的。OTN 提供了該許可協議的完整說明。



    32 位 (x86) 安裝

    http://www.oracle.com/technetwork/cn/database/database11g/downloads/112010-linuxsoft-098940-zhs.html

    64 位 (x86_64) 安裝

    http://www.oracle.com/technetwork/cn/database/database11g/downloads/112010-linx8664soft-098700-zhs.html

    您將從 Oracle 下載所需的軟件並將其解壓縮到集羣的一個 Linux 節點(即 racnode1)上。您將從此計算機執行所有的 Oracle 軟件安裝。Oracle 安裝程序會通過遠程訪問 (scp) 將所需軟件包複製到 RAC 配置中的所有其他節點。

    以相應軟件所有者的身份登錄到要執行所有 Oracle 安裝的節點 (racnode1)。例如,以 grid 用戶身份登錄後將 Oracle Grid Infrastructure 軟件下載到 /home/grid/software/oracle 目錄。然後,以 oracle 用戶身份登錄,將 Oracle Database 和 Oracle Examples(可選)軟件下載到 /home/oracle/software/oracle 目錄。

    下載並解壓縮 Oracle 軟件

    下載以下軟件包: 

    • 適用於 Linux 的 Oracle Database 11g 第 2 版 Grid Infrastructure (11.2.0.1.0)
    • 適用於 Linux 的 Oracle Database 11g 第 2 版 (11.2.0.1.0)
    • Oracle Database 11g 第 2 版 Examples(可選)

    所有下載均在同一頁面中提供。

    以 grid 用戶身份解壓縮 Oracle Grid Infrastructure 軟件:

    [[email protected] ~]$ mkdir -p /home/grid/software/oracle 
    [[email protected] ~]$ mv linux.x64_11gR2_grid.zip /home/grid/software/oracle
    [[email protected] ~]$ cd /home/grid/software/oracle
    [[email protected] oracle]$ unzip linux.x64_11gR2_grid.zip

    以 oracle 用戶身份解壓縮 Oracle Database 和 Oracle Examples 軟件:

    [[email protected] ~]$ mkdir -p /home/oracle/software/oracle 
    [[email protected] ~]$ mv linux.x64_11gR2_database_1of2.zip
    /home/oracle/software/oracle

    [[email protected] ~]$ mv linux.x64_11gR2_database_2of2.zip
    /home/oracle/software/oracle

    [[email protected] ~]$ mv linux.x64_11gR2_examples.zip /home/oracle/software/oracle
    [[email protected] ~]$ cd /home/oracle/software/oracle
    [[email protected] oracle]$ unzip linux.x64_11gR2_database_1of2.zip
    [[email protected] oracle]$ unzip linux.x64_11gR2_database_2of2.zip
    [[email protected] oracle]$ unzip linux.x64_11gR2_examples.zip

     


    20. 集羣的 Oracle Grid Infrastructure 的安裝前任務

    在集羣中的兩個 Oracle RAC 節點上執行以下檢查。

    本節包含尚未討論過的 Oracle Grid Infrastructure 的其餘所有安裝前任務。請注意,在運行 Oracle 安裝程序之前不一定要手動運行集羣驗證實用程序 (CVU)。在 Oracle Grid Infrastructure 安裝結束時,CVU 會作爲配置助手過程的一部分自動運行。

    安裝用於 Linux 的 cvuqdisk 程序包

    在兩個 Oracle RAC 節點上安裝操作系統程序包 cvuqdisk。如果沒有 cvuqdisk,集羣驗證實用程序就無法發現共享磁盤,當運行(手動運行或在 Oracle Grid Infrastructure 安裝結束時自動運行)集羣驗證實用程序時,您會收到這樣的錯誤消息:「Package cvuqdisk not installed」。使用適用於您的硬件體系結構(例如,x86_64 或 i386)的 cvuqdisk RPM。

    cvuqdisk RPM 包含在 Oracle Grid Infrastructure 安裝介質上的 rpm 目錄中。對於本文,Oracle Grid Infrastructure 介質已由 grid 用戶解壓縮到 racnode1 節點的 /home/grid/software/oracle/grid 目錄中。

    要安裝 cvuqdisk RPM,執行以下步驟: 

    1. 找到 cvuqdisk RPM 程序包,位於 racnode1 節點中安裝介質的 rpm 目錄下:
      [racnode1]:  /home/grid/software/oracle/grid/rpm/cvuqdisk-1.0.7-1.rpm
    2. 以 grid 用戶帳戶將 cvuqdisk 程序包從 racnode1 複製到 racnode2
      [racnode2]:  /home/grid/software/oracle/grid/rpm/cvuqdisk-1.0.7-1.rpm
    3. 以 root 用戶身份分別登錄到兩個 Oracle RAC 節點:
      [[email protected] rpm]$ su  

      [[email protected] rpm]$ su
    4. 設置環境變量 CVUQDISK_GRP,使其指向作爲 cvuqdisk 的所有者所在的組(本文爲 oinstall):
      [[email protected] rpm]# CVUQDISK_GRP=oinstall; export CVUQDISK_GRP  

      [[email protected] rpm]# CVUQDISK_GRP=oinstall; export CVUQDISK_GRP
    5. 在保存 cvuqdisk RPM 的目錄中,使用以下命令在兩個 Oracle RAC 節點上安裝 cvuqdisk 程序包:
      [[email protected] rpm]# rpm -iv cvuqdisk-1.0.7-1.rpm 
      Preparing packages for installation...
      cvuqdisk-1.0.7-1

      [[email protected] rpm]# rpm -iv cvuqdisk-1.0.7-1.rpm
      Preparing packages for installation...
      cvuqdisk-1.0.7-1

    使用 CVU 驗證是否滿足 Oracle 集羣件要求(可選)

    如本節前面所述,在運行 Oracle 安裝程序之前不一定要運行集羣驗證實用程序。從 Oracle Clusterware 11g 第 2 版開始,Oracle Universal Installer (OUI) 會檢測到不滿足最低安裝要求的情況,並創建 shell 腳本(稱爲修復腳本)以完成尚未完成的系統配置步驟。如果 OUI 發現未完成的任務,它會生成修復腳本 (runfixup.sh)。在 Oracle Grid Infrastructure 安裝過程中,單擊 Fix and Check Again Button 之後,可以運行修復腳本。

    您也可以讓 CVU 在安裝之前生成修復腳本。

    如果您決定親自運行 CVU,請記住要作爲 grid 用戶在將要執行 Oracle 安裝的節點 (racnode1) 上運行。此外,必須爲 grid 用戶配置通過用戶等效性實現的 SSH 連通性。如果您打算使用 OUI 配置 SSH 連接,則 CVU 實用程序會失敗,它沒有機會執行其任何的關鍵檢查並生成修復腳本:

    Checking user equivalence...

    Check: User equivalence for user "grid"
    Node Name Comment
    ------------------------------------ ------------------------
    racnode2 failed
    racnode1 failed
    Result: PRVF-4007 : User equivalence check failed for user "grid"

    ERROR:
    User equivalence unavailable on all the specified nodes
    Verification cannot proceed


    Pre-check for cluster services setup was unsuccessful on all the nodes.

    在滿足了運行 CVU 實用程序的所有前提條件後,可以在安裝之前手動檢查集羣配置,並生成修復腳本以在開始安裝前更改操作系統。

    [[email protected] ~]$  cd /home/grid/software/oracle/grid 
    [[email protected] grid]$ ./runcluvfy.sh stage -pre crsinst -n racnode1,racnode2
    -fixup -verbose

    查看 CVU 報告。 在本文所述配置情況下,應該只發現如下的唯一一個錯誤:

                                       
    Check: Membership of user "grid" in group "dba"
    Node Name User Exists Group Exists User in Group Comment
    ---------------- ------------ ------------ ------------ ----------------
    racnode2 yes yes no failed
    racnode1 yes yes no failed
    Result: Membership check for user "grid" in group "dba" failed

    該檢查失敗的原因是,本指南通過 任務角色劃分 配置創建了以角色分配的組和用戶,而 CVU 不能正確識別這種配置。我們在創建任務角色劃分操作系統權限組、用戶和目錄一節中講述瞭如何創建任務角色劃分配置。CVU 不能識別此類配置,因而假定 grid 用戶始終是 dba 組的成員。可以放心地忽略這個失敗的檢查。CVU 執行的所有其他檢查的結果報告應該爲「passed」,之後才能繼續進行 Oracle Grid Infrastructure 的安裝。



    使用 CVU 驗證硬件和操作系統設置

    接下來要運行的 CVU 檢查將驗證硬件和操作系統設置。同樣,在 racnode1 節點上以具有用戶等效性配置的 grid 用戶帳戶運行以下命令:

    [[email protected] ~]$ cd /home/grid/software/oracle/grid 
    [[email protected] grid]$ ./runcluvfy.sh stage -post hwos -n racnode1,racnode2
    -verbose

    查看 CVU 報告。CVU 執行的所有其他檢查的結果報告應該爲「passed」,之後才能繼續進行 Oracle Grid Infrastructure 的安裝。

    21. 爲集羣安裝 Oracle Grid Infrastructure

    僅在集羣的一個 Oracle RAC 節點 (racnode1) 上執行以下安裝過程。Oracle Universal Installer 將把 Oracle Grid Infrastructure 軟件(Oracle Clusterware 和自動存儲管理)安裝到集羣中的兩個 Oracle RAC 節點。

    現在您已做好準備,可以開始安裝環境的「網格」部分了,該部分包括 Oracle Clusterware 和自動存儲管理。完成以下步驟,在集羣中安裝 Oracle Grid Infrastructure。

    在安裝過程中,如果您對安裝程序要求您執行的操作不甚清楚,可隨時單擊 OUI 頁面上的 Help 按鈕。

    典型安裝與高級安裝

    從 11g 第 2 版開始,Oracle 提供了兩個選項供您安裝 Oracle Grid Infrastructure 軟件:

     

    • 典型安裝

      典型安裝選項是簡化的安裝過程,只需進行最少的手動配置選擇。這個新選項爲用戶(尤其是那些集羣技術新手)提供了一個簡化的集羣安裝過程。典型安裝是讓儘可能多的選項默認採用最佳實踐的建議值。

    • 高級安裝

      高級安裝選項是一個高級過程,需要較高程度的系統知識。該安裝選項使您可以進行特定的配置選擇,包括額外的存儲和網絡選擇、對基於角色的管理權限使用操作系統組身份驗證、與 IPMI 集成,或使用細粒度指定自動存儲管理角色。



    由於本文將使用基於角色的管理權限和細粒度來指定自動存儲管理角色,因此我們將使用「高級安裝」選項。

    配置 SCAN 而不使用 DNS

    對於本文,儘管我說過將手動分配 IP 地址並使用 DNS 方法進行名稱解析(這與 GNS 不同),實際上我不會在任何 DNS 服務器(或 GNS)中定義 SCAN。相反,我將只在每個 Oracle RAC 節點以及任何將連接到數據庫集羣的客戶端的 hosts 文件 ( /etc/hosts) 中定義 SCAN 主機名和 IP 地址。儘管 Oracle 非常不鼓勵這麼做,並且強烈建議使用 GNS 或 DNS 解析方法,但我覺得對 DNS 的配置超出了本文的範圍。本節將提供一種變通方法(這完全是一種非常規的方法),該方法使用 nslookup 二進制文件,用這種方法,在 Oracle Grid Infrastructure 的安裝過程中能夠成功地完成集羣驗證實用程序。請注意,本文所述的這個變通方法只爲簡便起見,不應認爲其可用於生產環境。

    只在 hosts 文件中而不在網格命名服務 (GNS) 或 DNS 中定義 SCAN 是一種無效配置,將導致 Oracle Grid Infrastructure 安裝過程中運行的集羣驗證實用程序失敗:

     

    圖 17:Oracle Grid Infrastructure/CVU 錯誤 —(配置 SCAN 而不使用 DNS)

     

    INFO: Checking Single Client Access Name (SCAN)...
    INFO: Checking name resolution setup for "racnode-cluster-scan"...
    INFO: ERROR:
    INFO: PRVF-4657 : Name resolution setup check for "racnode-cluster-scan" (IP address: 216.24.138.153) failed
    INFO: ERROR:
    INFO: PRVF-4657 : Name resolution setup check for "racnode-cluster-scan" (IP address: 192.168.1.187) failed
    INFO: ERROR:
    INFO: PRVF-4664 : Found inconsistent name resolution entries for SCAN name "racnode-cluster-scan"
    INFO: Verification of SCAN VIP and Listener setup failed


    如果 CVU 只報告了此錯誤,可放心忽略此檢查,單擊 OUI 中的 [Next] 按鈕繼續進行 Oracle Grid Infrastructure 的安裝。在文檔 ID:887471.1My Oracle Support 網站)中對此有記述。

    如果您只在 hosts 文件中定義 SCAN 但卻想讓 CVU 成功完成,只需在兩個 Oracle RAC 節點上以 root 身份對 nslookup 實用程序進行如下修改。

    首先,在兩個 Oracle RAC 節點上將原先的 nslookup 二進制文件重命名爲 nslookup.original

    [[email protected] ~]# mv /usr/bin/nslookup /usr/bin/nslookup.original

    然後,新建一個名爲 /usr/bin/nslookup 的 shell 腳本,在該腳本中用 24.154.1.34 替換主 DNS,用 racnode-cluster-scan 替換 SCAN 主機名,用 192.168.1.187 替換 SCAN IP 地址,如下所示:

    #!/bin/bash

    HOSTNAME=${1}

    if [[ $HOSTNAME = "

    racnode-cluster-scan" ]]; then
    echo "Server: 24.154.1.34"
    echo "Address: 24.154.1.34#53"
    echo "Non-authoritative answer:"
    echo "Name: racnode-cluster-scan"
    echo "Address: 192.168.1.187"
    else
    /usr/bin/nslookup.original $HOSTNAME
    fi

    最後,將新建的 nslookup shell 腳本更改爲可執行腳本:

    [[email protected] ~]# chmod 755 /usr/bin/nslookup
    記住要在兩個 Oracle RAC 節點上執行這些操作。 

    每當 CVU 使用您的 SCAN 主機名調用 nslookup 腳本時,這個新的 nslookup shell 腳本只是回顯您的 SCAN IP 地址,其他情況下則會調用原先的 nslookup 二進制文件。

    現在,在 Oracle Grid Infrastructure 的安裝過程中,當 CVU 嘗試驗證您的 SCAN 時,它就會成功通過:

     

    [[email protected] ~]$ cluvfy comp scan -verbose

    Verifying scan

    Checking Single Client Access Name (SCAN)...
    SCAN VIP name Node Running? ListenerName Port Running?
    ---------------- ------------ --------- ------------ ------ ----------
    racnode-cluster-scan racnode1 true LISTENER 1521 true

    Checking name resolution setup for "racnode-cluster-scan"...
    SCAN Name IP Address Status Comment
    ------------ ------------------------ ------------------------ ----------
    racnode-cluster-scan 192.168.1.187 passed

    Verification of SCAN VIP and Listener setup passed

    Verification of scan was successful.

    ===============================================================================

    [[email protected] ~]$ cluvfy comp scan -verbose

    Verifying scan

    Checking Single Client Access Name (SCAN)...
    SCAN VIP name Node Running? ListenerName Port Running?
    ---------------- ------------ --------- ------------ ------ ----------
    racnode-cluster-scan racnode1 true LISTENER 1521 true

    Checking name resolution setup for "racnode-cluster-scan"...
    SCAN Name IP Address Status Comment
    ------------ ------------------------ ------------------------ ----------
    racnode-cluster-scan 192.168.1.187 passed

    Verification of SCAN VIP and Listener setup passed

    Verification of scan was successful.


    驗證終端 Shell 環境

    在啓動 Oracle Universal Installer 之前,先以 Oracle Grid Infrastructure 軟件所有者的身份(本文爲grid)登錄到 racnode1。接下來,如果您使用遠程客戶端連接到將執行安裝的 Oracle RAC 節點(從一個配置了 X 服務器的工作站通過 SSH 或 Telnet 連接到 racnode1),請根據使用 X 終端登錄遠程系統一節所述來驗證您的 X11 顯示服務器設置。

    安裝 Oracle Grid Infrastructure

    以 grid 用戶身份執行以下任務來安裝 Oracle Grid Infrastructure:

    [[email protected] ~]$ id uid=1100(grid) gid=1000(oinstall) 
    groups=1000(oinstall),1200(asmadmin),1201(asmdba),1202(asmoper)

    [[email protected] ~]$ DISPLAY=<your local workstation>:0.0
    [[email protected] ~]$ export DISPLAY

    [[email protected] ~]$ cd /home/grid/software/oracle/grid
    [[email protected] grid]$ ./runInstaller

     

    屏幕名稱 響應 屏幕截圖
    Select Installation Option 選擇 Install and Configure Grid Infrastructure for a Cluster
    Select Installation Type 選擇 Advanced Installation
    Select Product Languages 爲您的環境進行合適的選擇。
    Grid Plug and Play Information 有關如何配置網格命名服務 (GNS) 的說明超出了本文的範圍。取消選中「Configure GNS」選項。

     

    Cluster Name SCAN Name SCAN Port
    racnode-cluster racnode-cluster-scan 1521

     

    單擊 [Next] 之後,OUI 將嘗試驗證 SCAN 信息:

     

    Cluster Node Information 使用此屏幕將 racnode2 節點添加到集羣中並配置 SSH 連接。

     

    單擊 Add 按鈕,按下表添加 racnode2 及其虛擬 IP 名稱 racnode2-vip

     

    Public Node Name Virtual Host Name
    racnode1 racnode1-vip
    racnode2 racnode2-vip

     

    接下來,單擊 [SSH Connectivity] 按鈕。輸入 grid 用戶的 OS Password,然後單擊 [Setup] 按鈕。這會啓動 SSH Connectivity 配置過程:

     

     

    SSH 配置過程成功完成後,確認該對話框。

     

    單擊 [Test] 按鈕結束該屏幕並驗證無口令的 SSH 連接。
    Specify Network Interface Usage 指定用於「Public」網絡和「Private」網絡的網絡接口。進行所需更改以與下表中各值保持一致:

     

    Interface Name Subnet Interface Type
    eth0 192.168.1.0 Public
    eth1 192.168.2.0 Private
    Storage Option Information 選擇 Automatic Storage Management (ASM)
    Create ASM Disk Group 根據下表中的值創建一個 ASM 磁盤組,將用於保存 Oracle Clusterware 文件:

     

    Disk Group Name Redundancy Disk Path
    CRS External ORCL:CRSVOL1
    Specify ASM Password 對於本文,我選擇 Use same passwords for these accounts
    Failure Isolation Support 配置 Intelligent Platform Management Interface (IPMI) 超出了本文的範圍。選擇 Do not use Intelligent Platform Management Interface (IPMI)
    Privileged Operating System Groups 本文通過任務角色劃分配置來使用基於角色的管理權限和細粒度來指定自動存儲管理角色。

     

    進行所需更改以與下表中各值保持一致:

     

    OSDBA for ASM OSOPER for ASM OSASM
    asmdba asmoper asmadmin
    Specify Installation Location 爲 Oracle Grid Infrastructure 安裝設置 Oracle Base ( $ORACLE_BASE) 和 Software Location ( $ORACLE_HOME):
       Oracle Base: /u01/app/grid 
       Software Location: /u01/app/11.2.0/grid
    Create Inventory 由於這是該主機上的第一次安裝,您需要創建 Oracle 清單目錄。使用 OUI 提供的默認值:
       Inventory Directory: /u01/app/oraInventory 
       oraInventory Group Name: oinstall
    Prerequisite Checks 安裝程序將執行一系列的檢查以確定這兩個 Oracle RAC 節點是否滿足安裝和配置 Oracle Clusterware 和自動存儲管理軟件的最低要求。

     

    從 Oracle Clusterware 11g 第 2 版 (11.2) 開始,如果任何檢查失敗,安裝程序 (OUI) 將創建 shell 腳本程序(稱爲修復腳本)以解決許多不滿足系統配置要求之問題。如果 OUI 檢測到標記爲「fixable」的不滿足要求之任務,您可通過單擊 [Fix & Check Again] 按鈕生成修復腳本來輕鬆解決這一問題。

     

    修復腳本是在安裝期間生成的。安裝程序將提示您以 root 身份在一個單獨的終端會話中運行該腳本。當您運行該腳本時,它會將內核值提高到所需最小值,如有必要,會完成其他操作系統配置任務。

     

    如果通過了所有的必備條件檢查(我的安裝就是這樣的情況),OUI 繼續轉到 Summary 屏幕。
    Summary 單擊 [Finish] 開始安裝。
    Setup 安裝程序在兩個 Oracle RAC 節點上執行 Oracle Grid Infrastructure 安裝過程。
    Execute Configuration scripts 安裝完成後,將提示您運行/u01/app/oraInventory/orainstRoot.sh 和/u01/app/11.2.0/grid/root.sh 腳本。以 root 用戶帳戶在集羣的兩個 Oracle RAC 節點(從執行安裝的節點開始)上打開一個新的控制檯窗口。

     

    在 RAC 集羣的兩個節點上運行 orainstRoot.sh 腳本:
    [[email protected] ~]# /u01/app/oraInventory/orainstRoot.sh  [[email protected] ~]# /u01/app/oraInventory/orainstRoot.sh

     

    在集羣中兩個 Oracle RAC 節點(從執行安裝的節點開始)上的同一個新控制檯窗口中,仍以 root 用戶帳戶登錄。在 RAC 集羣中的兩個節點上運行 root.sh 腳本(從執行安裝的節點開始,每次一個)。
    [[email protected] ~]# /u01/app/11.2.0/grid/root.sh  [[email protected] ~]# /u01/app/11.2.0/grid/root.sh

     

    root.sh 腳本的運行可能需要幾分鐘。在最後一個節點上運行root.sh 時,您將收到類似以下的輸出,指示安裝成功:
    ...
    The inventory pointer is located at /etc/oraInst.loc
    The inventory is located at /u01/app/oraInventory
    'UpdateNodeList' was successful.

     

    返回到 OUI,確認「Execute Configuration scripts」對話框窗口。
    Configure Oracle Grid Infrastructure for a Cluster 安裝程序將運行 Oracle 網絡服務 (NETCA)、自動存儲管理 (ASMCA) 和 Oracle 專用互連 (VIPCA) 的配置助手。OUI 執行的最後一步是運行集羣驗證實用程序 (CVU)。如果配置助手和 CVU 運行成功,可單擊 [Next] 然後單擊 [Close] 退出 OUI。

     

    本節早前所述,如果只在 hosts 文件 ( /etc/hosts) 中配置 SCAN,而不在網格命名服務 (GNS) 中配置,也不使用 DNS 來手動配置,則該配置會被視爲無效配置,這將導致集羣驗證實用程序失敗。

     

    如果 CVU 只報告了此錯誤,可放心忽略此檢查並繼續:單擊 [Next] 按鈕然後單擊 [Close] 按鈕退出 OUI。在文檔 ID:887471.1My Oracle Support 網站)中對此有記述。

     

    如果您只在 hosts 文件中定義 SCAN 但卻想讓 CVU 成功完成,不要在 OUI 中單擊 [Next] 按鈕來繞過該錯誤。相反,要按照配置 SCAN 而不使用 DNS 一節中的說明來修改 nslookup 實用程序。在完成該節所述步驟後,返回到 OUI 中,單擊 [Retry] 按鈕。現在 CVU 會成功完成,不報告錯誤了。單擊 [Next],然後單擊 [Close] 退出 OUI。
    Finish 在安裝結束時,單擊 [Close] 按鈕退出 OUI。

    警告:安裝完成後,不要在 Oracle Clusterware 還在運行時手動刪除或通過運行相應 cron 作業來刪除/tmp/.oracle 或 /var/tmp/.oracle 或集羣件的文件。如果刪除這些文件,則 Oracle Clusterware 可能遭遇中斷掛起,會出現錯誤 CRS-0184:Cannot communicate with the CRS daemon。

     


    22. 集羣的 Oracle Grid Infrastructure 的安裝後任務

    在集羣中的兩個 Oracle RAC 節點上執行以下安裝後過程。

    驗證 Oracle Clusterware 安裝

    安裝 Oracle Grid Infrastructure 後,可以運行幾個測試來驗證安裝是否成功。以 grid 用戶身份在 RAC 集羣的兩個節點上運行以下命令。

    檢查 CRS 狀態 
    [[email protected] ~]$ crsctl check crs 
    CRS-4638: Oracle High Availability Services is online
    CRS-4537: Cluster Ready Services is online
    CRS-4529: Cluster Synchronization Services is online
    CRS-4533: Event Manager is online
    檢查 Clusterware 資源 

    注:在 Oracle Clusterware 11g 第 2 版 (11.2) 中不再使用 crs_stat 命令。

    [[email protected] ~]$ crs_stat -t -v
    Name Type R/RA F/FT Target State Host
    ----------------------------------------------------------------------
    ora.CRS.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
    ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
    ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
    ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
    ora.eons ora.eons.type 0/3 0/ ONLINE ONLINE racnode1
    ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
    ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
    ora.oc4j ora.oc4j.type 0/5 0/0 OFFLINE OFFLINE
    ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
    ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
    ora....E1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
    ora....de1.gsd application 0/5 0/0 OFFLINE OFFLINE
    ora....de1.ons application 0/3 0/0 ONLINE ONLINE racnode1
    ora....de1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
    ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
    ora....E2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
    ora....de2.gsd application 0/5 0/0 OFFLINE OFFLINE
    ora....de2.ons application 0/3 0/0 ONLINE ONLINE racnode2
    ora....de2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
    ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE racnode1
    ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
    檢查集羣節點
    [[email protected] ~]$ olsnodes -n 
    racnode1 1
    racnode2 2
    檢查兩個節點上的 Oracle TNS 監聽器進程
    [[email protected] ~]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | 
    awk '{print $9}'

    LISTENER_SCAN1

    LISTENER
    [[email protected] ~]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' |
    awk '{print $9}'

    LISTENER
    確認針對 Oracle Clusterware 文件的 Oracle ASM 功能

    如果在 Oracle ASM 上安裝了 OCR 和表決磁盤文件,則以 Grid Infrastructure 安裝所有者的身份,使用下面的命令語法來確認當前正在運行已安裝的 Oracle ASM:

    [[email protected] ~]$ srvctl status asm -a 
    ASM is running on racnode1,racnode2
    ASM is enabled.
    檢查 Oracle 集羣註冊表 (OCR)
    [[email protected] ~]$ ocrcheck 
    Status of Oracle Cluster Registry is as follows :
    Version : 3
    Total space (kbytes) : 262120
    Used space (kbytes) : 2404
    Available space (kbytes) : 259716
    ID : 1259866904
    Device/File Name : +CRS
    Device/File integrity check succeeded

    Device/File not configured

    Device/File not configured

    Device/File not configured

    Device/File not configured

    Cluster registry integrity check succeeded

    Logical corruption check bypassed due to non-privileged user
    檢查表決磁盤
    [[email protected] ~]$ crsctl query css votedisk 
    ## STATE File Universal Id File Name Disk group
    -- ----- ----------------- --------- ---------
    1. ONLINE 4cbbd0de4c694f50bfd3857ebd8ad8c4 (ORCL:CRSVOL1) [CRS]
    Located 1 voting disk(s).


    注:要管理 Oracle ASM 或 Oracle Net 11g 第 2 版 (11.2) 或更高安裝版本,請使用集羣的 Oracle Grid Infrastructure 主目錄(網格主目錄)中的 srvctl 程序。當我們安裝 Oracle Real Application Clusters(Oracle 數據庫軟件)時,不能使用數據庫主目錄下的 srvctl 程序來管理 Oracle Grid Infrastructure 主目錄中的 Oracle ASM 或 Oracle Net。

    表決磁盤管理

    在以前的版本中,我們強烈建議在安裝 Oracle Clusterware 軟件之後使用 dd 命令備份表決磁盤。在 Oracle Clusterware 11.2 以及更高版本中,不再支持使用 dd 命令來備份和恢復表決磁盤,因而再使用該命令來備份和恢復可能導致丟失表決磁盤數據。

    在 Oracle Clusterware 11g 第 2 版中不再需要備份表決磁盤。當配置的任何部分發生更改時,會在 OCR 中自動備份表決磁盤數據,並將表決磁盤數據自動恢復到任何添加的表決磁盤中。

    要了解更多有關管理表決磁盤、Oracle 集羣註冊表 (OCR) 和 Oracle 本地註冊表 (OLR) 的信息,請參閱Oracle Clusterware 管理和部署指南 11g 第 2 版 (11.2)

    備份 root.sh 腳本

    Oracle 建議您在完成安裝後備份 root.sh 腳本。如果您在同一 Oracle 主目錄下安裝其他產品,則安裝程序在安裝過程中會更新現有 root.sh 腳本的內容。如果您需要原先 root.sh 腳本中包含的信息,可通過 root.sh 文件副本進行恢復。

    以 root 身份在兩個 Oracle RAC 節點上備份 root.sh 文件:

    [[email protected] ~]# cd /u01/app/11.2.0/grid 
    [[email protected] grid]# cp root.sh root.sh.racnode1.AFTER_INSTALL_NOV-20-2009

    [[email protected] ~]# cd /u01/app/11.2.0/grid
    [[email protected] grid]# cp root.sh root.sh.racnode2.AFTER_INSTALL_NOV-20-2009

    安裝集羣運行狀況管理軟件(可選)

    爲了解決故障診斷方面的問題,如果您當前使用的是 Linux 內核 2.6.9 或更高版本,Oracle 建議您安裝Instantaneous Problem Detection OS Tool (IPD/OS)。編寫本文時,我們使用的是 Oracle Enterprise Linux 5 Update 4,它使用 2.6.18 內核:

    [[email protected] ~]# uname -a 
    Linux racnode1 2.6.18-164.el5 #1 SMP Thu Sep 3 04:15:13 EDT 2009
    x86_64 x86_64 x86_64 GNU/Linux

    如果當前使用的 Linux 內核是 2.6.9 之前的版本,則可使用 OS Watcher and RACDDT,該軟件可從 My Oracle Support 網站(以前的 Metalink)獲取。

    IPD/OS 工具用於檢測和分析有關操作系統和集羣資源的性能降低和故障的狀況。對於運行 Oracle Clusterware、Oracle ASM 和 Oracle RAC 的集羣中出現的許多問題(如節點逐出),該工具可給出更好的解釋。該工具不斷跟蹤每個節點、進程和設備級的操作系統資源消耗情況。它收集並分析整個集羣的數據。在實時模式下,達到閾值後,會向操作者顯示警報。爲了進行根本原因分析,可以重放歷史數據以瞭解故障當時所發生的情況。

    有關安裝和配置 IPD/OS 工具的說明超出了本文範圍,在此不對其進行討論。您可在以下 URL 下載 IPD/OS 工具及隨附的詳細安裝配置指南:

    http://www.oracle.com/technetwork/cn/database/database11g/ipd-download-homepage-087562-zhs.html

     


    23. 爲數據和快速恢復區創建 ASM 磁盤組

    以 grid 用戶身份僅在集羣中的一個節點 (racnode1) 上運行 ASM Configuration Assistant (asmca) 以創建其他的 ASM 磁盤組,這些磁盤組將用於創建集羣化數據庫。

    在安裝 Oracle Grid Infrastructure 時,我們配置了一個名爲 +CRS 的 ASM 磁盤組,用於存儲 Oracle Clusterware 文件(OCR 和表決磁盤)。

    在本節中,我們將使用 ASM Configuration Assistant ( asmca) 再創建兩個 ASM 磁盤組。稍後本指南在創建集羣化數據庫時將使用這些新的 ASM 磁盤組。

    第一個 ASM 磁盤組將命名爲 +RACDB_DATA,用於存儲所有 Oracle 物理數據庫文件(數據、聯機重做日誌、控制文件、存檔重做日誌)。另一個 ASM 磁盤組將用於名爲 +FRA 的快速恢復區。

    驗證終端 Shell 環境

    啓動 ASM Configuration Assistant 之前,先作爲 Oracle Grid Infrastructure 軟件的所有者(本文爲grid)登錄到 racnode1。接下來,如果您使用遠程客戶端連接到將執行安裝的 Oracle RAC 節點(從一個配置了 X 服務器的工作站通過 SSH 或 Telnet 連接到 racnode1),請根據使用 X 終端登錄遠程系統一節所述來驗證您的 X11 顯示服務器設置。

    使用 ASMCA 創建其他 ASM 磁盤組

    以 grid 用戶身份執行以下任務來創建另外兩個 ASM 磁盤組:

    [[email protected] ~]$ asmca &

     

    屏幕名稱 響應 屏幕截圖
    Disk Groups 在 Disk Groups 選項卡中,單擊 Create 按鈕。
    Create Disk Group Create Disk Group 對話框應顯示我們在本指南前面創建的兩個 ASMLib 卷。

     

    如果我們在本文前面創建的 ASMLib 卷在 Select Member Disks 窗口中不作爲 eligible 而顯示(ORCL:DATAVOL1 和 ORCL:FRAVOL1),則單擊 Change Disk Discovery Path 按鈕並輸入 ORCL:*

     

    當創建「數據」ASM 磁盤組時,對於 Disk Group Name 使用RACDB_DATA。在 Redundancy 部分,選擇 External (none)。最後,在 Select Member Disks 部分,選中 ASMLib 卷 ORCL:DATAVOL1

     

    在確認此對話框中所有值均正確後,單擊 [OK] 按鈕。
    Disk Groups 創建了第一個 ASM 磁盤後,將返回到最初的對話框。再次單擊 Create 按鈕,創建第二個 ASM 磁盤組。
    Create Disk Group Create Disk Group 現在應顯示剩下的最後一個 ASMLib 卷。

     

    當創建「快速恢復區」磁盤組時,對於 Disk Group Name 使用 FRA。在 Redundancy 部分,選擇 External (none)。最後,在 Select Member Disks 部分,選中 ASMLib 卷 ORCL:FRAVOL1

     

    在確認此對話框中所有值均正確後,單擊 [OK] 按鈕。
    Disk Groups 單擊 [Exit] 按鈕退出 ASM Configuration Assistant。

     


    24. 在 Oracle Real Application Clusters 中安裝 Oracle Database 11g

    僅在集羣中的一個 Oracle RAC 節點 (racnode1) 上執行以下 Oracle Database 軟件安裝過程!Oracle Universal Installer 會通過 SSH 將 Oracle Database 軟件安裝到集羣中的兩個 Oracle RAC 節點。

    現在 Grid Infrastructure 軟件已可以使用,您可以在集羣中的一個節點 ( racnode1) 上以 oracle 用戶身份安裝 Oracle Database 軟件。在安裝過程中,OUI 會將二進制文件從此節點複製集羣中的所有其他節點上。

    就本指南而言,我們在安裝 Oracle Database 軟件時將不使用「Create Database」選項。在本指南稍後,我們將在完成所有安裝任務之後使用 Database Configuration Assistant (DBCA) 創建集羣化數據庫。

    驗證終端 Shell 環境

    在啓動 Oracle Universal Installer (OUI) 之前,先以 Oracle Database 軟件所有者的身份(本文爲oracle)登錄到 racnode1。接下來,如果您使用遠程客戶端連接到將執行安裝的 Oracle RAC 節點(從一個配置了 X 服務器的工作站通過 SSH 或 Telnet 連接到 racnode1),請根據使用 X 終端登錄遠程系統一節所述來驗證您的 X11 顯示服務器設置。

    安裝 Oracle Database 11g 第 2 版軟件

    以 oracle 用戶身份執行以下任務以安裝 Oracle Database 軟件:

    [[email protected] ~]$ id uid=1101(oracle) 
    gid=1000(oinstall)
    groups=1000(oinstall),1201(asmdba),1300(dba),1301(oper)

    [[email protected] ~]$ DISPLAY=<your local workstation>:0.0
    [[email protected] ~]$ export DISPLAY

    [[email protected] ~]$ cd /home/oracle/software/oracle/database
    [[email protected] database]$ ./runInstaller

     

    屏幕名稱 響應 屏幕截圖
    Configure Security Updates 就本文而言,取消選中安全更新複選框,然後單擊 [Next] 按鈕繼續。出現警告對話框時(該對話框指示您尚未提供電子郵件地址),單擊[Yes] 按鈕確認。
    Installation Option 選擇 Install database software only
    Grid Options 選擇 Real Application Clusters database installation 單選按鈕(此爲默認選擇),確保選中 Node Name 窗口中的兩個 Oracle RAC 節點。

     

    接下來,單擊 [SSH Connectivity] 按鈕。輸入 oracle 用戶的 OS Password,然後單擊 [Setup] 按鈕。這會啓動 SSH Connectivity 配置過程:

     

     

    SSH 配置過程成功完成後,確認該對話框。

     

    單擊 [Test] 按鈕結束該屏幕並驗證無口令的 SSH 連接。
    Product Languages 爲您的環境進行合適的選擇。
    Database Edition 選擇 Enterprise Edition
    Installation Location 指定 Oracle 基目錄和軟件位置 (Oracle_home),如下所示:
       Oracle Base/u01/app/oracle 
       Software Location/u01/app/oracle/product/11.2.0/dbhome_1
    Operating System Groups 分別爲 SYSDBA 和 SYSOPER 權限選擇操作系統組:
       Database Administrator (OSDBA) Group: dba 
       Database Operator (OSOPER) Group: oper
    Prerequisite Checks 安裝程序將執行一系列的檢查以確定兩個 Oracle RAC 節點是否滿足安裝和配置 Oracle Database 軟件的最低要求。

     

    從 11g 第 2 版 (11.2) 開始,如果任何檢查失敗,安裝程序 (OUI) 將創建 shell 腳本程序(稱爲修復腳本)以解決許多不滿足系統配置要求的問題。如果 OUI 檢測到標記爲「fixable」的不滿足要求之任務,您可通過單擊 [Fix & Check Again] 按鈕生成修復腳本來輕鬆解決這一問題。

     

    修復腳本是在安裝期間生成的。安裝程序將提示您以 root 身份在一個單獨的終端會話中運行該腳本。當您運行該腳本時,它會將內核值提高到所需最小值,如有必要,會完成其他操作系統配置任務。

     

    如果通過了所有的必備條件檢查(我的安裝就是這樣的情況),OUI 繼續轉到 Summary 屏幕。
    Summary 單擊 [Finish] 開始安裝。
    Install Product 安裝程序在兩個 Oracle RAC 節點上執行 Oracle Database 軟件安裝過程。
    Execute Configuration scripts 安裝完成後,將提示您在兩個 Oracle RAC 節點上運行/u01/app/oracle/product/11.2.0/dbhome_1/root.sh 腳本。以 root 用戶帳戶在集羣的兩個 Oracle RAC 節點(從執行安裝的節點開始)上打開一個新的控制檯窗口。

     

    在 RAC 集羣的所有節點上運行 root.sh 腳本。
    [[email protected] ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh  [[email protected] ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh

     

    返回到 OUI,確認「Execute Configuration scripts」對話框窗口。
    Finish 在安裝結束時,單擊 [Close] 按鈕退出 OUI。

     


    25. 安裝 Oracle Database 11g Examples(以前的隨附 CD)

    僅在集羣中的一個 Oracle RAC 節點 (racnode1) 上執行以下 Oracle Database 11g Examples 軟件安裝過程!Oracle Universal Installer 會通過 SSH 將 Oracle Database Examples 軟件安裝到集羣中的兩個 Oracle RAC 節點。

    至此已安裝了 Oracle Database 11g 軟件,您可以選擇安裝 Oracle Database 11g Examples。和 Oracle Database 軟件的安裝一樣,以 oracle 用戶身份只在集羣的一個節點 ( racnode1) 上安裝 Examples 軟件。在安裝過程中,OUI 會將二進制文件從此節點複製集羣中的所有其他節點上。

    驗證終端 Shell 環境

    在啓動 Oracle Universal Installer (OUI) 之前,先以 Oracle Database 軟件所有者的身份(本文爲oracle)登錄到 racnode1。接下來,如果您使用遠程客戶端連接到將執行安裝的 Oracle RAC 節點(從一個配置了 X 服務器的工作站通過 SSH 或 Telnet 連接到 racnode1),請根據使用 X 終端登錄遠程系統一節所述來驗證您的 X11 顯示服務器設置。

    安裝 Oracle Database 11g 第 2 版 Examples

    以 oracle 用戶身份執行以下任務以安裝 Oracle Database Examples:

    [[email protected] ~]$ cd /home/oracle/software/oracle/examples 
    [[email protected] examples]$ ./runInstaller

     

    屏幕名稱 響應 屏幕截圖
    Installation Location 指定 Oracle 基目錄和軟件位置 (Oracle_home),如下所示:
       Oracle Base/u01/app/oracle 
       Software Location/u01/app/oracle/product/11.2.0/dbhome_1
    Prerequisite Checks 安裝程序將執行一系列的檢查以確定兩個 Oracle RAC 節點是否滿足安裝和配置 Oracle Database Examples 軟件的最低要求。

     

    從 11g 第 2 版 (11.2) 開始,如果任何檢查失敗,安裝程序 (OUI) 將創建 shell 腳本程序(稱爲修復腳本)以解決許多不滿足系統配置要求的問題。如果 OUI 檢測到標記爲「fixable」的不滿足要求之任務,您可通過單擊 [Fix & Check Again] 按鈕生成修復腳本來輕鬆解決這一問題。

     

    修復腳本是在安裝期間生成的。安裝程序將提示您以 root 身份在一個單獨的終端會話中運行該腳本。當您運行該腳本時,它會將內核值提高到所需最小值,如有必要,會完成其他操作系統配置任務。

     

    如果通過了所有的必備條件檢查(我的安裝就是這樣的情況),OUI 繼續轉到 Summary 屏幕。
    Summary 單擊 [Finish] 開始安裝。
    Install Product 安裝程序在兩個 Oracle RAC 節點上執行 Oracle Database Examples 軟件安裝過程。
    Finish 在安裝結束時,單擊 [Close] 按鈕退出 OUI。

     


    26. 創建 Oracle 集羣數據庫

    僅應在集羣的一個 Oracle RAC 節點 (racnode1) 上執行數據庫創建過程。

    我們將使用 Oracle Database Configuration Assistant (DBCA) 創建集羣化數據庫。

    在執行 DBCA 前,確保爲 $ORACLE_BASE/product/11.2.0/dbhome_1 環境正確設置了$ORACLE_HOME 和 $PATH 環境變量。第 13 節中講述瞭如何在 oracle 用戶帳戶的登錄腳本中設置環境變量。

    在開始創建集羣化數據庫之前,還應確保現已安裝的所有服務(Oracle TNS 監聽器、Oracle Clusterware 進程等)正在運行。

    [[email protected] ~]$ su - grid -c "crs_stat -t -v" 
    Password: *********
    Name Type R/RA F/FT Target State Host
    ----------------------------------------------------------------------
    ora.CRS.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
    ora.FRA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
    ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
    ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
    ora....DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
    ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
    ora.eons ora.eons.type 0/3 0/ ONLINE ONLINE racnode1
    ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
    ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
    ora.oc4j ora.oc4j.type 0/5 0/0 OFFLINE OFFLINE
    ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
    ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
    ora....E1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
    ora....de1.gsd application 0/5 0/0 OFFLINE OFFLINE
    ora....de1.ons application 0/3 0/0 ONLINE ONLINE racnode1
    ora....de1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
    ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
    ora....E2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
    ora....de2.gsd application 0/5 0/0 OFFLINE OFFLINE
    ora....de2.ons application 0/3 0/0 ONLINE ONLINE racnode2
    ora....de2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
    ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE racnode1
    ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1

    驗證終端 Shell 環境

    在啓動 Database Configuration Assistant (DBCA) 之前,先以 Oracle Database 軟件所有者的身份(本文爲 oracle)登錄到 racnode1。接下來,如果您使用遠程客戶端連接到將執行安裝的 Oracle RAC 節點(從一個配置了 X 服務器的工作站通過 SSH 或 Telnet 連接到 racnode1),請根據使用 X 終端登錄遠程系統一節所述來驗證您的 X11 顯示服務器設置。

    創建集羣化數據庫

    要開始數據庫創建過程,以 oracle 用戶身份運行以下命令:

    [[email protected] ~]$ dbca &

     

    屏幕名稱 響應 屏幕截圖
    Welcome 屏幕 選擇 Oracle Real Application Clusters database
    Operations 選擇 Create a Database
    Database Templates 選擇 Custom Database
    Database Identification 集羣數據庫配置。 
       Configuration Type: Admin-Managed

     

    數據庫命名。 
       Global Database Name:racdb.idevelopment.info 
       SID Prefix: racdb

     

    注:對於數據庫域,我使用了 idevelopment.info。您可以使用任何數據庫域請記住,此域不必爲有效的 DNS 域。

    節點選擇。 
    單擊 [Select All] 按鈕選擇所有服務器:racnode1 和racnode2

    Management Options 保留默認選項 Configure Enterprise Manager / Configure Database Control for local management
    Database Credentials 我選擇了 Use the Same Administrative Password for All Accounts。輸入口令(兩次)並確保此口令不是以數字開頭。
    Database File Locations 指定數據庫文件的存儲類型和存儲位置。 
       Storage Type: Automatic Storage Management (ASM) 
       Storage Locations: Use Oracle-Managed Files 
         Database Area: +RACDB_DATA
    Specify ASMSNMP Password 指定 ASM 實例的 ASMSNMP 口令。
    Recovery Configuration 選中 Specify Flash Recovery Area 選項。

     

    對於 Fast Recovery Area,單擊 [Browse] 按鈕並選擇磁盤組名 +FRA

     

    我使用的磁盤組大小約爲 33GB。定義快速恢復區大小時,用整個卷的大小減去其 10%(用於開銷)— (33-10%=30 GB)。我使用了 30 GB ( 30413 MB) 的 Fast Recovery Area Size
    Database Content 我對所有數據庫組件(和目標表空間)保留其默認設置,但選擇 Sample Schemas 也完全可以。自從我們安裝了 Oracle Database 11g Examples,就可以使用該選項了。
    Initialization Parameters 根據您的環境更改任意參數。我保留了所有這些參數的默認設置。
    Database Storage 根據您的環境更改任意參數。我保留了所有這些參數的默認設置。
    Creation Options 保留默認選項 Create Database。我還始終選擇 Generate Database Creation Scripts。單擊 Finish 啓動數據庫創建過程。確認數據庫創建報告和腳本生成對話框後,開始創建數據庫。

    在「Summary」屏幕上單擊 OK

    End of Database Creation 在數據庫創建結束時,退出 DBCA。


    完成 DBCA 後,您就啓動了一個功能完善的 Oracle RAC 集羣!

    驗證集羣化數據庫已開啓

    [[email protected] ~]$ su - grid -c "crsctl status resource -w 
    \"TYPE co 'ora'\" -t"

    Password: *********
    --------------------------------------------------------------------------------
    NAME TARGET STATE SERVER STATE_DETAILS
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.CRS.dg
    ONLINE ONLINE racnode1
    ONLINE ONLINE racnode2
    ora.FRA.dg
    ONLINE ONLINE racnode1
    ONLINE ONLINE racnode2
    ora.LISTENER.lsnr
    ONLINE ONLINE racnode1
    ONLINE ONLINE racnode2
    ora.RACDB_DATA.dg
    ONLINE ONLINE racnode1
    ONLINE ONLINE racnode2
    ora.asm
    ONLINE ONLINE racnode1 Started
    ONLINE ONLINE racnode2 Started
    ora.eons
    ONLINE ONLINE racnode1
    ONLINE ONLINE racnode2
    ora.gsd
    OFFLINE OFFLINE racnode1
    OFFLINE OFFLINE racnode2
    ora.net1.network
    ONLINE ONLINE racnode1
    ONLINE ONLINE racnode2
    ora.ons
    ONLINE ONLINE racnode1
    ONLINE ONLINE racnode2
    ora.registry.acfs
    ONLINE ONLINE racnode1
    ONLINE ONLINE racnode2
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.LISTENER_SCAN1.lsnr
    1 ONLINE ONLINE racnode1
    ora.oc4j
    1 OFFLINE OFFLINE
    ora.racdb.db
    1 ONLINE ONLINE racnode1 Open
    2 ONLINE ONLINE racnode2 Open

    ora.racnode1.vip
    1 ONLINE ONLINE racnode1
    ora.racnode2.vip
    1 ONLINE ONLINE racnode2
    ora.scan1.vip
    1 ONLINE ONLINE racnode1

    Oracle Enterprise Manager

    如果您配置了 Oracle Enterprise Manager (Database Control),可以用它查看數據庫的配置和當前狀態。

    本示例的 URL 爲:https://racnode1:1158/em

    [[email protected] ~]$ emctl status dbconsole 
    Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
    Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
    https://racnode1:1158/em/console/aboutApplication
    Oracle Enterprise Manager 11g is running.
    ------------------------------------------------------------------
    Logs are generated in directory
    /u01/app/oracle/product/11.2.0/dbhome_1/racnode1_racdb/sysman/log

     

    圖 18:Oracle Enterprise Manager —(數據庫控制檯)

     


    27. 數據庫創建後任務(可選)

    爲了增強可用性和數據庫管理,本節提供幾個可在新的 Oracle 11g 上執行的可選任務。

    重新編譯無效對象

    運行 utlrp.sql 腳本立即重新編譯所有無效的 PL/SQL 程序包,而不是在首次訪問它們時再重新編譯。這是個可選步驟,但建議您選擇該步驟。

    [[email protected] ~]$ sqlplus / as sysdba 
    SQL> @?/rdbms/admin/utlrp.sql

    在 RAC 環境中啓用存檔日誌

    無論是單個實例還是集羣化數據庫,Oracle 都會跟蹤對數據庫塊的所有更改並記錄到聯機重做日誌文件 中。在 Oracle RAC 環境中,每個實例將具有自己的聯機重做日誌文件集,稱爲線程。每個 Oracle 實例將以循環方式使用其聯機重做日誌組。一個聯機重做日誌填滿之後,Oracle 將轉至下一個聯機重做日誌。如果數據庫處於「存檔日誌模式」,Oracle 將創建該聯機重做日誌的一個副本,然後再對其進行重用。一個線程至少必須包含兩個聯機重做日誌(或聯機重做日誌組)。對於單個實例的配置也同樣如此。單個實例至少必須包含兩個聯機重做日誌(或聯機重做日誌組)。

    聯機重做日誌文件的大小完全獨立於另一個實例的重做日誌大小。儘管在大多數配置中該大小是相同的,但是該大小可能會隨每個節點的負載和備份/恢復注意事項而異。還值得一提的是,每個實例都具有對自己的聯機重做日誌文件的獨佔式寫訪問權限。但是在正確配置的 RAC 環境中,如果某個實例異常中斷,每個實例都可以讀取該實例的當前聯機重做日誌文件以執行實例恢復。因此,需要將聯機重做日誌置於一個共享存儲設備上(就像數據庫文件一樣)。

    如上文所述,Oracle 以循環方式寫入其聯機重做日誌文件。當前的聯機重做日誌填滿之後,Oracle 將轉至下一個聯機重做日誌。爲方便進行介質恢復,Oracle 允許 DBA 將數據庫置於「存檔日誌模式」,以在聯機重做日誌填滿後(並且得到重用之前)創建它的副本。該過程稱爲存檔。

    利用 Database Configuration Assistant (DBCA),用戶可以將一個新數據庫配置爲存檔日誌模式,但是大多數 DBA 在最初創建數據庫期間選擇跳過該選項。在這種情況下,數據庫沒有處於存檔日誌模式,只需將數據庫置於存檔日誌模式。但是請注意,這將需要短暫的數據庫中斷。在 Oracle RAC 配置的一個節點上,執行以下任務將支持 RAC 的數據庫置於存檔日誌模式。在本文中,我將使用運行 racdb1 實例的racnode1 節點:

     

    1. 以 oracle 用戶身份登錄到一個節點(即 racnode1),通過在當前實例中將 cluster_database 設置爲 FALSE 來禁用集羣實例參數:
      [[email protected] ~]$ sqlplus / as sysdba  

      SQL> alter system set cluster_database=false scope=spfile sid='racdb1';

      System altered.
    2. 以 oracle 用戶身份關閉所有 訪問集羣化數據庫的實例:
      [[email protected] ~]$ srvctl stop database -d racdb
    3. 使用本地實例,掛載 數據庫:
      [[email protected] ~]$ sqlplus / as sysdba  

      SQL*Plus: Release 11.2.0.1.0 Production on Sat Nov 21 19:26:47 2009

      Copyright (c) 1982, 2009, Oracle. All rights reserved.

      Connected to an idle instance.

      SQL> startup mount
      ORACLE instance started.

      Total System Global Area 1653518336 bytes
      Fixed Size 2213896 bytes
      Variable Size 1073743864 bytes
      Database Buffers 570425344 bytes
      Redo Buffers 7135232 bytes
    4. 啓用存檔功能:
      SQL> alter database archivelog;  

      Database altered.
    5. 通過在當前實例中將實例參數 cluster_database 修改爲 TRUE,重新啓用對集羣的支持:
相關文章
相關標籤/搜索