跳轉到內容

RAC 攻擊 - Oracle 叢集資料庫入門/列印版

來自 Wikibooks,開放世界中的開放書籍
RAC 攻擊 - Oracle 叢集資料庫入門

RAC 攻擊是一個免費的課程和平臺,提供與 Oracle RAC(叢集資料庫)相關的動手學習實驗室。我們相信學習 RAC 的最佳方式是透過大量的動手實踐。自 2008 年以來,個人在家和講師在課堂上都使用過此課程。

最初的貢獻者是 Jeremy Schneider、Dan Norris 和 Parto Jalili。該手冊在 http://www.ardentperf.com 釋出了數年,之後才遷移到這個 wikibook。所有 RAC 攻擊內容在 2011 年 5 月該專案啟動時以 CC-BY-SA 許可證釋出。

要了解即將舉辦的 RAC 攻擊活動或自行組織活動,請訪問 活動 頁面。你可以使用快捷方式 http://racattack.org/events 隨時訪問此頁面。

本工作簿的目標是幫助學生透過引導示例學習 Oracle RAC 叢集資料庫。(具體來說,是在 VMware Server 上使用 ASM 或共享檔案系統和 Oracle Enterprise Linux 5 的 11gR2 RAC。)活動組織者、課堂講師或個人在家都可以使用它。

RAC 攻擊在深度方面不同於目前可用的其他教程。

  • 這裡詳細記錄了每個按鍵和滑鼠點選。
  • 該過程從頭到尾覆蓋——從在筆記型電腦上首次安裝 VMware 到執行的叢集資料庫上的各種實驗……以及兩者之間的一切。
  • 主要工作簿中的實驗室經過了徹底且反覆的測試。

先決條件

[編輯 | 編輯原始碼]

學生應該能夠在 Unix 中導航——例如,使用“ls”列出檔案。

硬體最低要求

[編輯 | 編輯原始碼]

大多數現代筆記型電腦和臺式電腦都足夠強大,可以執行一個雙節點虛擬 RAC 叢集。簡而言之,以下是推薦的最低要求

  • 雙核 2GHz 32 位處理器 (已經使用單核完成)
  • 4GB 記憶體 (已經使用 3GB 完成)
  • 兩個物理硬碟——而不是分割槽 (已經使用一個完成)
    • 筆記型電腦的外部硬碟 (已經使用某些 USB 快閃記憶體盤完成)
    • 50 GB + 10.5 GB 可用空間 (已經使用略少完成)
  • Windows XP 或 Vista (Linux & Mac & Windows 7/8 在這些說明中未直接涵蓋,但可以下載 包含 VirtualBox 的補充 PDF)

使本實驗成功

[編輯 | 編輯原始碼]
  • 專注於你能夠學習的內容。
    • 儘可能選擇多個具體的學習目標,並花時間研究它們。
    • 要有創造力,並進行實驗。
    • 勇於冒險,不要害怕破壞東西。
  • 如果你是課堂或活動中的參與者,請充分利用課堂或活動設定。
    • 你可以用一次點選“快速啟動”回到實驗室的開頭。
    • 記錄發現和問題,與他人分享。
    • 互相幫助。參與者比講師多!
  • 如果可能,將步驟直接剪下並貼上到 PuTTY SSH 終端會話中。

實驗室技巧

[edit | edit source]
  • 所有密碼都是 racattack
  • 除非說明中特別說明選擇“複製”,否則在詢問時始終選擇“我移動了此虛擬機器”。
  • 如果您使用的是自己的筆記型電腦,請逐個啟動虛擬機器。也就是說,等到第一個虛擬機器完成啟動 - 包括叢集軟體和資料庫 - 然後再啟動第二個。
  • 課堂特定技巧
    • 工作站和 VMware 控制檯的通用登入帳戶:“admin”
    • 實驗室手冊中的常見更改
      • 使用 5GB 共享磁碟 - 而不是 3.25GB
      • 使用 900MB 記憶體 - 而不是 760MB
    • 快速啟動可能比您想象的要慢... 閱讀:計劃您的時間
    • “RAC11g”目錄通常位於 C:\RAC11g
    • 提供給高階參與者的擴充套件目標手冊


儲存概述

[edit | edit source]
ASM 共享 FS
/dev/sdb DATA /u51 (/u61)
/dev/sdc BACKUP /u52

網路概述

[edit | edit source]
collabn1 collabn2
互聯 172.16.100.51 172.16.100.52
管理 192.168.78.51 192.168.78.52
VIP 192.168.78.61 192.168.78.62
SCAN 192.168.78.250

計劃您的時間

[edit | edit source]

為了獲得最大收益,您必須仔細計劃您的時間。沒有足夠的時間完成所有實驗室 - 所以選擇您最感興趣的實驗室。

概述

[edit | edit source]
第一部分快速啟動概述

時間

[edit | edit source]

這些時間是使用一臺僅滿足推薦最低要求的筆記型電腦收集的。除了下面列出的等待時間外,我們建議您預留大約 40 分鐘的工作時間來完成任何給定的實驗室。

快速啟動 大小 下一個實驗室 快速啟動時間 實驗室中的等待時間 構建時間
硬體和 Windows 準備 下載:VMware Server (500MB)
下載:OEL (3GB)
0 建立虛擬機器 15 分鐘:Linux 安裝
下載:Oracle Cluster & Database (4.5GB)
1 3 GB 建立叢集 4 分鐘:快速啟動 5 分鐘:複製虛擬機器
3 分鐘:啟動 collabn1
3 分鐘:啟動 collabn2
6 分鐘
2 13 GB 網格安裝(ASM共享 FS 11 分鐘:快速啟動
3 分鐘:啟動節點
25 分鐘:GI 安裝
10 分鐘:root.sh collabn1
8 分鐘:root.sh collabn2
17 分鐘
3 20 GB RAC 安裝 18 分鐘:快速啟動
4 分鐘:啟動 collabn1
4 分鐘:啟動 collabn2
42 分鐘:資料庫安裝 30 分鐘
4 27 GB 建立資料庫 25 分鐘:快速啟動
4 分鐘:啟動 collabn1
4 分鐘:啟動 collabn2
22 分鐘:資料庫建立 45 分鐘
5 28 GB 滾動補丁
第二部分:探索 RAC(無 PSU)
25 分鐘:快速啟動
6 分鐘:啟動 collabn1
6 分鐘:啟動 collabn2
22 分鐘:GI 補丁 collabn1
20 分鐘:資料庫補丁 collabn1
22 分鐘:GI 補丁 collabn2
20 分鐘:資料庫補丁 collabn2
5 分鐘:catbundle
45 分鐘
6 37 GB 第二部分:探索 RAC(含 PSU) 35 分鐘:快速啟動
6 分鐘:啟動 collabn1
6 分鐘:啟動 collabn2
60 分鐘

硬體和 Windows 準備

[edit | edit source]

硬體和 Windows 最低要求

[edit | edit source]

本手冊將指導您完成在您自己的筆記型電腦或臺式計算機上建立雙節點 Oracle RAC 叢集的過程。

虛擬化的詳細解釋超出了本實驗室的範圍,但這裡簡單概述了我們正在構建的內容


硬體最低要求

[edit | edit source]

大多數現代筆記型電腦和臺式電腦都足夠強大,可以執行一個雙節點虛擬 RAC 叢集。簡而言之,以下是推薦的最低要求

  • 雙核 2GHz 32 位處理器 (已經使用單核完成)
  • 4GB 記憶體 (已經使用 3GB 完成)
  • 兩個物理硬碟——而不是分割槽 (已經使用一個完成)
    • 筆記型電腦的外部硬碟 (已經使用某些 USB 快閃記憶體盤完成)
    • 50 GB + 10.5 GB 可用空間 (已經使用略少完成)
    • 支援大於 2GB 的檔案,例如 NTFS (它在沒有 2GB 檔案支援的情況下,在 FAT32 上完成過)
  • Windows XP 或 Vista (Linux & Mac & Windows 7/8 在這些說明中未直接涵蓋,但可以下載 包含 VirtualBox 的補充 PDF)

如果您的筆記型電腦或臺式電腦不滿足這些最低要求,那麼不建議嘗試完成 RAC Attack 實驗室。雖然可以使用更小的配置完成這些實驗室,但存在許多潛在問題。

Windows 準備

[edit | edit source]
  1. 重新啟動 Windows。在此乾淨啟動後,不要啟動任何不必要的程式 - 例如電子郵件或即時訊息。
  2. 如果可能,停用病毒掃描(這樣您的防病毒軟體[1] 不會嘗試掃描虛擬機器磁碟上的 I/O)。
  3. 終止任何正在執行的駐留記憶體程式,尤其是幫助大型應用程式“快速啟動”的程式(這些程式通常會佔用大量記憶體)。

硬體驗證

[edit | edit source]

處理器

[edit | edit source]
  1. 開始選單中,選擇或鍵入執行。在出現的對話方塊中,鍵入msinfo32
  2. 在左側窗格中選擇系統摘要。向下滾動到右側窗格中的處理器。驗證您至少有2 個核心,並且速度至少為2000 Mhz

記憶體

[edit | edit source]
  1. 向下滾動到右側窗格中的記憶體。驗證安裝的物理記憶體至少為 4GB。此外,驗證可用記憶體至少為 1.4GB。您可以終止在前臺和後臺執行的程式以增加可用記憶體。


硬碟

[edit | edit source]
  1. 在左側窗格中,選擇元件 -> 儲存 -> 磁碟。計算磁碟驅動器條目的數量,並驗證至少有兩個
第二個硬碟
[編輯 | 編輯原始碼]
連線 儲存型別
最優




最劣
機箱內 (SATA) - 或 -
USB 3.0 - 或 -
千兆乙太網直連
無網路,不共享 - 直連專用外接硬碟
硬碟
不與其他任何內容共享
USB 2.0
隨身碟快閃記憶體
宣傳/評測/測試速度至少 50 MB/s
千兆乙太網連線網路 - 或 -
100 兆乙太網直連
無網路,不共享 - 直連專用外接硬碟
隨身碟快閃記憶體
宣傳/評測/測試速度至少 15 MB/s
共享硬碟
與其他程式共享
可用空間要求
[編輯 | 編輯原始碼]

RAC Attack 經過精心設計,使用三個目錄並分散 I/O,以在實驗室期間獲得最佳的響應能力。您可以選擇如何在硬碟上分配目錄,最佳配置可能會根據您的連線和儲存型別而有所不同。

目錄名稱 描述 可用空間 建議位置
RAC11g 作業系統
Oracle RAC 軟體
50 GB 第二塊硬碟 (非快閃記憶體)
RAC11g-shared Oracle RAC 資料 7.5 GB Windows 硬碟*
RAC11g-iso OEL 安裝 DVD (只讀) 3 GB Windows 硬碟*

*頁面檔案通常在 Windows 硬碟上

注意:不要 在 U 盤上建立 RAC11g 目錄(包含作業系統和 Oracle 軟體)。

登入帳戶

[編輯 | 編輯原始碼]

RAC Attack 需要一個具有密碼管理員許可權本地 Windows 使用者帳戶。您只能使用網路或無密碼帳戶登入,前提是登入帳戶具有管理員許可權,並且您知道另一個本地帳戶的密碼,該本地帳戶也具有管理員許可權(且密碼不為空)。

如果您的帳戶不是本地帳戶,或者您的帳戶沒有本地管理員許可權,那麼您可以按照這裡的說明建立管理員帳戶。

建立本地管理員帳戶

[編輯 | 編輯原始碼]
  1. 開始選單中選擇執行。在出現的對話方塊中,鍵入cmd以啟動命令提示符。在 Windows 7 中,在開始選單底部找到“搜尋程式”欄位。鍵入cmd,但不要執行它。右鍵單擊“cmd”,然後選擇“以管理員身份執行”。以管理員使用者身份開啟命令提示符後,執行以下兩條命令
    net user admin racattack /add
    net localgroup administrators admin /add
    

    登入:admin
    密碼:racattack

驗證登入帳戶

[編輯 | 編輯原始碼]
  1. 鍵入net user %username%(如果您使用的是網路或無密碼登入帳戶,請將 %username% 替換為本地帶密碼的管理員帳戶)。驗證使用者名稱,驗證需要密碼為是,並驗證本地組成員資格是否包含管理員

安裝 VMware Server

[編輯 | 編輯原始碼]
  1. 這些實驗室已在 VMware Server 2.0.1 版本上測試。請訪問 VMware Server 網站:http://www.vmware.com/go/getserver
  2. 如果您還沒有帳戶,請註冊一個帳戶。
    1. 記下您的許可證號。
    2. 如果您在家,請下載 VMware Server。如果您參加 RAC Attack 活動,則講師提供的 Jumpstart 驅動器包含 VMware Server 的副本,因此您無需下載。(但您仍然需要從 VMware 網站獲取許可證號。)


  3. 執行 VMware 安裝程式
  4. 在安裝過程中接受許可協議和所有預設選項。



  5. 輸入您的許可證資訊,該資訊在您下載軟體的 VMware 網站的同一頁面上可見。
  6. 如果 VMware 安裝程式要求您重新啟動計算機,請重新啟動計算機。


設定虛擬網路

[編輯 | 編輯原始碼]
  1. 從開始選單中選擇管理虛擬網路。程式啟動後,確保您在底部看到一個“應用”按鈕。如果您沒有看到“應用”按鈕,請關閉程式並透過右鍵單擊並選擇“以管理員身份執行”重新啟動程式(這通常在 Windows 7 上需要這樣做)。
  2. 單擊主機虛擬網路對映選項卡,然後單擊VMnet1旁邊的右箭頭按鈕。從子選單中選擇子網
  3. 將 IP 地址設定為172.16.100.0,然後單擊確定
  4. 單擊Vmnet8旁邊的右箭頭按鈕,然後從子選單中選擇子網
  5. 將 IP 地址設定為192.168.78.0,然後單擊確定
  6. 單擊應用按鈕。
  7. 返回摘要選項卡並驗證
    VMnet1的子網為172.16.100.0
    VMnet8的子網為192.168.78.0
  8. 轉到NAT選項卡並驗證 VMnet 主機是否為VMnet8,閘道器 IP 是否為192.168.78.2


設定虛擬儲存

[編輯 | 編輯原始碼]

如果您參加活動,則活動組織者可能會提供一個特殊的演示選項,您可以在自己的筆記型電腦上執行預配置的 RAC 叢集。要使用此演示選項,請按照本實驗室進行操作,但在活動提供的外部硬碟驅動器上使用目錄。



  1. RAC Attack 經過精心設計,使用三個目錄並分散 I/O,以在實驗室期間獲得最佳的響應能力。在您在硬體和 Windows 最低要求中選擇的目的地建立這三個目錄,並考慮以下指導原則。mkdir C:\RAC11g mkdir D:\RAC11g-shared mkdir D:\RAC11g-iso 在 RAC11g 目錄中,確保 collabn1 和 collabn2 子目錄不存在。rmdir C:\RAC11g\collabn1 rmdir C:\RAC11g\collabn2
  2. VMware Server 管理介面是基於 Web 的,某些新的 Web 瀏覽器與之不相容。有兩種方法可以開啟此管理介面
    • 開啟一個非預設的 Web 瀏覽器,並訪問地址 https://:8333/
      • 如果您在活動現場,活動組織者可能已提供Firefox 2.0.0.20,該瀏覽器已透過 RAC Attack 測試。您可以直接從 Jumpstart 驅動器執行此瀏覽器,無需將其安裝在您的 PC 上。此版本的 Firefox 也可以從網際網路下載。
    • 從開始選單啟動VMware Server 主頁。這將使用您的預設 Web 瀏覽器。
  3. 根據您使用的 Web 瀏覽器,您可能會收到與安全相關的警告。繼續處理所有這些警告,並選擇檢視網頁。
    Mozilla Firefox 中的警告
    Internet Explorer 6 中的相同警報
  4. 使用本地 Windows 管理員帳戶的使用者名稱和密碼登入 VMware 控制檯。
  5. 在主螢幕(摘要選項卡)上,找到命令框,然後選擇新增資料儲存
  6. 重複此步驟三次。將資料儲存名稱設定為RAC11gRAC11g-sharedRAC11g-iso。選擇本地資料儲存,並使用您之前選擇和建立的目錄路徑。
  7. 驗證摘要螢幕中是否存在三個新的資料儲存,名為RAC11gRAC11g-isoRAC11g-shared。還要驗證兩個網路vmnet1vmnet8 是否分別作為主機專用NAT 可用。


下載 Oracle 企業版 Linux

[編輯 | 編輯原始碼]

如果您在活動現場,活動組織者已經下載了軟體並將其複製到 Jumpstart 驅動器。

  • 跳過此實驗室。

如果您在家,請按照以下說明下載 Oracle 企業版 Linux。

  • 繼續下面。


  1. 訪問 http://edelivery.oracle.com/linux 並選擇繼續
  2. 輸入您的姓名、公司、電子郵件和國家/地區,並在單擊繼續之前檢視/接受許可證和出口限制。如果您之前訪問過 Oracle EDelivery,請確保輸入的資訊完全相同。如果您是第一次從 Oracle 下載軟體,您可能需要等待幾天才能收到 Oracle 傳送的電子郵件,授予您繼續操作的許可權。
  3. x86-32 位平臺上搜索Oracle Linux。選擇 Oracle Linux 版本 5 更新 6
  4. 下載x86(32 位)的檔案,而不是原始碼。
  5. 此 zip 檔案將包含一個名為Enterprise-R5-U6-Server-i386-dvd.iso 的單個檔案 - 將此檔案解壓縮到RAC11g-iso 資料夾中,然後刪除原始 zip 檔案。


Linux 安裝

[編輯 | 編輯原始碼]

建立虛擬機器

[編輯 | 編輯原始碼]
  1. 摘要螢幕中,選擇建立虛擬機器。將新機器命名為collabn1,並選擇RAC11g 資料儲存。
  2. 選擇Linux 作業系統,然後選擇Red Hat Enterprise Linux 5(32 位)
  3. 為虛擬機器分配760M 記憶體,並選擇1 個處理器
  4. 選擇建立新的虛擬磁碟
  5. 將磁碟大小設定為30G,並將檔案命名為[RAC11g] collabn1/system.vmdk - 將所有其他選項保留為預設值,然後單擊下一步
  6. 選擇新增網路介面卡
  7. 選擇建立NAT 網路連線。
  8. 選擇不新增 CD/DVD 驅動器
  9. 選擇不新增軟盤驅動器
  10. 選擇不新增 USB 控制器
  11. 檢視配置並單擊完成。暫時不要啟動虛擬機器。


準備作業系統安裝

[編輯 | 編輯原始碼]

虛擬 DVD 配置

虛擬裝置節點(介面卡/裝置) 路徑(資料儲存/目錄/檔名)
IDE 0:0 [RAC11g-iso] Enterprise-R5-U6-Server-i386-dvd.iso
IDE 0:1*** [RAC11g-iso] RAC11gR2.iso***

***僅限講師主導的課程



  1. 在左側的庫存選項卡中,選擇collabn1(我們剛剛建立的虛擬機器)。
  2. 命令框中,單擊新增硬體。在出現的視窗中,單擊CD/DVD 驅動器
  3. 選擇使用 ISO 映像
  4. 單擊瀏覽並找到檔案[RAC11g-iso] Enterprise-R5-U6-Server-i386-dvd.iso
  5. 開啟名為虛擬裝置節點的部分,然後選擇IDE 0:0。然後單擊下一步


  6. 單擊完成新增裝置。暫時不要啟動虛擬機器。
  7. 如果您參加課程,那麼講師可能已提供了一個名為RAC11gR2.iso 的第二個虛擬 DVD,以節省一些課堂時間。它包含所有其他軟體下載。
    • 重複本實驗中的所有先前步驟,以新增使用 RAC11gR2.iso 映像的第二個 DVD,並選擇IDE 0:1
    如果您沒有參加課程,那麼您將稍後下載所有必需的軟體並自行構建第二個 DVD。
    • 繼續下面。
  8. 向下滾動到硬體框並確認虛擬機器設定。它們應與這張圖片匹配(除了如果您參加課程並且講師提供了第二個 DVD,那麼您應該只看到第二個 DVD)


作業系統安裝

[編輯 | 編輯原始碼]
  1. 單擊控制檯選項卡。您可能會看到一條訊息,提示未安裝遠端控制檯外掛。如果您看到此訊息,請單擊安裝外掛並按照說明操作,然後繼續。(注意:在此過程中,您可能會被要求重新啟動計算機。)
  2. 安裝外掛後,您應該在控制檯的中心看到一個大的“播放”按鈕。單擊播放按鈕啟動虛擬機器。
  3. 當您看到方框時,單擊任意位置開啟一個控制檯視窗。
  4. 現在將開啟一個新視窗 - 在您的 Web 瀏覽器之外。如果您在啟動虛擬機器後不久打開了此視窗,那麼您將看到 Oracle 企業版 Linux 安裝程式的啟動螢幕。

    最初,這個新的控制檯視窗將忽略您的鍵盤和滑鼠。單擊新的控制檯視窗內,它將開始接受您的鍵盤和滑鼠。

    如果您仍然看到啟動螢幕,那麼您可以按 Enter 鍵繼續,或者只需等待它自動繼續。

  5. 選擇跳過媒體測試。
  6. 當第一個安裝程式螢幕出現時,選擇下一步。
  7. 接受預設的英語語言,然後選擇下一步
  8. 選擇美國英語鍵盤佈局,然後單擊下一步
  9. 選擇初始化驅動器。
  10. 接受預設佈局(無加密),然後選擇下一步
  11. 選擇刪除所有分割槽。
  12. 將主機名設定為collabn1.vm.ardentperf.com,並在選擇下一步之前保持 DHCP 啟用。
  13. 選擇您所在時區的時區!但讓系統時鐘以 UTC 執行。
  14. 將 root 密碼設定為racattack
  15. 選擇立即自定義 - 但不要選擇任何“附加任務”。然後單擊下一步
  16. 僅選擇以下軟體包組,然後單擊下一步繼續
    類別 選擇
    桌面環境 Gnome 桌面環境
    應用程式 編輯器
    圖形化網際網路
    基於文字的網際網路
    開發 開發庫
    開發工具
    伺服器 伺服器配置工具
    基本系統 管理工具
    基礎
    系統工具
    X 視窗系統


  17. 選擇下一步開始安裝。


  18. 安裝完成後,選擇重啟
  19. 機器重啟後 - 當您看到歡迎螢幕時 - 選擇下一步
  20. 接受許可協議並選擇下一步
  21. 停用防火牆並選擇下一步。單擊確認。
  22. 在選擇下一步之前停用SELinux。用確認。
  23. 保持Kdump停用並選擇下一步
  24. 保持時鐘不變(時間錯誤)並點選下一步
  25. 不要建立使用者;點選下一步。選擇繼續確認。
  26. 選擇下一步跳過音效卡配置。
  27. 選擇完成關閉安裝程式。點選確定重啟。
  28. 重啟後,您將看到登入螢幕。


完成作業系統安裝

[edit | edit source]

提示:如果您熟悉Unix命令列,那麼我們建議您除了使用VMware控制檯之外,還要透過SSH連線。然後,您可以從本手冊中複製和貼上許多命令!在我們配置網路之前,VMware將分配地址192.168.78.128。



  1. 以使用者root登入,密碼為racattack
  2. GNOME是OEL中預設安裝的圖形視窗環境。首先,停用GNOME CD自動掛載。轉到選單系統 >> 首選項 >> 可移動驅動器和媒體
  3. 取消選中可移動儲存下所有選項,然後點選關閉
  4. 從選單應用程式 >> 附件 >> 終端開啟一個終端視窗。
  5. 從選單中開啟編輯 >> 當前配置檔案
  6. 標題和命令選項卡中,選中以登入shell執行命令複選框,然後關閉對話方塊。
  7. 編輯器"gedit"是一個簡單的圖形編輯器 - 與記事本類似 - 它可以用來編輯Linux上的檔案。如果您打算使用gedit,那麼建議您開啟編輯 > 首選項停用文字換行並啟用行號。
  8. 在終端視窗中以root使用者身份,關閉並停用anacron,然後手動執行它,不延遲。[root@collabn1 ~]# service anacron stop 停止anacron: [ OK ] [root@collabn1 ~]# chkconfig anacron off [root@collabn1 ~]# chkconfig --list anacron anacron 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@collabn1 ~]# anacron -n


  9. 在終端視窗中以root使用者身份,關閉並停用自動掛載器。[root@collabn1 ~]# service autofs stop 停止自動掛載: [ OK ] [root@collabn1 ~]# umount /media/* [root@collabn1 ~]# chkconfig autofs off [root@collabn1 ~]# chkconfig --list autofs autofs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
  10. 在終端視窗中以root使用者身份,關閉並停用Apple Zeroconf服務(avahi)。[root@collabn1 ~]# service avahi-daemon stop 關閉Avahi守護程序: [ OK ] [root@collabn1 ~]# chkconfig avahi-daemon off [root@collabn1 ~]# chkconfig --list avahi-daemon avahi-daemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off
  11. 如果狀態列中任何小的CD映象沒有綠色圓點,則點選CD映象,然後選擇"連線到[RAC11g] iso/... on Server"。如果出現一個視窗顯示CD內容,請確保關閉該視窗。
  12. 建立兩個名為cdromcdrom5的CDROM目錄。
    [root@collabn1 ~]# cd /mnt
    [root@collabn1 mnt]# mkdir cdrom
    [root@collabn1 mnt]# mkdir cdrom5
    


  13. 為所有CD新增/etc/fstab條目,然後掛載它們。如果您在課堂上,您可能會有兩張CD。如果您不在課堂上,您可能只有一張。[root@collabn1 ~]# ls /dev/cdrom-* /dev/cdrom-hda /dev/cdrom-hdb [root@collabn1 ~]# gedit /etc/fstab /dev/cdrom-hda /mnt/cdrom iso9660 defaults 0 0 /dev/cdrom-hdb /mnt/cdrom5 iso9660 defaults 0 0 [root@collabn1 mnt]# mount cdrom [root@collabn1 mnt]# mount cdrom5
  14. 安裝其他所需的RPM cd /mnt # 從Enterprise Linux 5 CDROM 2 rpm -Uvh */*/compat-libstdc++-33* rpm -Uvh */*/libaio-devel-0.* rpm -Uvh */*/unixODBC-2.* rpm -Uvh */*/unixODBC-devel-2.* # 從Enterprise Linux 5 CDROM 3 rpm -Uvh */*/sysstat-7.* # 已安裝的其他必需包: # 從Enterprise Linux 5 CDROM 1 rpm -Uvh */*/binutils-2.* rpm -Uvh */*/elfutils-libelf-0.* rpm -Uvh */*/glibc-2.*i686* rpm -Uvh */*/glibc-common-2.* rpm -Uvh */*/libaio-0.* rpm -Uvh */*/libgcc-4.* rpm -Uvh */*/libstdc++-4.* rpm -Uvh */*/make-3.* # 從Enterprise Linux 5 CDROM 2 rpm -Uvh */*/elfutils-libelf-devel-* rpm -Uvh */*/glibc-headers* rpm -Uvh */*/glibc-devel-2.* rpm -Uvh */*/libgomp* rpm -Uvh */*/gcc-4.* rpm -Uvh */*/gcc-c++-4.* rpm -Uvh */*/libstdc++-devel-4.*
  15. 彈出cdrom [root@collabn1 mnt]# eject /mnt/cdrom
  16. 返回VMware控制檯中的摘要選項卡。從狀態框中選擇安裝VMware Tools。點選安裝按鈕開始。
  17. 安裝VMware客戶端工具並執行配置工具。
    [root@collabn1 mnt]# mount /mnt/cdrom
    mount: block device /dev/cdrom-hda is write-protected, mounting read-only
    
    [root@collabn1 mnt]# rpm -ivh /mnt/cdrom/VMwareTools-7.7.5-156745.i386.rpm
    Preparing...                ########################################### [100%]
       1:VMwareTools            ########################################### [100%]
    
    The installation of VMware Tools 7.7.5 for Linux completed successfully.
    You can decide to remove this software from your system at any time by
    invoking the following command: "rpm -e VMwareTools".
    
    Before running VMware Tools for the first time, you need to
    configure it for your running kernel by invoking the
    following command: "/usr/bin/vmware-config-tools.pl".
    
    Enjoy,
    
        --the VMware team
    
    
    [root@collabn1 cdrom]# vmware-config-tools.pl
    

    ...

    選擇跳過VMware檔案系統同步驅動程式(vmsync)

    選擇顯示尺寸[12] – 1024x768

    掛載HGFS共享可能會失敗,但沒關係。

  18. 執行網路命令。(您可以將命令複製貼上到終端中。)接下來,執行vmware-toolbox並啟用時鐘同步。
  19. 登出您的會話。
  20. 解除安裝VMware Tools映象: umount /mnt/cdrom 使用VMware基礎架構Web介面,從[RAC11g-iso]資料儲存掛載Oracle Enterprise Linux。掛載它: mount /mnt/cdrom


建立RAC攻擊DVD

[edit | edit source]

如果您在課堂活動中,則講師可能提供了一個名為RAC11gR2.iso的第二個虛擬DVD,以節省一些課堂時間。它包含所有其他軟體下載。

  • 跳過此實驗,繼續下一個實驗。

如果您在家,請按照以下說明下載所有需要的軟體並自己構建第二個DVD。

  • 繼續下面。


  1. 以root使用者身份登入後,下載最新版本的RAC攻擊支援程式碼(GPL)。# cd ~ # curl -kL github.com/ardentperf/racattack/tarball/master | tar xz
  2. 您可以在此處檢視下載的總列表:https://github.com/ardentperf/racattack/blob/master/makeDVD/auto.sh 如果您已經下載了這些檔案中的任何一個,您可以選擇將其複製到虛擬機器中的/tmp目錄中。建立DVD時,任何剩餘的檔案將自動下載。
  3. 透過執行自動構建指令碼建立DVD。系統將提示您輸入Oracle SSO登入名和密碼。
     [root@collabn1 ~]# '''sh ardentperf-racattack-*/makeDVD/auto.sh /mnt/cdrom5'''
     `oracle-profile' -> `/mnt/cdrom5/oracle-profile'
     root/
     root/fix_cssd/
     root/fix_cssd/fix_cssd.sh
     Oracle SSO Username: '''<your-username>'''
     Oracle SSO Password: '''<your-password>'''
     LOGGING IN TO ORACLE SSO
       % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                      Dload  Upload   Total   Spent    Left  Speed
     414   733  414  2977    0     0   1621      0 --:--:--  0:00:01 --:--:-- 22383
     DOWNLOADING: /tmp/oracleasmlib-2.0.4-1.el5.i386.rpm
       % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                      Dload  Upload   Total   Spent    Left  Speed
     100 13929  100 13929    0     0  23118      0 --:--:-- --:--:-- --:--:-- 2720k
     `/tmp/oracleasmlib-2.0.4-1.el5.i386.rpm' -> `./oracleasmlib-2.0.4-1.el5.i386.rpm'
     DOWNLOADING: /tmp/linux_11gR2_database_1of2.zip
     
     ( ... )
     
     FINISHED BUILDING RAC ATTACK DVD
    


準備Oracle

[edit | edit source]
  1. 編輯/etc/sysctl.conf [root@collabn1 ~]# gedit /etc/sysctl.conf kernel.shmmni = 4096 # 訊號量: semmsl, semmns, semopm, semmni kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=4194304 net.core.rmem_max=4194304 net.core.wmem_default=262144 net.core.wmem_max=262144 [root@collabn1 ~]# sysctl -p
  2. 編輯/etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
  3. 編輯/etc/pam.d/login,並在selinux open之前插入以下行。session required /lib/security/pam_limits.so session required pam_limits.so
  4. 建立組和使用者。將oracle密碼設為racattack [root@collabn1 ~]# groupadd oinstall [root@collabn1 ~]# groupadd dba [root@collabn1 ~]# groupadd oper [root@collabn1 ~]# groupadd asmdba [root@collabn1 ~]# groupadd asmoper [root@collabn1 ~]# groupadd asmadmin [root@collabn1 ~]# [root@collabn1 ~]# useradd -u 500 -g oinstall -G dba,oper,asmdba,asmoper,asmadmin oracle [root@collabn1 ~]# passwd oracle 更改使用者oracle的密碼。新UNIX密碼: racattack BAD PASSWORD: it is based on a dictionary word 重新輸入新UNIX密碼: racattack passwd: 所有身份驗證令牌已成功更新。
  5. 建立目錄。[root@collabn1 ~]# mkdir -p /u01/grid/oracle/product/11.2.0/grid_1 [root@collabn1 ~]# mkdir -p /u01/app/oracle/product/11.2.0/db_1 [root@collabn1 ~]# chown -R oracle:oinstall /u01
  6. 登出您的會話,以oracle使用者身份登入。
  7. 為oracle使用者停用GNOME CD自動掛載。轉到選單系統 >> 首選項 >> 可移動驅動器和媒體
  8. 取消選中可移動儲存下所有選項,然後點選關閉
  9. 開啟一個終端視窗。
  10. 從選單中開啟編輯 >> 當前配置檔案
  11. 標題和命令選項卡中,選中以登入shell執行命令複選框,然後關閉對話方塊。
  12. 如果您使用的是gedit,則開啟編輯 > 首選項停用文字換行並啟用行號。
  13. 為 oracle 使用者設定 ssh 等效性。[oracle@collabn1 ~]$ ssh localhost 無法驗證主機 'localhost (127.0.0.1)' 的真實性。RSA 金鑰指紋為 3f:65:e6:77:af:11:84:56:a4:b9:0f:8b:41:b4:2f:8a。您確定要繼續連線嗎 (yes/no)? yes 警告:已將 'localhost' (RSA) 永久新增到已知主機列表。oracle@localhost 的密碼: ^C [oracle@collabn1 ~]$ ssh-keygen -t rsa 生成公鑰/私鑰 rsa 金鑰對。輸入要儲存金鑰的檔案 (/home/oracle/.ssh/id_rsa): ^M [預設] 輸入密碼(不輸入密碼則為空): ^M [無密碼] 再次輸入相同的密碼: ^M [無密碼] 您的標識已儲存到 /home/oracle/.ssh/id_rsa。您的公鑰已儲存到 /home/oracle/.ssh/id_rsa.pub。金鑰指紋為: 0a:33:74:d4:7a:c0:c6:d0:56:33:10:4e:71:63:4c:e8 oracle@collabn1.vm.ardentperf.com [oracle@collabn1 ~]$ cat /home/oracle/.ssh/id_rsa.pub >> /home/oracle/.ssh/authorized_keys
  14. 設定 oracle 和 root 使用者的配置檔案。[oracle@collabn1 ~]$ su - root [root@collabn1 ~]# gedit /etc/oratab grid:/u01/grid/oracle/product/11.2.0/grid_1:N [root@collabn1 ~]# chown oracle:dba /etc/oratab [root@collabn1 ~]# gedit /root/.bashrc ORAENV_ASK=NO ORACLE_SID=grid . oraenv >/dev/null unset ORAENV_ASK [root@collabn1 ~]# su - oracle [oracle@collabn1 ~]$ cd /mnt [oracle@collabn1 ~]$ cat */oracle-profile >>/home/oracle/.bash_profile
  15. 關閉重新開啟您的終端會話,以便新配置檔案生效。
  16. 安裝 fix_cssd 指令碼。
    [oracle@collabn1 ~]$ su - root
    [root@collabn1 ~]# cd /
    [root@collabn1 ~]# tar xvf mnt/*/fix_cssd.tar
    root/fix_cssd/fix_cssd.sh
    
    [root@collabn1 ~]# chmod 774 /root/fix_cssd/fix_cssd.sh
    [root@collabn1 ~]# gedit /etc/rc.d/rc.local
    cd /root/fix_cssd
    nohup nice -n -20 ./fix_cssd.sh 2>&1 &
    
    [root@collabn1 ~]# /etc/rc.d/rc.local
    nohup: appending output to `nohup.out'
    


建立叢集

[編輯 | 編輯原始碼]

建立叢集

[編輯 | 編輯原始碼]
  1. 如果機器正在執行,則登出並關閉。機器需要關閉電源。
  2. 在左側的庫存選項卡中,選擇collabn1(我們剛剛建立的虛擬機器)。
  3. 向下滾動到硬體框並確認存在一個型別為NAT的網路介面卡。
  4. 命令框中,單擊新增硬體。在出現的視窗中,單擊網路介面卡
  5. 選擇建立僅主機網路連線。這將用於互連。然後單擊下一步
  6. 單擊完成以建立網路介面卡。


建立共享磁碟

[編輯 | 編輯原始碼]

對這兩個裝置重複步驟 1-6

虛擬裝置節點(介面卡/裝置) 大小 路徑(資料儲存/目錄/檔名)
SCSI 1:0 3.25 GB [RAC11g-shared] data.vmdk
SCSI 1:1 3.25 GB [RAC11g-shared] backup.vmdk


  1. 在左側的庫存選項卡中,選擇collabn1(我們剛剛建立的虛擬機器)。
  2. 命令框中,單擊新增硬體。在出現的視窗中,單擊硬碟
  3. 選擇建立新的虛擬磁碟並單擊下一步
  4. 輸入容量3.25 GB並輸入名稱“[RAC11g-shared] data.vmdk”
    • 選擇檔案選項 → 立即分配所有磁碟空間
    • 選擇磁碟模式 → 獨立持久
    • 選擇虛擬裝置節點 → SCSI 1:0。單擊下一步繼續。
  5. 單擊完成以建立磁碟。


  6. 對第二個磁碟重複步驟 1-5(它列在本次實驗的開頭)。
  7. 確認您的硬碟和網路裝置列表與該螢幕截圖匹配。
  8. 命令框中,單擊配置虛擬機器
  9. 單擊高階選項卡,然後向下滾動到配置引數。使用新增新條目按鈕新增此處列出的條目。單擊確定儲存配置更改。
    名稱
    disk.locking false
    diskLib.dataCacheMaxSize 0
    diskLib.maxUnsyncedWrites 0
    mainMem.useNamedFile false




複製虛擬機器

[編輯 | 編輯原始碼]
  1. Windows 資源管理器中,瀏覽到資料夾[RAC11g] \collabn1。將所有檔案複製到資料夾[RAC11g] \collabn2
    • [RAC11g] 的位置是在第一個實驗中確定的。在課堂上,講師可能會提供位置。
    • 如果collabn2資料夾不存在,則建立它。
    確保您複製而不是移動檔案。在 Windows 中,按住 CTRL 鍵可以進行拖放複製。


  2. 瀏覽到[RAC11g] \collabn2。編輯檔案collabn1.vmx(VMware 配置檔案)。您可以使用記事本或寫字板來編輯該檔案。
  3. 找到行displayName並將其更改為collabn2(新的節點名稱),然後儲存並關閉該檔案。displayName = "collabn2"



配置磁碟

[編輯 | 編輯原始碼]
  1. 在左側的庫存選項卡中,選擇collabn1
  2. 選擇控制檯選項卡。單擊播放按鈕以啟動虛擬機器。當您看到方框時,單擊任意位置開啟一個控制檯視窗。
  3. oracle使用者身份登入,密碼為racattack
  4. 開啟一個終端視窗。
  5. 使用“su -”命令切換到 root 使用者。(密碼為racattack。)確認存在兩個新的磁碟,並且它們具有相應的尺寸。這兩行應該完全匹配!! [root@collabn1 ~]# cat /proc/partitions major minor #blocks name ... 8 16 3407872 sdb 8 32 3407872 sdc
  6. 使用fdisk在所有新建立的磁碟上建立分割槽。
    1. 執行fdisk /dev/sdb 您應該看到訊息“裝置既不包含有效的 DOS 分割槽表,也不包含 Sun、SGI 或 OSF 磁碟標籤”
    2. 鍵入“n”以建立新的分割槽。
    3. 鍵入“p”以建立主分割槽。
    4. 鍵入分割槽號1
    5. 按兩次 Enter 鍵接受預設的第一個/最後一個柱面。
    6. 鍵入“t”以設定分割槽型別。
    7. 輸入分割槽型別da(非 FS 資料)。
    8. 鍵入“w”將分割槽表寫入磁碟。
    [root@collabn1 ~]# fdisk /dev/sdb 裝置既不包含有效的 DOS 分割槽表,也不包含 Sun、SGI 或 OSF 磁碟標籤 正在構建新的 DOS 磁碟標籤。更改僅保留在記憶體中,直到您決定寫入它們。之後,當然,以前的內容將無法恢復。 警告:分割槽表 4 的無效標誌 0x0000 將透過 w(rite) 命令進行修正 命令(m 獲取幫助):n 命令操作 e 擴充套件分割槽 p 主分割槽 (1-4) p 分割槽號 (1-4):1 第一個柱面 (1-652,預設 1):^M [default] 使用預設值 1 最後一個柱面或 +size 或 +sizeM 或 +sizeK (1-652,預設 652):^M [default] 使用預設值 652 命令(m 獲取幫助):t 選擇分割槽 1 十六進位制程式碼(型別 L 列出程式碼):da 將分割槽 1 的系統型別更改為 da(非 FS 資料) 命令(m 獲取幫助):w 分割槽表已更改! 警告:重新讀取分割槽表失敗,錯誤 16:裝置或資源繁忙。核心仍然使用舊的表。正在同步磁碟。
  7. 對磁碟 /dev/sdc 重複上一步



配置節點 1

[編輯 | 編輯原始碼]

完成上一個實驗後,您應該已經以 oracle 使用者身份登入到 collabn1。您應該已經打開了一個終端,您目前已切換到 root 使用者。



  1. root 使用者身份,確認 eth0 的 IP 地址是否以 192.168.78 開頭,並且 eth1 的 IP 地址是否以 172.16.100 開頭。[root@collabn1 ~]# ifconfig|grep net eth0 連結封裝:乙太網 硬體地址 00:0C:29:07:F5:C0 inet 地址:192.168.78.128 廣播:192.168.78.255 掩碼:255.255.255.0 inet6 地址:fe80::20c:29ff:fe07:f5c0/64 範圍:連結 eth1 連結封裝:乙太網 硬體地址 00:0C:29:07:F5:CA inet 地址:172.16.100.128 廣播:172.16.100.255 掩碼:255.255.255.0 inet6 地址:fe80::20c:29ff:fe07:f5ca/64 範圍:連結 inet 地址:127.0.0.1 掩碼:255.0.0.0 inet6 地址: ::1/128 範圍:主機
  2. 透過直接編輯 Linux 網路配置檔案來更新 IP 地址。更新 BOOTPROTO 行並新增其餘行。[root@collabn1 ~]# cd /etc/sysconfig/network-scripts [root@collabn1 network-scripts]# gedit ifcfg-eth0 BOOTPROTO=none IPADDR=192.168.78.51 NETMASK=255.255.255.0 GATEWAY=192.168.78.2 [root@collabn1 network-scripts]# gedit ifcfg-eth1 BOOTPROTO=none IPADDR=172.16.100.51 NETMASK=255.255.255.0
  3. 更新 DNS 搜尋域 [root@collabn1 network-scripts]# gedit /etc/resolv.conf search vm.ardentperf.com nameserver 192.168.78.2
  4. root 身份,透過輸入 service network restart 重新啟動網路服務。然後使用 ifconfig 確認新的 IP 地址。還可以透過檢查 /etc/resolv.conf 來確認搜尋域 - 如果檔案已還原,則再次編輯它。(當我編寫這個實驗時,更改在第二次編輯檔案後就保留了。)


  5. 編輯 /etc/hosts編輯包含 127.0.0.1 的行,然後新增下面所有其他行:[root@collabn1 etc]# vi /etc/hosts 192.168.78.51 collabn1 collabn1.vm.ardentperf.com 192.168.78.61 collabn1-vip collabn1-vip.vm.ardentperf.com 172.16.100.51 collabn1-priv collabn1-priv.vm.ardentperf.com 192.168.78.52 collabn2 collabn2.vm.ardentperf.com 192.168.78.62 collabn2-vip collabn2-vip.vm.ardentperf.com 172.16.100.52 collabn2-priv collabn2-priv.vm.ardentperf.com 192.168.78.250 collab-scan collab-scan.vm.ardentperf.com 192.168.78.251 collab-gns collab-gns.vm.ardentperf.com  ::1 localhost6.localdomain6 localhost6 127.0.0.1 localhost.localdomain localhost



配置節點 2

[編輯 | 編輯原始碼]
  1. 在 VMware 控制檯中,轉到 虛擬機器 選單並選擇 將虛擬機器新增到清單
  2. 瀏覽到 RAC11g/collabn2 並開啟 collabn1.vmx。確保您瀏覽到正確的資料夾!
  3. 在左側的 清單 選項卡中,選擇新的虛擬機器 - collabn2。選擇 控制檯 選項卡並單擊播放按鈕以啟動虛擬機器。
  4. VMware 控制檯應詢問您是否複製或移動了虛擬機器。回答您複製了檔案,然後單擊 確定
  5. 當您看到方框時,單擊任意位置開啟一個控制檯視窗。
  6. oracle使用者身份登入,密碼為racattack
  7. 開啟一個終端(應用程式 >> 附件 >> 終端)並切換到 root 使用者。


  8. 確認 eth1 的 IP 地址是否以 172.16.100 開頭。[root@collabn1 ~]# ifconfig|grep net eth1 連結封裝:乙太網 硬體地址 00:0C:29:C9:3E:C8 inet 地址:172.16.100.129 廣播:172.16.100.255 掩碼:255.255.255.0 inet 地址:127.0.0.1 掩碼:255.0.0.0
  9. 透過直接編輯 Linux 網路配置檔案來更新 IP 地址。更新 BOOTPROTO 行並新增其餘行。註釋或刪除以 HWADDR 開頭的行。[root@collabn1 ~]# cd /etc/sysconfig/network-scripts [root@collabn1 network-scripts]# gedit ifcfg-eth0 BOOTPROTO=none #HWADDR=... IPADDR=192.168.78.52 NETMASK=255.255.255.0 GATEWAY=192.168.78.2 [root@collabn1 network-scripts]# gedit ifcfg-eth1 BOOTPROTO=none #HWADDR=... IPADDR=172.16.100.52 NETMASK=255.255.255.0
  10. 更新 DNS 搜尋域 [root@collabn1 network-scripts]# gedit /etc/resolv.conf search vm.ardentperf.com nameserver 192.168.78.2
  11. 透過編輯 Linux 系統配置檔案來更新 HOSTNAME。將其設定為 collabn2.vm.ardentperf.com。然後使用 hostname 命令更改活動系統主機名。[root@collabn1 network-scripts]# gedit /etc/sysconfig/network HOSTNAME=collabn2.vm.ardentperf.com [root@collabn1 network-scripts]# hostname collabn2.vm.ardentperf.com
  12. root 身份,透過輸入 service network restart 重新啟動網路服務。然後使用 ifconfig 確認新的 IP 地址。確認搜尋域,方法是檢查 /etc/resolv.conf - 如果檔案已還原,則再次編輯它。(在完成此實驗時,更改在第二次編輯檔案後就保留了。)還可以使用 hostname 確認新的主機名。


  13. 退出終端會話並啟動一個新的會話,以便您可以在提示符中看到更新的主機名。
  14. 編輯 /etc/hosts編輯包含 127.0.0.1 的行,然後新增下面所有其他行:[root@collabn2 etc]# vi /etc/hosts 192.168.78.51 collabn1 collabn1.vm.ardentperf.com 192.168.78.61 collabn1-vip collabn1-vip.vm.ardentperf.com 172.16.100.51 collabn1-priv collabn1-priv.vm.ardentperf.com 192.168.78.52 collabn2 collabn2.vm.ardentperf.com 192.168.78.62 collabn2-vip collabn2-vip.vm.ardentperf.com 172.16.100.52 collabn2-priv collabn2-priv.vm.ardentperf.com 192.168.78.250 collab-scan collab-scan.vm.ardentperf.com 192.168.78.251 collab-gns collab-gns.vm.ardentperf.com 127.0.0.1 localhost.localdomain localhost  ::1 localhost6.localdomain6 localhost6



SSH 和 CVU

[編輯 | 編輯原始碼]
  1. 登入到節點 collabn2。以 oracle 使用者身份,確保您可以 ping 互連網路和公用網路上的兩個節點。[oracle@collabn2 ~]$ ping -c 1 collabn1 PING collabn1 (192.168.78.51) 56(84) 位元組的資料。64 位元組來自 collabn1 (192.168.78.51):icmp_seq=1 ttl=64 time=0.793 ms [oracle@collabn2 ~]$ ping -c 1 collabn2 PING collabn2 (192.168.78.52) 56(84) 位元組的資料。64 位元組來自 collabn2 (192.168.78.52):icmp_seq=1 ttl=64 time=0.024 ms [oracle@collabn2 ~]$ ping -c 1 collabn1-priv PING collabn1-priv (172.16.100.51) 56(84) 位元組的資料。64 位元組來自 collabn1-priv (172.16.100.51):icmp_seq=1 ttl=128 time=0.901 ms [oracle@collabn2 ~]$ ping -c 1 collabn2-priv PING collabn2-priv (172.16.100.52) 56(84) 位元組的資料。64 位元組來自 collabn2-priv (172.16.100.52):icmp_seq=1 ttl=64 time=0.058 ms
  2. 儲存主機的公鑰。您可以使用名為 ssh-keyscan 的工具來執行此操作。[oracle@collabn2 .ssh]$ ssh-keyscan -t rsa collabn1 collabn1-priv collabn2 collabn2-priv >> ~/.ssh/known_hosts # collabn1 SSH-2.0-OpenSSH_4.3 # collabn1-priv SSH-2.0-OpenSSH_4.3 # collabn2 SSH-2.0-OpenSSH_4.3 # collabn2-priv SSH-2.0-OpenSSH_4.3
  3. 測試 ssh 等效性。重要的是沒有提示,並且您會自動登入。[oracle@collabn2 .ssh]$ ssh collabn1 警告:已將 IP 地址“192.168.78.51”的 RSA 主機金鑰永久新增到已知主機列表中。上次登入:2008 年 4 月 15 日星期二 16:59:36 來自 collabn2 [oracle@collabn1 ~]$ exit 退出連線到 collabn1 已關閉。
  4. 切換到節點 collabn1。以 oracle 使用者身份,確認您可以 ping 兩個伺服器。然後從 collabn2 複製 known_hosts 檔案。[oracle@collabn1 ~]$ ping -c 1 collabn1 PING collabn1 (192.168.78.51) 56(84) 位元組的資料。64 位元組來自 collabn1 (192.168.78.51):icmp_seq=1 ttl=64 time=0.793 ms [oracle@collabn1 ~]$ ping -c 1 collabn2 PING collabn2 (192.168.78.52) 56(84) 位元組的資料。64 位元組來自 collabn2 (192.168.78.52):icmp_seq=1 ttl=64 time=0.024 ms [oracle@collabn1 ~]$ ping -c 1 collabn1-priv PING collabn1-priv (172.16.100.51) 56(84) 位元組的資料。64 位元組來自 collabn1-priv (172.16.100.51):icmp_seq=1 ttl=128 time=0.901 ms [oracle@collabn1 ~]$ ping -c 1 collabn2-priv PING collabn2-priv (172.16.100.52) 56(84) 位元組的資料。64 位元組來自 collabn2-priv (172.16.100.52):icmp_seq=1 ttl=64 time=0.058 ms [oracle@collabn1 ~]$ scp collabn2:.ssh/known_hosts ~/.ssh/known_hosts 無法建立主機“collabn2 (192.168.78.52)”的身份驗證。RSA 金鑰指紋為 3f:65:e6:77:af:11:84:56:a4:b9:0f:8b:41:b4:2f:8a。您確定要繼續連線嗎 (yes/no)?yes 警告:已將“collabn2,192.168.78.52” (RSA) 永久新增到已知主機列表中。known_hosts 100% 3146 3.1KB/s 00:00
  5. 測試 ssh 等效性。[oracle@collabn1 ~]$ ssh collabn2 上次登入:2008 年 4 月 15 日星期二 17:02:29 來自 collabn2 [oracle@collabn2 ~]$ exit 退出連線到 collabn2 已關閉。
  6. 您還需要能夠登入到自己;測試一下。[oracle@collabn1 ~]$ ssh collabn1 上次登入:2008 年 4 月 15 日星期二 17:03:39 來自 collabn2 [oracle@collabn1 ~]$ exit 退出連線到 collabn1 已關閉。
  7. 執行 CLUVFY 來驗證您的硬體和作業系統安裝!共享磁碟測試將失敗;這是正常的。忽略該錯誤。collabn1:/home/oracle[RAC1]$ /mnt/cdrom*/grid/runcluvfy.sh stage -post hwos -n collabn1,collabn2 執行硬體和作業系統設定後的檢查 檢查節點可達性... 從節點“collabn1”進行的節點可達性檢查已透過 檢查使用者等效性... 使用者“oracle”的使用者等效性檢查已透過 檢查節點連線性... 檢查主機配置檔案... 主機配置檔案驗證成功 節點連線性已透過子網“192.168.78.0”幷包含節點(s)collabn2,collabn1 TCP 連線性檢查已透過子網“192.168.78.0” 節點連線性已透過子網“172.16.100.0”幷包含節點(s)collabn2,collabn1 TCP 連線性檢查已透過子網“172.16.100.0” 在子網“192.168.78.0”上找到的可能是 VIP 候選的介面是: collabn2 eth0:192.168.78.52 collabn1 eth0:192.168.78.51 在子網“172.16.100.0”上找到的可能是專用互連候選的介面是: collabn2 eth1:172.16.100.52 collabn1 eth1:172.16.100.51 節點連線性檢查已透過 檢查具有 UID 值 0 的多個使用者已透過 硬體和作業系統設定後的檢查已成功。



網格安裝 (ASM)

[編輯 | 編輯原始碼]

設定 ASMLIB

[編輯 | 編輯原始碼]
  1. 以 oracle 身份登入 collabn1 並開啟一個終端。切換到 root 使用者。
  2. 在兩個節點上安裝 ASMLib 並初始化磁碟。如果您已從之前的步驟中掛載了 cdrom,則 mount 命令可能會失敗(mount: /dev/cdrom-hda already mounted or /mnt/cdrom busy)。[root@collabn1 ~]# cd /mnt [root@collabn1 mnt]# mount /mnt/cdrom mount: block device /dev/cdrom-hda is write-protected, mounting read-only [root@collabn1 mnt]# mount /mnt/cdrom5 mount: block device /dev/cdrom-hdb is write-protected, mounting read-only # OracleASM rpm -Uvh */*/oracleasm-support* rpm -Uvh */*/oracleasm*el5-2* # (注意 - 這是小寫 EL5-2。) # 安裝介質中缺少;已複製到 RAC 攻擊 DVD。 rpm -Uvh */oracleasmlib* [root@collabn1 mnt]# /etc/init.d/oracleasm configure 配置 Oracle ASM 庫驅動程式。這將配置 Oracle ASM 庫驅動程式的開機屬性。以下問題將確定驅動程式是否在開機時載入以及它將具有哪些許可權。當前值將在方括號 ('[]') 中顯示。按<ENTER>鍵不輸入答案將保留當前值。Ctrl-C 將中止。擁有驅動程式介面的預設使用者 []: oracle 擁有驅動程式介面的預設組 []: dba 開機時啟動 Oracle ASM 庫驅動程式 (y/n) [n]: y 開機時修復 Oracle ASM 磁碟的許可權 (y/n) [y]: y 正在寫入 Oracle ASM 庫驅動程式配置:已完成 初始化 Oracle ASMLib 驅動程式: [ OK ] 正在掃描系統以查詢 Oracle ASMLib 磁碟: [ OK ]
    [root@collabn1 ~]# /etc/init.d/oracleasm createdisk data /dev/sdb1
    Marking disk "data" as an ASM disk:                        [  OK  ]
    [root@collabn1 ~]# /etc/init.d/oracleasm createdisk backup /dev/sdc1
    Marking disk "backup" as an ASM disk:                      [  OK  ]
    [root@collabn1 ~]# /etc/init.d/oracleasm listdisks
    BACKUP
    DATA
    
    

    現在,在第二臺虛擬機器上重複一些步驟

    [root@collabn1 ~]# ssh collabn2
     
    [root@collabn2 ~]# cd /mnt
     
    # OracleASM
    rpm -Uvh */*/oracleasm-support*
    rpm -Uvh */*/oracleasm*el5-2*
    # Missing from the install media; copied to RAC Attack DVD.
    rpm -Uvh */oracleasmlib*
     
    [root@collabn2 ~]# /etc/init.d/oracleasm configure
    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 []: oracle
    Default group to own the driver interface []: dba
    Start Oracle ASM library driver on boot (y/n) [n]: y
    Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
    Writing Oracle ASM library driver configuration: done
    Initializing the Oracle ASMLib driver:                     [  OK  ]
    Scanning the system for Oracle ASMLib disks:               [  OK  ]
     
    [root@collabn2 ~]# /etc/init.d/oracleasm listdisks
    BACKUP
    DATA
    



叢集驗證實用程式 (ASM)

[編輯 | 編輯原始碼]
  1. oracle 使用者身份登入 collabn1 並開啟一個終端。
  2. 執行 CVU 來驗證您是否已準備好安裝 CRS。使用 11gR2 CVU 的新“fixup”功能來建立一個可以修復缺少引數的指令碼。[oracle@collabn1 ~]$ /mnt/cdrom*/grid/runcluvfy.sh stage -pre crsinst -n collabn1,collabn2 -fixup -r 11gR2 執行叢集服務設定前的檢查 檢查節點可達性... 從節點“collabn1”進行的節點可達性檢查已透過 檢查使用者等效性... 使用者“oracle”的使用者等效性檢查已透過 檢查節點連線性... 檢查主機配置檔案... 主機配置檔案驗證成功 節點連線性已透過子網“192.168.78.0”幷包含節點(s)collabn2,collabn1 TCP 連線性檢查已透過子網“192.168.78.0” 節點連線性已透過子網“172.16.100.0”幷包含節點(s)collabn2,collabn1 TCP 連線性檢查已透過子網“172.16.100.0” 在子網“192.168.78.0”上找到的可能是 VIP 候選的介面是: collabn2 eth0:192.168.78.52 collabn1 eth0:192.168.78.51 在子網“172.16.100.0”上找到的可能是專用互連候選的介面是: collabn2 eth1:172.16.100.52 collabn1 eth1:172.16.100.51 節點連線性檢查已透過 總記憶體檢查失敗 檢查在節點上失敗:collabn2,collabn1 可用記憶體檢查已透過 交換空間檢查失敗 "collabn2:/tmp" 的可用磁碟空間檢查已透過 "collabn1:/tmp" 的可用磁碟空間檢查已透過 使用者“oracle”存在性檢查已透過 組“oinstall”存在性檢查已透過 組“dba”存在性檢查已透過 使用者“oracle”在組“oinstall”中的成員身份檢查 [作為主使用者] 已透過 使用者“oracle”在組“dba”中的成員身份檢查已透過 執行級別檢查已透過 “最大開啟檔案描述符”的硬限制檢查已透過 “最大開啟檔案描述符”的軟限制檢查已透過 “最大使用者程序”的硬限制檢查已透過 “最大使用者程序”的軟限制檢查已透過 系統體系結構檢查已透過 核心版本檢查已透過 “semmsl”的核心引數檢查已透過 “semmns”的核心引數檢查已透過 “semopm”的核心引數檢查已透過 “semmni”的核心引數檢查已透過 “shmmax”的核心引數檢查已透過 “shmmni”的核心引數檢查已透過 “shmall”的核心引數檢查已透過 “file-max”的核心引數檢查失敗 檢查在節點上失敗:collabn2,collabn1 “ip_local_port_range”的核心引數檢查已透過 “rmem_default”的核心引數檢查已透過 “rmem_max”的核心引數檢查已透過 “wmem_default”的核心引數檢查已透過 “wmem_max”的核心引數檢查失敗 檢查在節點上失敗:collabn2,collabn1 “aio-max-nr”的核心引數檢查失敗 檢查在節點上失敗:collabn2,collabn1 包“make-3.81”存在性檢查已透過 包“binutils-2.17.50.0.6”存在性檢查已透過 包“gcc-4.1.2”存在性檢查已透過 包“gcc-c++-4.1.2”存在性檢查已透過 包“libgomp-4.1.2”存在性檢查已透過 包“libaio-0.3.106”存在性檢查已透過 包“glibc-2.5-24”存在性檢查已透過 包“compat-libstdc++-33-3.2.3”存在性檢查已透過 包“elfutils-libelf-0.125”存在性檢查已透過 包“elfutils-libelf-devel-0.125”存在性檢查已透過 包“glibc-common-2.5”存在性檢查已透過 包“glibc-devel-2.5”存在性檢查已透過 包“glibc-headers-2.5”存在性檢查已透過 包“libaio-devel-0.3.106”存在性檢查已透過 包“libgcc-4.1.2”存在性檢查已透過 包“libstdc++-4.1.2”存在性檢查已透過 包“libstdc++-devel-4.1.2”存在性檢查已透過 包“sysstat-7.0.2”存在性檢查已透過 包“unixODBC-2.2.11”存在性檢查已透過 包“unixODBC-devel-2.2.11”存在性檢查已透過 包“ksh-20060214”存在性檢查已透過 檢查具有 UID 值 0 的多個使用者已透過 當前組 ID 檢查已透過 核心檔名稱模式一致性檢查已透過。使用者“oracle”不是“root”組的一部分。檢查已透過 預設使用者檔案建立掩碼檢查已透過 使用網路時間協議 (NTP) 啟動時鐘同步檢查... NTP 配置檔案檢查已開始... NTP 配置檔案檢查已透過 檢查守護程序活動性... “ntpd”的活動性檢查失敗 檢查在節點上失敗:collabn2,collabn1 PRVF-5415 : 檢查 NTP 守護程序是否正在執行失敗 使用網路時間協議 (NTP) 進行的時鐘同步檢查失敗 已針對以下節點(s)生成修復資訊:collabn2,collabn1 請以“root”使用者身份在每個節點上執行以下指令碼以執行修復: '/tmp/CVU_11.2.0.1.0_oracle/runfixup.sh' 叢集服務設定前的檢查在所有節點上均不成功。
  3. 切換到 root 使用者並在 兩個節點 上執行修復指令碼。collabn1:/home/oracle[RAC1]$ su - 密碼: -bash: oraenv: No such file or directory [root@collabn1 ~]# /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh 使用的響應檔案是 :/tmp/CVU_11.2.0.1.0_oracle/fixup.response 使用的啟用檔案是 :/tmp/CVU_11.2.0.1.0_oracle/fixup.enable 日誌檔案位置:/tmp/CVU_11.2.0.1.0_oracle/orarun.log 正在設定核心引數... fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.wmem_max=262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576 [root@collabn1 ~]# ssh collabn2 /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh root@collabn2 的密碼: /root/.bashrc: line 16: oraenv: No such file or directory 使用的響應檔案是 :/tmp/CVU_11.2.0.1.0_oracle/fixup.response 使用的啟用檔案是 :/tmp/CVU_11.2.0.1.0_oracle/fixup.enable 日誌檔案位置:/tmp/CVU_11.2.0.1.0_oracle/orarun.log 正在設定核心引數... fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.wmem_max=262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576
  4. oracle使用者身份,再次執行CVU以確保修復指令碼正常執行。NTP、記憶體和交換空間檢查可能會失敗 - 但對於我們的VMware測試叢集,這是可以接受的。[root@collabn1 ~]# exit logout collabn1:/home/oracle[RAC1]$ /mnt/cdrom*/grid/runcluvfy.sh stage -pre crsinst -n collabn1,collabn2 -r 11gR2 ... 總記憶體檢查失敗 ... 交換空間檢查失敗 ... 核心引數檢查透過 "file-max" ... 核心引數檢查透過 "wmem_max" 核心引數檢查透過 "aio-max-nr" ... 活性檢查失敗 "ntpd" ...



安裝網格基礎設施(ASM)

[編輯 | 編輯原始碼]
  1. oracle使用者身份,啟動網格安裝程式。在第一個螢幕上,選擇為叢集安裝和配置網格基礎設施,然後單擊下一步。[oracle@collabn1 ~]$ /mnt/cdrom*/grid/runInstaller


  2. 選擇高階安裝,然後單擊下一步
  3. 接受預設語言(英語)並選擇下一步
  4. 將叢集命名為collab,並確保SCAN名稱為collab-scan,埠為1521,然後單擊下一步
  5. 新增節點collabn2,其VIP為collabn2-vip,然後選擇下一步以驗證叢集配置。
  6. 驗證子網192.168.78.0上的eth0是否為PUBLIC,子網172.16.100.0上的eth1是否為PRIVATE,然後單擊下一步
  7. 選擇將叢集軟體檔案儲存在ASM中,然後選擇下一步
  8. 建立一個名為DATA的磁碟組,使用外部冗餘,只使用磁碟ORCL:DATA,然後單擊下一步
  9. 選擇對所有帳戶使用相同的密碼,並輸入密碼racattack,然後單擊下一步。(忽略Oracle不喜歡此密碼的訊息。)
  10. 不要使用IPMI。單擊下一步
  11. 將OSDBA組設定為asmdba,將OSOPER組設定為asmoper,將OSASM組設定為asmadmin。然後單擊下一步
  12. 接受ORACLE_BASE位置/u01/app/oracle,並使用ORACLE_HOME位置/u01/grid/oracle/product/11.2.0/grid_1。然後單擊下一步
  13. 接受預設的庫存位置/u01/app/oraInventory並選擇下一步
  14. 先決條件檢查將執行。將發出警告,說明三個檢查失敗:物理記憶體、交換空間和網路時間協議。單擊複選框以忽略所有,然後單擊下一步
  15. 在oracle使用者主目錄中儲存一個名為grid.rsp的響應檔案。然後單擊完成以安裝網格基礎設施。


  16. 出現提示時,以root使用者身份開啟一個終端並執行兩個root.sh指令碼。確保在兩個節點上都執行這兩個指令碼
    [oracle@collabn1 ~]$ su -
    Password: racattack
    
    [root@collabn1 ~]# /u01/app/oraInventory/orainstRoot.sh
    Changing permissions of /u01/app/oraInventory.
    Adding read, write permissions for group.
    Removing read,write,execute permissions for world.
    
    Changing groupname of /u01/app/oraInventory to oinstall.
    The execution of the script is complete.
    
    [root@collabn1 ~]# /u01/grid/oracle/product/11.2.0/grid_1/root.sh
    Running Oracle 11g root.sh script...
    
    The following environment variables are set as:
        ORACLE_OWNER= oracle
        ORACLE_HOME=  /u01/grid/oracle/product/11.2.0/grid_1
    
    Enter the full pathname of the local bin directory: [/usr/local/bin]: /usr/bin
       Copying dbhome to /usr/bin ...
       Copying oraenv to /usr/bin ...
       Copying coraenv to /usr/bin ...
    
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    2011-03-30 16:49:13: Parsing the host name
    2011-03-30 16:49:13: Checking for super user privileges
    2011-03-30 16:49:13: User has super user privileges
    Using configuration parameter file: /u01/grid/oracle/product/11.2.0/grid_1/crs/install/crsconfig_params
    Creating trace directory
    LOCAL ADD MODE
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
      root wallet
      root wallet cert
      root cert export
      peer wallet
      profile reader wallet
      pa wallet
      peer wallet keys
      pa wallet keys
      peer cert request
      pa cert request
      peer cert
      pa cert
      peer root cert TP
      profile reader root cert TP
      pa root cert TP
      peer pa cert TP
      pa peer cert TP
      profile reader pa cert TP
      profile reader peer cert TP
      peer user cert
      pa user cert
    Adding daemon to inittab
    CRS-4123: Oracle High Availability Services has been started.
    ohasd is starting
    CRS-2672: Attempting to start 'ora.gipcd' on 'collabn1'
    CRS-2672: Attempting to start 'ora.mdnsd' on 'collabn1'
    CRS-2676: Start of 'ora.mdnsd' on 'collabn1' succeeded
    CRS-2676: Start of 'ora.gipcd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.gpnpd' on 'collabn1'
    CRS-2676: Start of 'ora.gpnpd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.cssdmonitor' on 'collabn1'
    CRS-2676: Start of 'ora.cssdmonitor' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.cssd' on 'collabn1'
    CRS-2672: Attempting to start 'ora.diskmon' on 'collabn1'
    CRS-2676: Start of 'ora.diskmon' on 'collabn1' succeeded
    CRS-2676: Start of 'ora.cssd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.ctssd' on 'collabn1'
    CRS-2676: Start of 'ora.ctssd' on 'collabn1' succeeded
    
    ASM created and started successfully.
    
    DiskGroup DATA created successfully.
    
    clscfg: -install mode specified
    Successfully accumulated necessary OCR keys.
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
    CRS-2672: Attempting to start 'ora.crsd' on 'collabn1'
    CRS-2676: Start of 'ora.crsd' on 'collabn1' succeeded
    CRS-4256: Updating the profile
    Successful addition of voting disk 6b7c5142d3214fe9bf4d4273f0ff11fd.
    Successfully replaced voting disk group with +DATA.
    CRS-4256: Updating the profile
    CRS-4266: Voting file(s) successfully replaced
    ##  STATE    File Universal Id                File Name Disk group
    --  -----    -----------------                --------- ---------
     1. ONLINE   6b7c5142d3214fe9bf4d4273f0ff11fd (ORCL:DATA) [DATA]
    Located 1 voting disk(s).
    CRS-2673: Attempting to stop 'ora.crsd' on 'collabn1'
    CRS-2677: Stop of 'ora.crsd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.asm' on 'collabn1'
    CRS-2677: Stop of 'ora.asm' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.ctssd' on 'collabn1'
    CRS-2677: Stop of 'ora.ctssd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.cssdmonitor' on 'collabn1'
    CRS-2677: Stop of 'ora.cssdmonitor' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.cssd' on 'collabn1'
    CRS-2677: Stop of 'ora.cssd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.gpnpd' on 'collabn1'
    CRS-2677: Stop of 'ora.gpnpd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.gipcd' on 'collabn1'
    CRS-2677: Stop of 'ora.gipcd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.mdnsd' on 'collabn1'
    CRS-2677: Stop of 'ora.mdnsd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.mdnsd' on 'collabn1'
    CRS-2676: Start of 'ora.mdnsd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.gipcd' on 'collabn1'
    CRS-2676: Start of 'ora.gipcd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.gpnpd' on 'collabn1'
    CRS-2676: Start of 'ora.gpnpd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.cssdmonitor' on 'collabn1'
    CRS-2676: Start of 'ora.cssdmonitor' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.cssd' on 'collabn1'
    CRS-2672: Attempting to start 'ora.diskmon' on 'collabn1'
    CRS-2676: Start of 'ora.diskmon' on 'collabn1' succeeded
    CRS-2676: Start of 'ora.cssd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.ctssd' on 'collabn1'
    CRS-2676: Start of 'ora.ctssd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.asm' on 'collabn1'
    CRS-2676: Start of 'ora.asm' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.crsd' on 'collabn1'
    CRS-2676: Start of 'ora.crsd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.evmd' on 'collabn1'
    CRS-2676: Start of 'ora.evmd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.asm' on 'collabn1'
    CRS-2676: Start of 'ora.asm' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.DATA.dg' on 'collabn1'
    CRS-2676: Start of 'ora.DATA.dg' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.registry.acfs' on 'collabn1'
    CRS-2676: Start of 'ora.registry.acfs' on 'collabn1' succeeded
    
    collabn1     2011/03/30 16:59:35     /u01/grid/oracle/product/11.2.0/grid_1/cdata/collabn1/backup_20110330_165935.olr
    Preparing packages for installation...
    cvuqdisk-1.0.7-1
    Configure Oracle Grid Infrastructure for a Cluster ... succeeded
    Updating inventory properties for clusterware
    Starting Oracle Universal Installer...
    
    Checking swap space: must be greater than 500 MB.   Actual 968 MB    Passed
    The inventory pointer is located at /etc/oraInst.loc
    The inventory is located at /u01/app/oraInventory
    'UpdateNodeList' was successful.
    
  17. [root@collabn1 ~]# vmstat 3 4
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     0  0 660156  11868   6472 263348   33  229  1505  2740 1194 2407  8 22 44 27  0
     2  0 660156  11884   6472 263364    0    0     1     3  712 3635  2  4 90  4  0
     1  0 660156  11884   6480 263368    0    0     0    34  701 3565  1  3 90  6  0
     4  0 660156  11884   6480 263372    0    0     1     5  721 3642  2  8 88  2  0
    
    [root@collabn1 ~]# ssh collabn2
    root@collabn2's password: racattack
    -bash: oraenv: No such file or directory
    [root@collabn2 ~]# /u01/app/oraInventory/orainstRoot.sh
    Changing permissions of /u01/app/oraInventory.
    Adding read, write permissions for group.
    Removing read,write,execute permissions for world.
    
    Changing groupname of /u01/app/oraInventory to oinstall.
    The execution of the script is complete.
    
    [root@collabn2 ~]# /u01/grid/oracle/product/11.2.0/grid_1/root.sh
    Running Oracle 11g root.sh script...
    
    The following environment variables are set as:
        ORACLE_OWNER= oracle
        ORACLE_HOME=  /u01/grid/oracle/product/11.2.0/grid_1
    
    Enter the full pathname of the local bin directory: [/usr/local/bin]: /usr/bin
       Copying dbhome to /usr/bin ...
       Copying oraenv to /usr/bin ...
       Copying coraenv to /usr/bin ...
    
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    2011-03-30 17:04:26: Parsing the host name
    2011-03-30 17:04:26: Checking for super user privileges
    2011-03-30 17:04:26: User has super user privileges
    Using configuration parameter file: /u01/grid/oracle/product/11.2.0/grid_1/crs/install/crsconfig_params
    Creating trace directory
    LOCAL ADD MODE
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
    Adding daemon to inittab
    CRS-4123: Oracle High Availability Services has been started.
    ohasd is starting
    CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node collabn1, number 1, and is terminating
    An active cluster was found during exclusive startup, restarting to join the cluster
    CRS-2672: Attempting to start 'ora.mdnsd' on 'collabn2'
    CRS-2676: Start of 'ora.mdnsd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.gipcd' on 'collabn2'
    CRS-2676: Start of 'ora.gipcd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.gpnpd' on 'collabn2'
    CRS-2676: Start of 'ora.gpnpd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.cssdmonitor' on 'collabn2'
    CRS-2676: Start of 'ora.cssdmonitor' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.cssd' on 'collabn2'
    CRS-2672: Attempting to start 'ora.diskmon' on 'collabn2'
    CRS-2676: Start of 'ora.diskmon' on 'collabn2' succeeded
    CRS-2676: Start of 'ora.cssd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.ctssd' on 'collabn2'
    CRS-2676: Start of 'ora.ctssd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.drivers.acfs' on 'collabn2'
    CRS-2676: Start of 'ora.drivers.acfs' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.asm' on 'collabn2'
    CRS-2676: Start of 'ora.asm' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.crsd' on 'collabn2'
    CRS-2676: Start of 'ora.crsd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.evmd' on 'collabn2'
    CRS-2676: Start of 'ora.evmd' on 'collabn2' succeeded
    
    collabn2     2011/03/30 17:12:32     /u01/grid/oracle/product/11.2.0/grid_1/cdata/collabn2/backup_20110330_171232.olr
    Preparing packages for installation...
    cvuqdisk-1.0.7-1
    Configure Oracle Grid Infrastructure for a Cluster ... succeeded
    Updating inventory properties for clusterware
    Starting Oracle Universal Installer...
    
    Checking swap space: must be greater than 500 MB.   Actual 1205 MB    Passed
    The inventory pointer is located at /etc/oraInst.loc
    The inventory is located at /u01/app/oraInventory
    'UpdateNodeList' was successful.
    
    


  18. 執行完兩個指令碼後,返回安裝程式視窗並單擊確定以繼續執行配置助手。
  19. 叢集驗證實用程式將失敗,因為NTP未執行。如果您願意,請檢視日誌檔案末尾的錯誤訊息。然後單擊確定關閉訊息框,並單擊下一步以繼續。
  20. 您現在應該看到最終螢幕!單擊關閉退出安裝程式。



增加CRS圍欄超時(ASM)

[編輯 | 編輯原始碼]

這些步驟對於測試或生產環境來說並不必要。但是,它們可能會使您的VMware測試叢集更加穩定,並且它們將提供一個關於網格基礎設施的良好學習機會。



  1. 網格基礎設施必須只在一個節點上執行才能更改這些設定。以root使用者身份關閉collabn2上的叢集軟體。[oracle@collabn1 ~]$ ssh collabn2 最後登入時間:2011年3月30日星期三 14:50:49 透過鍵入 'oenv' 設定環境 - 預設值為例項RAC1。 collabn2:/home/oracle[RAC1]$ su - 密碼:racattack [root@collabn2 bin]# crsctl stop crs CRS-2791:在'collabn2'上啟動Oracle高可用性服務管理資源的關閉 CRS-2673:嘗試停止'collabn2'上的'ora.crsd' CRS-2790:在'collabn2'上啟動叢集就緒服務的管理資源的關閉 ... ... ... CRS-2793:'collabn2'上Oracle高可用性服務管理資源的關閉已完成 CRS-4133:Oracle高可用性服務已停止。
  2. 返回節點collabn1。以root使用者身份,增加misscount,以便CRS在重啟之前等待1.5分鐘。(VMware可能會在某些筆記型電腦上稍微拖延!)[root@collabn1 ~]# crsctl get css misscount 30 [root@collabn1 ~]# crsctl set css misscount 90 配置引數misscount現在設定為90。
  3. 增加disktimeout,以便CRS在重啟之前等待10分鐘以完成I/O。[root@collabn1 ~]# crsctl get css disktimeout 200 [root@collabn1 ~]# crsctl set css disktimeout 600 配置引數disktimeout現在設定為600。
  4. 在另一個節點上重新啟動CRS。[root@collabn1 bin]# ssh collabn2 [root@collabn2 bin]# crsctl start crs



設定ASM

[編輯 | 編輯原始碼]
  1. 以oracle使用者身份,使用oenv宏(來自Ardent Performance Computing)為SID+ASM1設定您的環境。然後,鍵入asmca以啟動ASMCA。collabn1:/home/oracle[RAC1]$ oenv 這裡的SID是:grid +ASM1 ORACLE_SID = [RAC1] ? +ASM1 ORACLE_HOME=/u01/grid/oracle/product/11.2.0/grid_1 的Oracle基礎是/u01/app/oracle collabn1:/home/oracle[+ASM1]$ asmca
  2. 確保您位於磁碟組選項卡上,然後右鍵單擊DATA磁碟組並選擇編輯屬性
  3. 將資料庫相容性和ADVM相容性都設定為11.2.0.0.0,然後單擊確定。在提示有關提高資料庫相容性時選擇
  4. 單擊建立按鈕新增一個新的磁碟組。
  5. 將新磁碟組命名為BACKUP。選擇外部冗餘並選擇磁碟ORCL:BACKUP。然後,單擊顯示高階選項按鈕。
  6. 保留分配單元為1MB,並將所有相容性引數設定為11.2.0.0.0,然後單擊確定


  7. 單擊退出關閉ASM配置助手。


網格安裝(共享檔案系統)

[編輯 | 編輯原始碼]

設定OCFS2

[編輯 | 編輯原始碼]
  1. collabn1上以root使用者身份開啟一個終端。


  2. 在兩個節點上為兩個OCFS卷建立掛載點:/u51/u52。[root@collabn1 ~]# mkdir /u51 [root@collabn1 ~]# mkdir /u52 [root@collabn1 ~]# ssh collabn2 root@collabn2的密碼:racattack [root@collabn2 ~]# mkdir /u51 [root@collabn2 ~]# mkdir /u52
  3. 從OEL(Oracle Enterprise Linux)安裝介質安裝並載入OCFS2軟體包,然後載入模組。在collabn2上也安裝並載入OCFS2。[root@collabn1 ~]# cd /mnt # 來自企業Linux 5磁碟3 rpm -Uvh */*/ocfs2-tools-1.* rpm -Uvh */*/ocfs2-*el5-* rpm -Uvh */*/ocfs2console-* [root@collabn1 mnt]# /etc/init.d/o2cb load 載入模組"configfs": 確定 將configfs檔案系統安裝到/sys/kernel/config:確定 載入模組"ocfs2_nodemanager": 確定 載入模組"ocfs2_dlm": 確定 載入模組"ocfs2_dlmfs": 確定 建立目錄'/dlm':確定 將ocfs2_dlmfs檔案系統安裝到/dlm:確定 [root@collabn1 ~]# ssh collabn2 root@collabn2的密碼:racattack [root@collabn2 ~]# cd /mnt # 來自企業Linux 5磁碟3 rpm -Uvh */*/ocfs2-tools-1.* rpm -Uvh */*/ocfs2-*el5-* rpm -Uvh */*/ocfs2console-* [root@collabn2 mnt]# /etc/init.d/o2cb load 載入模組"configfs": 確定 將configfs檔案系統安裝到/sys/kernel/config:確定 載入模組"ocfs2_nodemanager": 確定 載入模組"ocfs2_dlm": 確定 載入模組"ocfs2_dlmfs": 確定 建立目錄'/dlm':確定 將ocfs2_dlmfs檔案系統安裝到/dlm:確定
  4. 從終端視窗中,以root身份啟動ocfs2console
  5. CLUSTER選單中選擇CONFIGURE NODES…。如果您看到叢集已啟動的通知,請單擊關閉按鈕確認。


  6. 點選ADD,輸入collabn1和私有 IP 172.16.100.51。接受預設埠。點選OK儲存。
  7. 再次點選ADD,輸入collabn2172.16.100.52。然後選擇APPLY,再點選CLOSE關閉視窗。
  8. CLUSTER選單中選擇PROPAGATE CONFIGURATION…。如果提示您接受主機金鑰,請輸入YES。在兩個提示符處輸入根密碼racattack。當您看到訊息“Finished!”時,按下<ALT-C>關閉視窗。
  9. TASKS選單中選擇FORMAT建立 OCFS 檔案系統。選擇/dev/sdb1並輸入卷標u51-data。將其他選項保留為預設值,然後單擊OK格式化卷。透過單擊YES確認。


  10. 對卷/dev/sdc1重複上述步驟,並將其命名為u52-backup
  11. FILE選單中選擇QUIT退出 OCFS2 控制檯。
  12. 在兩個節點上配置 OCFS2。我們將使用保守的磁碟心跳超時(300 秒),因為 VMware 在某些筆記型電腦上速度很慢。 [root@collabn1 mnt]# /etc/init.d/o2cb configure 配置 O2CB 驅動程式。這將配置 O2CB 驅動程式的啟動時屬性。以下問題將決定驅動程式是否在啟動時載入。當前值將顯示在方括號 ('[]') 中。按<ENTER>而不鍵入答案將保留該當前值。Ctrl-C 將中止。在啟動時載入 O2CB 驅動程式 (y/n) [n]: y 支援 O2CB 的叢集堆疊 [o2cb]: 在啟動時啟動的叢集(輸入“none”以清除) [ocfs2]: 指定心跳超時閾值 (>=7) [31]: 300 指定網路空閒超時(毫秒) (>=5000) [30000]: 指定網路保活延遲(毫秒) (>=1000) [2000]: 指定網路重新連線延遲(毫秒) (>=2000) [2000]: 正在寫入 O2CB 配置:OK 叢集 ocfs2 已線上 [root@collabn1 ~]# ssh collabn2 root@collabn2 的密碼:racattack [root@collabn2 mnt]# /etc/init.d/o2cb configure 配置 O2CB 驅動程式。這將配置 O2CB 驅動程式的啟動時屬性。以下問題將決定驅動程式是否在啟動時載入。當前值將顯示在方括號 ('[]') 中。按<ENTER>而不鍵入答案將保留該當前值。Ctrl-C 將中止。在啟動時載入 O2CB 驅動程式 (y/n) [n]: y 支援 O2CB 的叢集堆疊 [o2cb]: 在啟動時啟動的叢集(輸入“none”以清除) [ocfs2]: 指定心跳超時閾值 (>=7) [31]: 300 指定網路空閒超時(毫秒) (>=5000) [30000]: 指定網路保活延遲(毫秒) (>=1000) [2000]: 指定網路重新連線延遲(毫秒) (>=2000) [2000]: 正在寫入 O2CB 配置:OK 啟動 O2CB 叢集 ocfs2:OK
  13. 在執行 ocfs2console 的節點上重新載入 O2CB 驅動程式。 [root@collabn2 mnt]# exit 登出 與 collabn2 的連線已關閉。 [root@collabn1 mnt]# /etc/init.d/o2cb force-reload 停止 O2CB 叢集 ocfs2:OK 解除安裝 ocfs2_dlmfs 檔案系統:OK 解除安裝模組“ocfs2_dlmfs”:OK 解除安裝 configfs 檔案系統:OK 解除安裝模組“configfs”:OK 載入檔案系統“configfs”:OK 裝載 configfs 檔案系統到 /sys/kernel/config:OK 載入檔案系統“ocfs2_dlmfs”:OK 裝載 ocfs2_dlmfs 檔案系統到 /dlm:OK 啟動 O2CB 叢集 ocfs2:OK
  14. 編輯/etc/fstab,新增新檔案系統的條目。 [root@collabn1 ~]# vi /etc/fstab LABEL=u51-data /u51 ocfs2 _netdev,datavolume,nointr 0 0 LABEL=u52-backup /u52 ocfs2 _netdev,datavolume,nointr 0 0
  15. 掛載卷併為 Oracle 資料庫檔案建立目錄。 [root@collabn1 ~]# mount /u51 [root@collabn1 ~]# mount /u52 [root@collabn1 ~]# mkdir /u51/oradata [root@collabn1 ~]# mkdir /u52/oradata [root@collabn1 ~]# mkdir /u51/cluster [root@collabn1 ~]# chown oracle:dba /u51/oradata /u52/oradata /u51/cluster [root@collabn1 ~]# df -h 檔案系統 尺寸 已用 可用 使用% 掛載點 /dev/sdb1 3.3G 279M 3.0G 9% /u51 /dev/sdc1 3.3G 279M 3.0G 9% /u52
  16. root身份登入第二個節點collabn2,並在那裡重複這些步驟。 [root@collabn1 ~]# ssh collabn2 root@collabn2 的密碼:racattack [root@collabn2 ~]# vi /etc/fstab LABEL=u51-data /u51 ocfs2 _netdev,datavolume,nointr 0 0 LABEL=u52-backup /u52 ocfs2 _netdev,datavolume,nointr 0 0 [root@collabn2 ~]# mount /u51 [root@collabn2 ~]# mount /u52 [root@collabn2 ~]# df -h 檔案系統 尺寸 已用 可用 使用% 掛載點 /dev/sdb1 3.3G 279M 3.0G 9% /u51 /dev/sdc1 3.3G 279M 3.0G 9% /u52 [root@collabn2 ~]# ls -l /u5* /u51: 總計 0 drwxr-xr-x 2 oracle dba 3896 9月 26 15:30 cluster drwxr-xr-x 2 root root 3896 9月 26 15:26 lost+found drwxr-xr-x 2 oracle dba 3896 9月 26 15:29 oradata /u52: 總計 0 drwxr-xr-x 2 root root 3896 9月 26 15:26 lost+found drwxr-xr-x 2 oracle dba 3896 9月 26 15:30 oradata
  17. 可選地,檢查/var/log/messagesdmesg輸出以獲取與 OCFS2 相關的狀態訊息。


叢集驗證工具(共享檔案系統)

[edit | edit source]
  1. oracle 使用者身份登入 collabn1 並開啟一個終端。
  2. 執行CVU以驗證您是否已準備好安裝 CRS。使用 11gR2 CVU 的新“fixup”功能建立可以修復缺少引數的指令碼。 [oracle@collabn1 ~]$ /mnt/cdrom*/grid/runcluvfy.sh stage -pre crsinst -n collabn1,collabn2 -fixup -r 11gR2 正在執行叢集服務設定的預檢查 正在檢查節點可達性... 節點可達性檢查已從節點“collabn1”透過 正在檢查使用者等效性... 使用者等效性檢查已針對使用者“oracle”透過 正在檢查節點連線性... 正在檢查 hosts 配置檔案... Hosts 配置檔案的驗證已成功 節點連線性已針對子網“192.168.78.0”與節點(s) collabn2、collabn1 透過 TCP 連線性檢查已針對子網“192.168.78.0”透過 節點連線性已針對子網“172.16.100.0”與節點(s) collabn2、collabn1 透過 TCP 連線性檢查已針對子網“172.16.100.0”透過 在子網“192.168.78.0”上找到的可能適合 VIP 的介面是: collabn2 eth0:192.168.78.52 collabn1 eth0:192.168.78.51 在子網“172.16.100.0”上找到的可能適合私有互連的介面是: collabn2 eth1:172.16.100.52 collabn1 eth1:172.16.100.51 節點連線性檢查已透過 總記憶體檢查失敗 檢查已在節點(s) 上失敗:collabn2、collabn1 可用記憶體檢查已透過 交換空間檢查失敗 已為“collabn2:/tmp”透過的可用磁碟空間檢查 已為“collabn1:/tmp”透過的可用磁碟空間檢查 使用者存在性檢查已針對“oracle”透過 組存在性檢查已針對“oinstall”透過 組存在性檢查已針對“dba”透過 使用者“oracle”在組“oinstall”中的成員資格檢查 [作為主] 已透過 使用者“oracle”在組“dba”中的成員資格檢查已透過 執行級別檢查已透過 已為“最大開啟檔案描述符”透過硬限制 已為“最大開啟檔案描述符”透過軟限制 已為“最大使用者程序”透過硬限制 已為“最大使用者程序”透過軟限制 系統架構檢查已透過 核心版本檢查已透過 已為“semmsl”透過核心引數檢查 已為“semmns”透過核心引數檢查 已為“semopm”透過核心引數檢查 已為“semmni”透過核心引數檢查 已為“shmmax”透過核心引數檢查 已為“shmmni”透過核心引數檢查 已為“shmall”透過核心引數檢查 已為“file-max”失敗核心引數檢查 檢查已在節點(s) 上失敗:collabn2、collabn1 已為“ip_local_port_range”透過核心引數檢查 已為“rmem_default”透過核心引數檢查 已為“rmem_max”透過核心引數檢查 已為“wmem_default”透過核心引數檢查 已為“wmem_max”失敗核心引數檢查 檢查已在節點(s) 上失敗:collabn2、collabn1 已為“aio-max-nr”失敗核心引數檢查 檢查已在節點(s) 上失敗:collabn2、collabn1 包存在性檢查已針對“make-3.81”透過 包存在性檢查已針對“binutils-2.17.50.0.6”透過 包存在性檢查已針對“gcc-4.1.2”透過 包存在性檢查已針對“gcc-c++-4.1.2”透過 包存在性檢查已針對“libgomp-4.1.2”透過 包存在性檢查已針對“libaio-0.3.106”透過 包存在性檢查已針對“glibc-2.5-24”透過 包存在性檢查已針對“compat-libstdc++-33-3.2.3”透過 包存在性檢查已針對“elfutils-libelf-0.125”透過 包存在性檢查已針對“elfutils-libelf-devel-0.125”透過 包存在性檢查已針對“glibc-common-2.5”透過 包存在性檢查已針對“glibc-devel-2.5”透過 包存在性檢查已針對“glibc-headers-2.5”透過 包存在性檢查已針對“libaio-devel-0.3.106”透過 包存在性檢查已針對“libgcc-4.1.2”透過 包存在性檢查已針對“libstdc++-4.1.2”透過 包存在性檢查已針對“libstdc++-devel-4.1.2”透過 包存在性檢查已針對“sysstat-7.0.2”透過 包存在性檢查已針對“unixODBC-2.2.11”透過 包存在性檢查已針對“unixODBC-devel-2.2.11”透過 包存在性檢查已針對“ksh-20060214”透過 已針對具有 UID 值 0 的多個使用者透過檢查 當前組 ID 檢查已透過 核心檔名稱模式一致性檢查已透過。使用者“oracle”不屬於“root”組。檢查已透過 預設使用者檔案建立掩碼檢查已透過 正在使用網路時間協議 (NTP) 啟動時鐘同步檢查... NTP 配置檔案檢查已開始... NTP 配置檔案檢查已透過 正在檢查守護程序活躍性... 已為“ntpd”失敗活躍性檢查 檢查已在節點(s) 上失敗:collabn2、collabn1 PRVF-5415 : 檢查 NTP 守護程序是否正在執行已失敗 使用網路時間協議 (NTP) 的時鐘同步檢查已失敗 已為以下節點(s) 生成修復資訊:collabn2、collabn1 請以“root”使用者身份在每個節點上執行以下指令碼以執行修復:'/tmp/CVU_11.2.0.1.0_oracle/runfixup.sh' 在所有節點上,叢集服務設定的預檢查均不成功。
  3. 切換到 root 使用者並在 兩個節點 上執行修復指令碼。collabn1:/home/oracle[RAC1]$ su - 密碼: -bash: oraenv: No such file or directory [root@collabn1 ~]# /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh 使用的響應檔案是 :/tmp/CVU_11.2.0.1.0_oracle/fixup.response 使用的啟用檔案是 :/tmp/CVU_11.2.0.1.0_oracle/fixup.enable 日誌檔案位置:/tmp/CVU_11.2.0.1.0_oracle/orarun.log 正在設定核心引數... fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.wmem_max=262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576 [root@collabn1 ~]# ssh collabn2 /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh root@collabn2 的密碼: /root/.bashrc: line 16: oraenv: No such file or directory 使用的響應檔案是 :/tmp/CVU_11.2.0.1.0_oracle/fixup.response 使用的啟用檔案是 :/tmp/CVU_11.2.0.1.0_oracle/fixup.enable 日誌檔案位置:/tmp/CVU_11.2.0.1.0_oracle/orarun.log 正在設定核心引數... fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.wmem_max=262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576
  4. oracle使用者身份,再次執行CVU以確保修復指令碼正常執行。NTP、記憶體和交換空間檢查可能會失敗 - 但對於我們的VMware測試叢集,這是可以接受的。[root@collabn1 ~]# exit logout collabn1:/home/oracle[RAC1]$ /mnt/cdrom*/grid/runcluvfy.sh stage -pre crsinst -n collabn1,collabn2 -r 11gR2 ... 總記憶體檢查失敗 ... 交換空間檢查失敗 ... 核心引數檢查透過 "file-max" ... 核心引數檢查透過 "wmem_max" 核心引數檢查透過 "aio-max-nr" ... 活性檢查失敗 "ntpd" ...



11gR2 錯誤解決方法

[edit | edit source]

在大型叢集資料庫部署中,多個 NFS 裝置和大型機叢集檔案系統非常常見。我們將在此處使用 OCFS2 來使用檔案系統練習 11gR2 RAC。

注意:11gR2 叢集軟體存在一個錯誤——它不允許叢集檔案位於 OCFS2 上(即使這是一個受支援的配置)。為了解決此錯誤,我們將使用本地“迴環”NFS 裝載將 OCFS2 目錄呈現給叢集軟體。



  1. 以 **root** 使用者身份,按照以下步驟在節點 **collabn1** 上設定本地 NFS 掛載:[root@collabn1 ~]# **mkdir /u61** [root@collabn1 ~]# **vi /etc/fstab** # 在 u61 上建立一個指向 u51 的 NFS 掛載 localhost:/u51 /u61 nfs \ rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,noac [root@collabn1 ~]# **vi /etc/exports** /u51 *(rw,no_root_squash,sync) [root@collabn1 ~]# **chkconfig nfs on** [root@collabn1 ~]# **service nfs start** [root@collabn1 ~]# **mount /u61**
  2. 在節點 **collabn2** 上重複所有這些步驟。[root@collabn1 ~]# **ssh collabn2** [root@collabn2 ~]# **mkdir /u61** [root@collabn2 ~]# **vi /etc/fstab** # 在 u61 上建立一個指向 u51 的 NFS 掛載 localhost:/u51 /u61 nfs \ rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,noac [root@collabn2 ~]# **vi /etc/exports** /u51 *(rw,no_root_squash,sync) [root@collabn2 ~]# **chkconfig nfs on** [root@collabn2 ~]# **service nfs start** [root@collabn2 ~]# **mount /u61**


安裝 Grid 基礎設施(共享檔案系統)

[編輯 | 編輯原始碼]

在大型叢集資料庫部署中,多個 NFS 裝置和大型機叢集檔案系統非常常見。我們將在此處使用 OCFS2 來使用檔案系統練習 11gR2 RAC。



  1. oracle使用者身份,啟動網格安裝程式。在第一個螢幕上,選擇為叢集安裝和配置網格基礎設施,然後單擊下一步。[oracle@collabn1 ~]$ /mnt/cdrom*/grid/runInstaller


  2. 選擇高階安裝,然後單擊下一步
  3. 接受預設語言(英語)並選擇下一步
  4. 將叢集命名為collab,並確保SCAN名稱為collab-scan,埠為1521,然後單擊下一步
  5. 新增節點collabn2,其VIP為collabn2-vip,然後選擇下一步以驗證叢集配置。
  6. 驗證子網192.168.78.0上的eth0是否為PUBLIC,子網172.16.100.0上的eth1是否為PRIVATE,然後單擊下一步
  7. 選擇將叢集軟體檔案儲存在 **共享檔案系統** 中,然後選擇 **下一步**。
  8. 對於 OCR,選擇外部冗餘並輸入路徑 /u61/cluster/ocr。(這是來自 BUG 修復的 NFS 位置。)單擊 **下一步** 繼續。
  9. 對於投票磁碟,執行相同的操作 - 選擇外部冗餘並輸入路徑 /u61/cluster/vdsk。(同樣,這是來自 BUG 修復的 NFS 位置。)單擊 **下一步** 繼續。
  10. 不要使用IPMI。單擊下一步
  11. 將OSDBA組設定為asmdba,將OSOPER組設定為asmoper,將OSASM組設定為asmadmin。然後單擊下一步
  12. 接受ORACLE_BASE位置/u01/app/oracle,並使用ORACLE_HOME位置/u01/grid/oracle/product/11.2.0/grid_1。然後單擊下一步
  13. 接受預設的清單位置,然後選擇 **下一步**
  14. 先決條件檢查將執行。將發出警告,說明三個檢查失敗:物理記憶體、交換空間和網路時間協議。單擊複選框以忽略所有,然後單擊下一步
  15. 在oracle使用者主目錄中儲存一個名為grid.rsp的響應檔案。然後單擊完成以安裝網格基礎設施。


  16. 出現提示時,以root使用者身份開啟一個終端並執行兩個root.sh指令碼。確保在兩個節點上都執行這兩個指令碼
    [oracle@collabn1 ~]$ su -
    Password: racattack
     
    [root@collabn1 ~]# /u01/app/oraInventory/orainstRoot.sh
    Changing permissions of /u01/app/oraInventory.
    Adding read, write permissions for group.
    Removing read,write,execute permissions for world.
     
    Changing groupname of /u01/app/oraInventory to oinstall.
    The execution of the script is complete.
     
    [root@collabn1 ~]# /u01/grid/oracle/product/11.2.0/grid_1/root.sh
    Running Oracle 11g root.sh script...
     
    The following environment variables are set as:
        ORACLE_OWNER= oracle
        ORACLE_HOME=  /u01/grid/oracle/product/11.2.0/grid_1
     
    Enter the full pathname of the local bin directory: [/usr/local/bin]: /usr/bin
       Copying dbhome to /usr/bin ...
       Copying oraenv to /usr/bin ...
       Copying coraenv to /usr/bin ...
     
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    2011-03-30 16:49:13: Parsing the host name
    2011-03-30 16:49:13: Checking for super user privileges
    2011-03-30 16:49:13: User has super user privileges
    Using configuration parameter file: /u01/grid/oracle/product/11.2.0/grid_1/crs/install/crsconfig_params
    Creating trace directory
    LOCAL ADD MODE
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
      root wallet
      root wallet cert
      root cert export
      peer wallet
      profile reader wallet
      pa wallet
      peer wallet keys
      pa wallet keys
      peer cert request
      pa cert request
      peer cert
      pa cert
      peer root cert TP
      profile reader root cert TP
      pa root cert TP
      peer pa cert TP
      pa peer cert TP
      profile reader pa cert TP
      profile reader peer cert TP
      peer user cert
      pa user cert
    Adding daemon to inittab
    CRS-4123: Oracle High Availability Services has been started.
    ohasd is starting
    CRS-2672: Attempting to start 'ora.gipcd' on 'collabn1'
    CRS-2672: Attempting to start 'ora.mdnsd' on 'collabn1'
    CRS-2676: Start of 'ora.mdnsd' on 'collabn1' succeeded
    CRS-2676: Start of 'ora.gipcd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.gpnpd' on 'collabn1'
    CRS-2676: Start of 'ora.gpnpd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.cssdmonitor' on 'collabn1'
    CRS-2676: Start of 'ora.cssdmonitor' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.cssd' on 'collabn1'
    CRS-2672: Attempting to start 'ora.diskmon' on 'collabn1'
    CRS-2676: Start of 'ora.diskmon' on 'collabn1' succeeded
    CRS-2676: Start of 'ora.cssd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.ctssd' on 'collabn1'
    CRS-2676: Start of 'ora.ctssd' on 'collabn1' succeeded
    clscfg: -install mode specified
    Successfully accumulated necessary OCR keys.
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
    CRS-2672: Attempting to start 'ora.crsd' on 'collabn1'
    CRS-2676: Start of 'ora.crsd' on 'collabn1' succeeded
    Now formatting voting disk: /u61/cluster/vdsk.
    CRS-4603: Successful addition of voting disk /u61/cluster/vdsk.
    ##  STATE    File Universal Id                File Name Disk group
    --  -----    -----------------                --------- ---------
     1. ONLINE   59f9f62cc0f44f35bff552ced06e35ee (/u61/cluster/vdsk) []
    Located 1 voting disk(s).
    CRS-2673: Attempting to stop 'ora.crsd' on 'collabn1'
    CRS-2677: Stop of 'ora.crsd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.asm' on 'collabn1'
    CRS-2677: Stop of 'ora.asm' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.ctssd' on 'collabn1'
    CRS-2677: Stop of 'ora.ctssd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.cssdmonitor' on 'collabn1'
    CRS-2677: Stop of 'ora.cssdmonitor' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.cssd' on 'collabn1'
    CRS-2677: Stop of 'ora.cssd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.gpnpd' on 'collabn1'
    CRS-2677: Stop of 'ora.gpnpd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.gipcd' on 'collabn1'
    CRS-2677: Stop of 'ora.gipcd' on 'collabn1' succeeded
    CRS-2673: Attempting to stop 'ora.mdnsd' on 'collabn1'
    CRS-2677: Stop of 'ora.mdnsd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.mdnsd' on 'collabn1'
    CRS-2676: Start of 'ora.mdnsd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.gipcd' on 'collabn1'
    CRS-2676: Start of 'ora.gipcd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.gpnpd' on 'collabn1'
    CRS-2676: Start of 'ora.gpnpd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.cssdmonitor' on 'collabn1'
    CRS-2676: Start of 'ora.cssdmonitor' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.cssd' on 'collabn1'
    CRS-2672: Attempting to start 'ora.diskmon' on 'collabn1'
    CRS-2676: Start of 'ora.diskmon' on 'collabn1' succeeded
    CRS-2676: Start of 'ora.cssd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.ctssd' on 'collabn1'
    CRS-2676: Start of 'ora.ctssd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.asm' on 'collabn1'
    CRS-2676: Start of 'ora.asm' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.crsd' on 'collabn1'
    CRS-2676: Start of 'ora.crsd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.evmd' on 'collabn1'
    CRS-2676: Start of 'ora.evmd' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.asm' on 'collabn1'
    CRS-2676: Start of 'ora.asm' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.DATA.dg' on 'collabn1'
    CRS-2676: Start of 'ora.DATA.dg' on 'collabn1' succeeded
    CRS-2672: Attempting to start 'ora.registry.acfs' on 'collabn1'
    CRS-2676: Start of 'ora.registry.acfs' on 'collabn1' succeeded
     
    collabn1     2011/03/30 16:59:35     /u01/grid/oracle/product/11.2.0/grid_1/cdata/collabn1/backup_20110330_165935.olr
    Preparing packages for installation...
    cvuqdisk-1.0.7-1
    Configure Oracle Grid Infrastructure for a Cluster ... succeeded
    Updating inventory properties for clusterware
    Starting Oracle Universal Installer...
     
    Checking swap space: must be greater than 500 MB.   Actual 968 MB    Passed
    The inventory pointer is located at /etc/oraInst.loc
    The inventory is located at /u01/app/oraInventory
    'UpdateNodeList' was successful.
    


    [root@collabn1 ~]# ssh collabn2
    root@collabn2's password: racattack
    -bash: oraenv: No such file or directory
    [root@collabn2 ~]# /u01/app/oraInventory/orainstRoot.sh
    Changing permissions of /u01/app/oraInventory.
    Adding read, write permissions for group.
    Removing read,write,execute permissions for world.
     
    Changing groupname of /u01/app/oraInventory to oinstall.
    The execution of the script is complete.
     
    [root@collabn2 ~]# /u01/grid/oracle/product/11.2.0/grid_1/root.sh
    Running Oracle 11g root.sh script...
     
    The following environment variables are set as:
        ORACLE_OWNER= oracle
        ORACLE_HOME=  /u01/grid/oracle/product/11.2.0/grid_1
     
    Enter the full pathname of the local bin directory: [/usr/local/bin]: /usr/bin
       Copying dbhome to /usr/bin ...
       Copying oraenv to /usr/bin ...
       Copying coraenv to /usr/bin ...
     
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    2011-03-30 17:04:26: Parsing the host name
    2011-03-30 17:04:26: Checking for super user privileges
    2011-03-30 17:04:26: User has super user privileges
    Using configuration parameter file: /u01/grid/oracle/product/11.2.0/grid_1/crs/install/crsconfig_params
    Creating trace directory
    LOCAL ADD MODE
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
    Adding daemon to inittab
    CRS-4123: Oracle High Availability Services has been started.
    ohasd is starting
    CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node collabn1, number 1, and is terminating
    An active cluster was found during exclusive startup, restarting to join the cluster
    CRS-2672: Attempting to start 'ora.mdnsd' on 'collabn2'
    CRS-2676: Start of 'ora.mdnsd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.gipcd' on 'collabn2'
    CRS-2676: Start of 'ora.gipcd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.gpnpd' on 'collabn2'
    CRS-2676: Start of 'ora.gpnpd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.cssdmonitor' on 'collabn2'
    CRS-2676: Start of 'ora.cssdmonitor' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.cssd' on 'collabn2'
    CRS-2672: Attempting to start 'ora.diskmon' on 'collabn2'
    CRS-2676: Start of 'ora.diskmon' on 'collabn2' succeeded
    CRS-2676: Start of 'ora.cssd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.ctssd' on 'collabn2'
    CRS-2676: Start of 'ora.ctssd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.drivers.acfs' on 'collabn2'
    CRS-2676: Start of 'ora.drivers.acfs' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.asm' on 'collabn2'
    CRS-2676: Start of 'ora.asm' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.crsd' on 'collabn2'
    CRS-2676: Start of 'ora.crsd' on 'collabn2' succeeded
    CRS-2672: Attempting to start 'ora.evmd' on 'collabn2'
    CRS-2676: Start of 'ora.evmd' on 'collabn2' succeeded
     
    collabn2     2011/03/30 17:12:32     /u01/grid/oracle/product/11.2.0/grid_1/cdata/collabn2/backup_20110330_171232.olr
    Preparing packages for installation...
    cvuqdisk-1.0.7-1
    Configure Oracle Grid Infrastructure for a Cluster ... succeeded
    Updating inventory properties for clusterware
    Starting Oracle Universal Installer...
     
    Checking swap space: must be greater than 500 MB.   Actual 1205 MB    Passed
    The inventory pointer is located at /etc/oraInst.loc
    The inventory is located at /u01/app/oraInventory
    'UpdateNodeList' was successful.
    


  17. 執行完兩個指令碼後,返回安裝程式視窗並單擊確定以繼續執行配置助手。
  18. 叢集驗證實用程式將失敗,因為NTP未執行。如果您願意,請檢視日誌檔案末尾的錯誤訊息。然後單擊確定關閉訊息框,並單擊下一步以繼續。
  19. 您現在應該看到最終螢幕!單擊關閉退出安裝程式。



增加 CRS 圍欄超時(共享檔案系統)

[編輯 | 編輯原始碼]

這些步驟對於測試或生產環境來說並不必要。但是,它們可能會使您的VMware測試叢集更加穩定,並且它們將提供一個關於網格基礎設施的良好學習機會。



  1. 網格基礎設施必須只在一個節點上執行才能更改這些設定。以root使用者身份關閉collabn2上的叢集軟體。[oracle@collabn1 ~]$ ssh collabn2 最後登入時間:2011年3月30日星期三 14:50:49 透過鍵入 'oenv' 設定環境 - 預設值為例項RAC1。 collabn2:/home/oracle[RAC1]$ su - 密碼:racattack [root@collabn2 bin]# crsctl stop crs CRS-2791:在'collabn2'上啟動Oracle高可用性服務管理資源的關閉 CRS-2673:嘗試停止'collabn2'上的'ora.crsd' CRS-2790:在'collabn2'上啟動叢集就緒服務的管理資源的關閉 ... ... ... CRS-2793:'collabn2'上Oracle高可用性服務管理資源的關閉已完成 CRS-4133:Oracle高可用性服務已停止。
  2. 返回節點collabn1。以root使用者身份,增加misscount,以便CRS在重啟之前等待1.5分鐘。(VMware可能會在某些筆記型電腦上稍微拖延!)[root@collabn1 ~]# crsctl get css misscount 30 [root@collabn1 ~]# crsctl set css misscount 90 配置引數misscount現在設定為90。
  3. 增加disktimeout,以便CRS在重啟之前等待10分鐘以完成I/O。[root@collabn1 ~]# crsctl get css disktimeout 200 [root@collabn1 ~]# crsctl set css disktimeout 600 配置引數disktimeout現在設定為600。
  4. 在另一個節點上重新啟動CRS。[root@collabn1 bin]# ssh collabn2 [root@collabn2 bin]# crsctl start crs



RAC 安裝

[編輯 | 編輯原始碼]

安裝資料庫軟體

[編輯 | 編輯原始碼]
  1. 以 **oracle** 使用者身份登入到 **collabn1** 並開啟終端。執行 **CLUVFY** 檢查您是否已準備好啟動資料庫安裝。記憶體、交換空間和 NTP/時間檢查可能會失敗,但其他所有檢查都應該成功。[oracle@collabn1 ~]$ **/mnt/cdrom*/grid/runcluvfy.sh stage -pre dbinst
  2. 使用 **/mnt/cdrom*/database/runInstaller** 啟動資料庫安裝程式。
  3. 在第一個螢幕上,將電子郵件留空並取消選中“安全更新”選項。單擊 **下一步** 繼續。選擇 **是** 確認您不想輸入電子郵件地址。
  4. 選擇僅安裝資料庫軟體,然後單擊 **下一步**。
  5. 選擇真實應用叢集資料庫安裝,然後選擇所有節點。單擊 **下一步** 繼續。
  6. 選擇英語,然後單擊 **下一步**。
  7. 選擇企業版安裝,然後單擊 **下一步**。
  8. 確認 ORACLE_BASE 為 /u01/app/oracle,並將 **更改** ORACLE_HOME 為 /u01/app/oracle/product/11.2.0/db_1。單擊 **下一步** 繼續。
  9. 驗證 OSDBA 組為 dba,OSOPER 組為 oper。單擊 **下一步** 繼續。
  10. 先決條件檢查將執行。將發出警告,說明三個檢查失敗:物理記憶體、交換空間和網路時間協議。單擊複選框以忽略所有,然後單擊下一步
  11. 在 oracle 使用者的主目錄中 **儲存** 一個名為 db.rsp 的響應檔案。然後單擊 **完成** 安裝 oracle 資料庫軟體。


  12. 當出現提示時,以 **root** 使用者身份開啟終端並執行 root.sh 指令碼。輸入 /usr/bin 作為本地 bin 目錄,並覆蓋之前由網格基礎設施安裝的檔案。確保在 **兩個節點** 上執行它!
    [oracle@collabn1 ~]$ su -
    Password: racattack
    
    [root@collabn1 ~]# /u01/app/oracle/product/11.2.0/db_1/root.sh
    Running Oracle 11g root.sh script...
    
    The following environment variables are set as:
        ORACLE_OWNER= oracle
        ORACLE_HOME=  /u01/app/oracle/product/11.2.0/db_1
    
    Enter the full pathname of the local bin directory: [/usr/local/bin]: /usr/bin
    The file "dbhome" already exists in /usr/bin.  Overwrite it? (y/n)
    [n]: y
       Copying dbhome to /usr/bin ...
    The file "oraenv" already exists in /usr/bin.  Overwrite it? (y/n)
    [n]: y
       Copying oraenv to /usr/bin ...
    The file "coraenv" already exists in /usr/bin.  Overwrite it? (y/n)
    [n]: y
       Copying coraenv to /usr/bin ...
    
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    Finished product-specific root actions.
    


    [root@collabn1 ~]# ssh collabn2
    root@collabn2's password: racattack
    Last login: Tue Apr 15 19:34:33 2008 from 192.168.78.1
    
    [root@collabn2 ~]# /u01/app/oracle/product/11.2.0/db_1/root.sh
    Running Oracle 11g root.sh script...
    
    The following environment variables are set as:
        ORACLE_OWNER= oracle
        ORACLE_HOME=  /u01/app/oracle/product/11.2.0/db_1
    
    Enter the full pathname of the local bin directory: [/usr/local/bin]: /usr/bin
    The file "dbhome" already exists in /usr/bin.  Overwrite it? (y/n)
    [n]: y
       Copying dbhome to /usr/bin ...
    The file "oraenv" already exists in /usr/bin.  Overwrite it? (y/n)
    [n]: y
       Copying oraenv to /usr/bin ...
    The file "coraenv" already exists in /usr/bin.  Overwrite it? (y/n)
    [n]: y
       Copying coraenv to /usr/bin ...
    
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    Finished product-specific root actions.
    


  13. 執行完兩個指令碼後,返回到安裝程式視窗,然後單擊 **確定** 完成安裝。現在您應該看到最終螢幕!單擊 **關閉** 退出安裝程式。




建立資料庫

[編輯 | 編輯原始碼]

建立資料庫

[編輯 | 編輯原始碼]
  1. 僅限 ASM 資料庫:以 oracle 使用者身份登入終端。使用 oenv 宏為 SID +ASM1 設定環境。然後,鍵入 asmca 啟動 ASMCA。 collabn1:/home/oracle[RAC1]$ oenv 這裡有 SID:grid +ASM1 ORACLE_SID = [RAC1] ? +ASM1 ORACLE_HOME=/u01/grid/oracle/product/11.2.0/grid_1 的 Oracle 基礎為 /u01/app/oracle collabn1:/home/oracle[+ASM1]$ asmca
  2. 僅限 ASM 資料庫:驗證兩個磁碟組是否已裝載。如果已啟動或重啟,則 BACKUP 磁碟組可能已解除安裝。要裝載它,請右鍵單擊,然後選擇在所有節點上裝載。單擊退出關閉 ASM 配置助手。


  3. 鍵入“. oraenv”設定環境。保留預設 SID,並將 /u01/app/oracle/product/11.2.0/db_1 輸入 ORACLE_HOME。然後鍵入 dbca 啟動資料庫配置助手。
  4. 在第一個提示符處,選擇“真實應用程式叢集資料庫”,然後單擊下一步
  5. 選擇“建立資料庫”,然後單擊下一步繼續。
  6. 選擇“通用或事務處理”,然後單擊下一步繼續。
  7. 選擇“管理員管理的資料庫”,將全域性資料庫名稱設定為 RAC.vm.ardentperf.com,並選擇所有叢集節點。然後單擊下一步繼續。
  8. 不要配置企業管理器(這裡可能沒有足夠的記憶體)。取消選中它,然後單擊自動維護任務選項卡。
  9. 停用自動維護任務(它們可能會真正佔用筆記型電腦的 CPU...)。取消選中該框後,單擊下一步繼續。
  10. 將所有密碼設定為 racattack,然後單擊下一步繼續。選擇繼續,即使 Oracle 不喜歡該密碼。
  11. 根據正在執行的 RAC 攻擊實驗室的軌道選擇儲存型別。
    Oracle ASM 共享檔案系統
    選擇“自動儲存管理 (ASM)”的儲存型別。

    選擇“叢集檔案系統”的儲存型別。

  12. 配置 Oracle 管理檔案。
    Oracle ASM 共享檔案系統
    選擇“Oracle 管理檔案”,並在資料庫區域中鍵入 +DATA。然後單擊下一步繼續。

    選擇“Oracle 管理檔案”,並在資料庫區域中鍵入 /u51/oradata。然後單擊下一步繼續。

  13. 配置閃回恢復區。
    Oracle ASM 共享檔案系統
    選擇“指定閃回恢復區”,並將 +BACKUP 作為目標鍵入。將大小增加到 3000 MB。不要啟用歸檔,並選擇下一步繼續。

    選擇“指定閃回恢復區”,並將 /u52/oradata 作為目標鍵入。將大小增加到 3000 MB。不要啟用歸檔,並選擇下一步繼續。

  14. 選擇安裝示例模式。選中該框後,單擊下一步繼續。
  15. 將記憶體目標提高到 400 MB,並且不要選中“自動記憶體管理”。跳過其他選項卡,然後單擊下一步繼續。
  16. 接受預設儲存設定,然後單擊下一步繼續。
  17. 繼續並生成指令碼(在預設位置),但保留“建立資料庫”選項選中。單擊完成開始建立資料庫。
  18. 檢視摘要,然後單擊確定繼續。
  19. DBCA 將在生成指令碼後通知您。單擊確定繼續建立資料庫。


  20. 資料庫建立完成後,將出現一個摘要視窗。單擊退出關閉安裝程式。


  21. 最後一件事:在兩個節點上編輯 /etc/oratab,並將 DB 名稱替換為例項名稱。還要編輯節點 2 上的 bash_profile,並將例項名稱設定為 RAC2。[oracle@collabn1 ~]$ vi /etc/oratab RAC1:/u01/app/oracle/product/11.1.0/db_1:N [oracle@collabn1 ~]$ ssh collabn2 [oracle@collabn2 ~]$ vi /etc/oratab RAC2:/u01/app/oracle/product/11.1.0/db_1:N [oracle@collabn2 ~]$ vi /home/oracle/.bash_profile export ORACLE_SID=RAC2


滾動補丁

[編輯 | 編輯原始碼]

修補網格和資料庫軟體

[編輯 | 編輯原始碼]

修補概述

[編輯 | 編輯原始碼]
  • 升級到“基本版本”非常複雜,並且始終使用完整的 Oracle 安裝程式 (runInstaller)。主要的新功能僅在新的基本版本中引入。
  • 補丁集也是使用完整的 Oracle 安裝程式安裝的。從歷史上看,每個補丁集都是透過使用 runInstaller 安裝在基本版本 (圖示中的頂行) 之上的。但是,從 11.2.0.2 開始,補丁集可以作為新的安裝安裝,而無需基本版本。現在建議以這種方式“異地”執行補丁集升級。有時,新的功能也會包含在補丁集中(例如 RAT 資料收集)。
  • PSU 使用 opatch 安裝。它們包括安全更新和重要的錯誤修復。它們每季度釋出一次,並且始終包含最新的 CPU。
  • CPU 使用 opatch 安裝。CPU 僅包括安全更新,並且也每季度釋出一次。在應用任何 PSU 之後,它們無法應用。(直到您升級到新的補丁集或基本版本。)

支援狀態和已知問題

[編輯 | 編輯原始碼]

在執行任何 Oracle 的安裝或升級之前,您應始終檢查該版本的支援狀態和已知問題。Metalink 說明 161818.1 始終是起點 - 開啟此說明並進行檢視。接下來,按照指向 11.2.0.X 的連結,檢視 Metalink 說明 880782.1。最後,按照指向說明 880707.1 的連結,檢視 Oracle 11.2.0.1 的已知問題,我們將使用此版本進行本實驗室。

練習滾動應用程式

[編輯 | 編輯原始碼]

對於本實驗室,講師提供了最新的 PSU。PSU 和 CPU 是一個或多個獨立補丁的集合。如果獨立補丁已透過滾動升級認證,則只能以滾動方式應用於 Oracle 資料庫。


  1. 檢視安裝說明。我們將安裝三個補丁,您可以在以下位置找到 README 檔案
    • /mnt/cdrom5/patch/psu6-db-12419378/12419378/README.html
    • /mnt/cdrom5/patch/psu2-gi-9655006/README.html
    • /mnt/cdrom5/patch/opatch-6880880/README.txt
  2. 首先,我們需要更新 OPatch 實用程式。在講師提供的 CDROM 上找到補丁 6880880,並將其直接解壓縮到網格主目錄和資料庫主目錄中。在解壓縮檔案之前,請備份現有的 OPatch 程式。$ oenv 這裡有 SID:grid +ASM1 RAC1 ORACLE_SID = [RAC1] ? grid $ cd $ORACLE_HOME $ tar czvf ~/gi-opatch-backup_$(date +%Y-%m-%d).tgz OPatch/ ... $ unzip -o /mnt/cdrom*/patch/opatch-6880880/p6880880_112000_LINUX.zip ... $ OPatch/opatch version 呼叫 OPatch 11.2.0.1.5 OPatch 版本:11.2.0.1.5 OPatch 成功。$ oenv 這裡有 SID:grid +ASM1 RAC1 ORACLE_SID = [grid] ? RAC1 $ cd $ORACLE_HOME $ mv OPatch OPatch.backup $ unzip /mnt/cdrom*/patch/opatch-6880880/p6880880_112000_LINUX.zip ... $ OPatch/opatch version 呼叫 OPatch 11.2.0.1.5 OPatch 版本:11.2.0.1.5 OPatch 成功。
  3. 在節點collabn2 上重複上一步。$ ssh collabn2 ... 重複上一步 ... $ exit
  4. 此新版本的 OPatch 要求某些操作使用“OCM 響應檔案”。使用 OCM 實用程式生成此檔案。我們不想配置 OCM;將使用者名稱留空,並確認“是”,您不想輸入任何帳戶資訊。$ $ORACLE_HOME/OPatch/ocm/bin/emocmrsp -output /home/oracle/ocm.rsp OCM 安裝響應生成器 10.3.4.0.0 - 生產版 版權所有 (c) 2005, 2010, Oracle 和/或其附屬公司。保留所有權利。提供您的電子郵件地址,以便收到有關安全問題的通知,安裝和啟動 Oracle 配置管理器。如果您使用 My Oracle Support 電子郵件地址/使用者名稱,則操作更簡單。訪問 http://www.oracle.com/support/policies.html 檢視詳細資訊。電子郵件地址/使用者名稱:<enter> 您未提供電子郵件地址以接收有關安全問題的通知。您是否希望不瞭解安全問題 ([Y]es, [N]o) [N]: Y OCM 配置響應檔案 (/home/oracle/ocm.rsp) 已成功建立。
  5. 在講師提供的 DVD 上找到 Grid Infrastructure 和 Database PSU。$ cd /mnt/cdrom5/patch $ ls opatch-6880880 psu2-gi-9655006 psu6-db-12419378
  6. 我們知道這些 PSU 可以以滾動方式應用,但請進行驗證。$ for D in psu*/[0-9]*; do echo -n $D: cd $D $ORACLE_HOME/OPatch/opatch query -is_rolling_patch | grep rolling cd ../.. done psu2-gi-9655006/9654983: 補丁是滾動補丁:true psu2-gi-9655006/9655006: 補丁是滾動補丁:true psu6-db-12419378/12419378: 補丁是滾動補丁:true
  7. 我們也知道不會有任何補丁衝突(因為這些是我們安裝的第一個補丁) - 但也請進行驗證。$ oenv ORACLE_SID = [RAC1] ? grid [grid]$ cd psu2-gi-9655006 psu2-gi-9655006[grid]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir ./9655006 ... 呼叫 prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" 透過。[grid]$ oenv ORACLE_SID = [RAC1] ? RAC1 [RAC1]$ cd ../psu6-db-12419378/ psu6-db-12419378[RAC1]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir ./12419378 ... 呼叫 prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" 透過。
  8. 自動補丁應用流程將自動關閉並重啟節點上的所有資料庫程序。但是,我們不希望自動重啟,因為我們正在應用兩個PSU(一個用於網格,一個用於資料庫)。停用節點collabn1的例項自動啟動,並手動關閉例項以進行補丁應用。
    collabn1$ srvctl disable instance -d rac -i RAC1
    collabn1$ srvctl stop instance -d rac -i RAC1
    


  9. 我們將使用自動補丁應用來應用網格基礎設施PSU。首先使用oenv進入網格環境,然後切換到root使用者並執行opatch auto
    • 注意:此節點上的任何資料庫程序將在補丁過程中自動關閉。
    • 當提示輸入OCM響應檔案路徑時,輸入/home/oracle/ocm.rsp並按回車鍵。
    • 當提示網格主目錄是否共享時,鍵入yes繼續。
    $ oenv
    SIDs here are: grid +ASM1 RAC1
    ORACLE_SID = [RAC1] ? grid
    The Oracle base for ORACLE_HOME=/u01/grid/oracle/product/11.2.0/grid_1 is /u01/app/oracle
    
    [grid]$ cd /mnt/cdrom5/patch/psu2-gi-9655006
    psu2-gi-9655006[grid]$ su
    Password: racattack
    
    psu2-gi-9655006# $ORACLE_HOME/OPatch/opatch auto . -oh $ORACLE_HOME
    Executing /usr/bin/perl /u01/grid/oracle/product/11.2.0/grid_1/OPatch/crs/patch112.pl -patchdir . -patchn . -oh /u01/grid/oracle/product/11.2.0/grid_1 -paramfile /u01/grid/oracle/product/11.2.0/grid_1/crs/install/crsconfig_params
    opatch auto log file location is /u01/grid/oracle/product/11.2.0/grid_1/OPatch/crs/../../cfgtoollogs/opatchauto2011-04-01_22-44-08.log
    Detected Oracle Clusterware install
    Using configuration parameter file: /u01/grid/oracle/product/11.2.0/grid_1/crs/install/crsconfig_params
    OPatch  is bundled with OCM, Enter the absolute OCM response file path:
     /home/oracle/ocm.rsp 
    Can't change permissions of ./.: Read-only file system
    
    Unable to determine if /u01/grid/oracle/product/11.2.0/grid_1 is shared oracle home
    Enter 'yes' if this is not a shared home or if the prerequiste actions are performed to patch this shared home (yes/no): yes 
    Successfully unlock /u01/grid/oracle/product/11.2.0/grid_1
    patch ././9655006  apply successful for home  /u01/grid/oracle/product/11.2.0/grid_1
    patch ././9654983  apply successful for home  /u01/grid/oracle/product/11.2.0/grid_1
    ACFS-9300: ADVM/ACFS distribution files found.
    ACFS-9312: Existing ADVM/ACFS installation detected.
    ACFS-9314: Removing previous ADVM/ACFS installation.
    ACFS-9315: Previous ADVM/ACFS components successfully removed.
    ACFS-9307: Installing requested ADVM/ACFS software.
    ACFS-9308: Loading installed ADVM/ACFS drivers.
    ACFS-9321: Creating udev for ADVM/ACFS.
    ACFS-9323: Creating module dependencies - this may take some time.
    ACFS-9327: Verifying ADVM/ACFS devices.
    ACFS-9309: ADVM/ACFS installation correctness verified.
    CRS-4123: Oracle High Availability Services has been started.
    


  10. 返回到oracle使用者並在講師提供的DVD上找到資料庫PSU。使用oenv進入資料庫環境,然後執行opatch apply
    • 在本地模式下執行OPatch,這樣它就不會嘗試在整個叢集中進行自動滾動安裝。
    • 當提示關於OCM時,將您的使用者名稱留空,並使用"y"確認您不想輸入任何帳戶資訊。
    • 當提示本地主目錄是否已準備好進行補丁時,鍵入"y"繼續。
    # exit $ cd ../psu6-db-12419378 psu6-db-12419378$ oenv SIDs here are: grid +ASM1 RAC1 ORACLE_SID = [grid] ? RAC1 The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 is /u01/app/oracle psu6-db-12419378[RAC1]$ cd 12419378 12419378[RAC1]$ $ORACLE_HOME/OPatch/opatch apply -local Invoking OPatch 11.2.0.1.5 Oracle Interim Patch Installer version 11.2.0.1.5 Copyright (c) 2010, Oracle Corporation. All rights reserved. Oracle Home  : /u01/app/oracle/product/11.2.0/db_1 Central Inventory : /u01/app/oraInventory from  : /etc/oraInst.loc OPatch version  : 11.2.0.1.5 OUI version  : 11.2.0.1.0 OUI location  : /u01/app/oracle/product/11.2.0/db_1/oui Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2011-04-02_16-10-50PM.log Patch history file: /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt ApplySession applying interim patch '12419378' to OH '/u01/app/oracle/product/11.2.0/db_1' Running prerequisite checks... Patch 12419378: Optional component(s) missing : [ oracle.client, 11.2.0.1.0 ] Provide your email address to be informed of security issues, install and initiate Oracle Configuration Manager. Easier for you if you use your My Oracle Support Email address/User Name. Visit http://www.oracle.com/support/policies.html for details. Email address/User Name: <enter> You have not provided an email address for notification of security issues. Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]: Y You selected -local option, hence OPatch will patch the local system only. Please shutdown Oracle instances running out of this ORACLE_HOME on the local system. (Oracle Home = '/u01/app/oracle/product/11.2.0/db_1') Is the local system ready for patching? [y|n] y User Responded with: Y Backing up files and inventory (not for auto-rollback) for the Oracle Home Backing up files affected by the patch '12419378' for restore. This might take a while... Backing up files affected by the patch '12419378' for rollback. This might take a while... Execution of 'sh /mnt/cdrom5/patch/psu6-db-12419378/12419378/custom/scripts/pre -apply 12419378 ': Return Code = 0 Patching component oracle.rdbms.rsf, 11.2.0.1.0... ... ... ... ... Running make for target itnslsnr ApplySession adding interim patch '12419378' to inventory Verifying the update... Inventory check OK: Patch ID 12419378 is registered in Oracle Home inventory with proper meta-data. Files check OK: Files from Patch ID 12419378 are present in Oracle Home. The local system has been patched and can be restarted. OPatch succeeded.
  11. 啟用並啟動節點collabn1上的Oracle資料庫例項。在例項執行後,停止並停用節點collabn2上的例項。資料庫不應該在任何時間點停止執行。$ srvctl enable instance -d rac -i RAC1 $ srvctl start instance -d rac -i RAC1
    $ srvctl disable instance -d rac -i RAC2
    $ srvctl stop instance -d rac -i RAC2
    


  12. 使用自動補丁應用來應用collabn2上的網格基礎設施PSU。
    • 注意:此節點上的任何資料庫程序將在補丁過程中自動關閉。
    • 將OCM響應檔案(/home/oracle/ocm.rsp)複製到collabn2
    • 當提示網格主目錄是否共享時,鍵入yes繼續。
    $ scp /home/oracle/ocm.rsp collabn2:/home/oracle/
    $ ssh collabn2
    $ oenv
    SIDs here are: grid +ASM2 RAC2
    ORACLE_SID = [RAC2] ? grid
    The Oracle base for ORACLE_HOME=/u01/grid/oracle/product/11.2.0/grid_1 is /u01/app/oracle
    
    [grid]$ cd /mnt/cdrom5/patch/psu2-gi-9655006
    psu2-gi-9655006[grid]$ su
    Password: racattack
    
    psu2-gi-9655006# $ORACLE_HOME/OPatch/opatch auto . -oh $ORACLE_HOME
    Executing /usr/bin/perl /u01/grid/oracle/product/11.2.0/grid_1/OPatch/crs/patch112.pl -patchdir . -patchn . -oh /u01/grid/oracle/product/11.2.0/grid_1 -paramfile /u01/grid/oracle/product/11.2.0/grid_1/crs/install/crsconfig_params
    opatch auto log file location is /u01/grid/oracle/product/11.2.0/grid_1/OPatch/crs/../../cfgtoollogs/opatchauto2011-04-02_16-42-52.log
    Detected Oracle Clusterware install
    Using configuration parameter file: /u01/grid/oracle/product/11.2.0/grid_1/crs/install/crsconfig_params
    OPatch  is bundled with OCM, Enter the absolute OCM response file path:
     /home/oracle/ocm.rsp 
    Can't change permissions of ./.: Read-only file system
    
    Unable to determine if /u01/grid/oracle/product/11.2.0/grid_1 is shared oracle home
    Enter 'yes' if this is not a shared home or if the prerequiste actions are performed to patch this shared home (yes/no): yes 
    Successfully unlock /u01/grid/oracle/product/11.2.0/grid_1
    patch ././9655006  apply successful for home  /u01/grid/oracle/product/11.2.0/grid_1
    patch ././9654983  apply successful for home  /u01/grid/oracle/product/11.2.0/grid_1
    ACFS-9300: ADVM/ACFS distribution files found.
    ACFS-9312: Existing ADVM/ACFS installation detected.
    ACFS-9314: Removing previous ADVM/ACFS installation.
    ACFS-9315: Previous ADVM/ACFS components successfully removed.
    ACFS-9307: Installing requested ADVM/ACFS software.
    ACFS-9308: Loading installed ADVM/ACFS drivers.
    ACFS-9321: Creating udev for ADVM/ACFS.
    ACFS-9323: Creating module dependencies - this may take some time.
    ACFS-9327: Verifying ADVM/ACFS devices.
    ACFS-9309: ADVM/ACFS installation correctness verified.
    CRS-4123: Oracle High Availability Services has been started.
    


  13. 返回到oracle使用者並在講師提供的DVD上找到資料庫PSU。使用oenv進入資料庫環境,然後執行opatch apply
    • 在本地模式下執行OPatch,這樣它就不會嘗試在整個叢集中進行自動滾動安裝。
    • 當提示關於OCM時,將您的使用者名稱留空,並使用"y"確認您不想輸入任何帳戶資訊。
    • 當提示本地主目錄是否已準備好進行補丁時,鍵入"y"繼續。
    # exit $ cd ../psu6-db-12419378 psu6-db-12419378$ oenv SIDs here are: grid +ASM2 RAC2 ORACLE_SID = [grid] ? RAC2 The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 is /u01/app/oracle psu6-db-12419378[RAC2]$ cd 12419378 12419378[RAC2]$ $ORACLE_HOME/OPatch/opatch apply -local Invoking OPatch 11.2.0.1.5 Oracle Interim Patch Installer version 11.2.0.1.5 Copyright (c) 2010, Oracle Corporation. All rights reserved. Oracle Home  : /u01/app/oracle/product/11.2.0/db_1 Central Inventory : /u01/app/oraInventory from  : /etc/oraInst.loc OPatch version  : 11.2.0.1.5 OUI version  : 11.2.0.1.0 OUI location  : /u01/app/oracle/product/11.2.0/db_1/oui Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2011-04-02_17-11-00PM.log Patch history file: /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt ApplySession applying interim patch '12419378' to OH '/u01/app/oracle/product/11.2.0/db_1' Running prerequisite checks... Patch 12419378: Optional component(s) missing : [ oracle.client, 11.2.0.1.0 ] Provide your email address to be informed of security issues, install and initiate Oracle Configuration Manager. Easier for you if you use your My Oracle Support Email address/User Name. Visit http://www.oracle.com/support/policies.html for details. Email address/User Name: <enter> You have not provided an email address for notification of security issues. Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]: Y You selected -local option, hence OPatch will patch the local system only. Please shutdown Oracle instances running out of this ORACLE_HOME on the local system. (Oracle Home = '/u01/app/oracle/product/11.2.0/db_1') Is the local system ready for patching? [y|n] y User Responded with: Y Backing up files and inventory (not for auto-rollback) for the Oracle Home Backing up files affected by the patch '12419378' for restore. This might take a while... Backing up files affected by the patch '12419378' for rollback. This might take a while... Execution of 'sh /mnt/cdrom5/patch/psu6-db-12419378/12419378/custom/scripts/pre -apply 12419378 ': Return Code = 0 Patching component oracle.rdbms.rsf, 11.2.0.1.0... ... ... ... ... Running make for target itnslsnr ApplySession adding interim patch '12419378' to inventory Verifying the update... Inventory check OK: Patch ID 12419378 is registered in Oracle Home inventory with proper meta-data. Files check OK: Files from Patch ID 12419378 are present in Oracle Home. The local system has been patched and can be restarted. OPatch succeeded.
  14. 啟用並重啟節點collabn2上的Oracle資料庫例項。$ srvctl enable instance -d rac -i RAC2 $ srvctl start instance -d rac -i RAC2 $ srvctl status database -d rac Instance RAC1 is running on node collabn1 Instance RAC2 is running on node collabn2
  15. 執行catbundle.sql指令碼。$ ss SQL> @?/rdbms/admin/catbundle.sql psu apply $ less /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/catbundle/ catbundle_PSU_RAC_APPLY_2011Apr02_17_28_19.log
  16. 可選:如果您想更多地練習使用補丁,那麼嘗試回滾資料庫PSU,然後嘗試在自動滾動模式(不使用本地標誌)或“最小停機時間”模式下應用它。


叢集軟體測試

[edit | edit source]

叢集軟體和圍欄

[edit | edit source]

本實驗的目的是透過強制觸發Oracle叢集軟體內建圍欄功能的配置來演示Oracle叢集軟體的圍欄能力。使用Oracle叢集軟體,圍欄在節點級別透過重啟無響應或失敗的節點來處理。這類似於“向另一臺機器開槍”(STOMITH)演算法,但實際上是自殺而不是影響另一臺機器。網上有很多很好的資料可以提供更多資訊。



  1. 從一個正常執行的叢集開始,資料庫例項正在執行。
  2. 監控每個節點上的叢集軟體日誌檔案。在每個節點上,啟動一個新的視窗並執行以下命令:[oracle@<node_name> ~]$ tail –f \ > /u01/grid/oracle/product/11.2.0/grid_1/log/`hostname -s`/crsd/crsd.log [oracle@<node_name> ~]$ tail –f \ > /u01/grid/oracle/product/11.2.0/grid_1/log/`hostname -s`/cssd/ocssd.log
  3. 我們將模擬“拔掉”網路介面,方法是將一個專用網路介面關閉。在collabn2節點上,透過執行以下命令(以root使用者身份)關閉專用網路介面:[root@collabn2 ~]# ifconfig eth1 down或者,您也可以透過在VMware中將HostOnly網路介面卡關閉來模擬這種情況。



  4. 執行完此命令後,觀察您在步驟2中開始監控的日誌檔案。您應該在這些日誌檔案中看到錯誤,最終(可能需要一兩分鐘,字面上)您將觀察到一個節點自行重啟。如果您使用ifconfig觸發故障,那麼節點將重新加入叢集,例項應該自動啟動。如果您使用VMware觸發故障,那麼節點將不會重新加入叢集。
    • 哪個檔案包含指示節點未重新加入叢集的原因的錯誤訊息?
    • 重啟的節點是否總是與發生故障的節點相同?為什麼或為什麼不?


叢集軟體呼叫

[編輯 | 編輯原始碼]

本實驗的目標是演示 Oracle 快速應用程式通知 (FAN) 呼叫。在 11g 之前的版本中,這些也稱為 Oracle 叢集軟體呼叫。

此功能是 Oracle 叢集軟體的一個相對鮮為人知的特性,它可以觸發指令碼(或包含指令碼的整個目錄),以在發生叢集範圍事件時執行您希望執行的任何任務。

有關更多資訊,請參閱此處文件:http://download.oracle.com/docs/cd/B28359_01/rac.111/b28254/hafeats.htm#BABGCEBF

在本練習中,我們將在每個節點上配置一些 FAN 呼叫指令碼,然後觸發各種叢集事件,以檢視每個事件如何觸發呼叫指令碼。



  1. 從一個正常的執行叢集開始,兩個節點都已啟動並執行。
  2. 從每個伺服器上的一個 shell 提示符(以 oracle 使用者身份登入)開始,導航到 /u01/grid/oracle/product/11.2.0/grid_1/racg/usrco。使用 vi(或您喜歡的編輯器)在該目錄中建立一個名為 callout1.sh 的檔案。檔案內容應如下: #!/bin/ksh umask 022 FAN_LOGFILE=/tmp/`hostname`_uptime.log echo $* "reported="`date` >> $FAN_LOGFILE &


  3. 確保檔案的許可權設定為 755,使用以下命令: [oracle@<node_name> ~]$ chmod 755 \ > /u01/grid/oracle/product/11.2.0/grid_1/racg/usrcocallout1.sh
  4. 監控每個節點上叢集軟體的日誌檔案。在每個節點上,啟動一個新視窗並執行以下命令: [oracle@<node_name> ~]$ tail –f \ /u01/grid/oracle/product/11.2.0/grid_1/log/`hostname -s`/crsd/crsd.log
  5. 接下來,我們需要觸發一個會導致呼叫觸發的事件。一個這樣的事件是節點關閉。關閉節點 collabn2 上的叢集軟體。 [root@collabn2 ~]# crsctl stop crs 正在停止資源。這可能需要幾分鐘。已成功停止 Oracle 叢集軟體資源 正在停止叢集同步服務。正在關閉叢集同步服務守護程序。已成功發出關閉請求。
  6. 執行完此命令後,觀察您在步驟 2 中開始監控的日誌檔案。因為我們測試叢集的超時時間很長,所以您可能需要等待幾分鐘才能看到任何內容。
    • 最終,您應該看到條目,指出節點已失敗,緊隨其後,您應該在 /tmp/<hostname>_uptime.log 檔案中看到一個條目,表明節點已關閉。
    • 注意哪些成員執行叢集軟體呼叫指令碼。(存活的成員可以執行命令通知客戶端和/或應用程式伺服器,其中一個叢集節點已關閉。)
    您應該在 /tmp/*.log 檔案中看到以下訊息: NODE VERSION=1.0 host=collabn2 incarn=0 status=nodedown reason=public_nw_down timestamp=30-Aug-2009 01:56:12 reported=Sun Aug 30 01:56:13 CDT 2009 NODE VERSION=1.0 host=collabn2 incarn=147028525 status=nodedown reason=member_leave timestamp=30-Aug-2009 01:57:19 reported=Sun Aug 30 01:57:20 CDT 2009
  7. 重新啟動叢集軟體。是否有節點啟動事件? [root@collabn2 bin]# crsctl start crs
  8. 嘗試關閉其中一臺虛擬機器 - 與之前的測試相比,結果有什麼不同?如果停用 Linux 網路介面或 VMware 網路卡會怎樣?
  9. 如果您願意,可以進行更多測試。另一個有趣的事件是資料庫例項意外關閉。在安裝資料庫後,回到本實驗室測試這種情況。 [oracle@collabn2 ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 11.1.0.6.0 - Production on Fri Aug 1 14:49:29 2008 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Real Application Clusters, OLAP, Data Mining and Real Application Testing options SQL> shutdown abort; ORACLE instance shut down. SQL> INSTANCE VERSION=1.0 service=RAC.vm.ardentperf.com database=RAC instance=RAC2 host=collabn2 status=down reason=user timestamp=01-Aug-2008 12:34:02 reported=Fri Aug 1 12:34:03 CDT 2008


服務、故障轉移和負載均衡

[編輯 | 編輯原始碼]

安裝即時客戶端

[編輯 | 編輯原始碼]

為了測試故障轉移,最好從叢集外部的客戶端連線,因此我們將從下載和安裝 Oracle 的基本即時客戶端(僅限英語)和即時客戶端 SQLPlus 包開始。



  1. oracle 使用者身份登入節點 collabn1,並開啟到資料庫的連線,以 SYSDBA 身份登入,並解鎖 SH 使用者帳戶。另外授予 DBA 訪問許可權。 SQL> alter user sh identified by sh account unlock; 使用者已更改。 SQL> grant dba to sh; 授予成功。
  2. 下載 Oracle 的基本(僅限英語)即時客戶端和 Oracle 的即時客戶端 SQLPlus 包。實驗室講師可能已提供這些檔案,或者也可以從 Oracle 網站下載:http://www.oracle.com/technetwork/topics/winsoft-085727.html 您需要的兩個檔案是
    • instantclient-basiclite-*.zip
    • instantclient-sqlplus-*.zip
  3. 每個存檔包含一個名為“instantclient_11_2”的資料夾。將此資料夾(來自兩個存檔)解壓縮到 C:\。(在資源管理器中,您可以拖放,也可以從“檔案”選單中選擇“全部提取”。)
  4. 編輯 c:\windows\system32\drivers\etc\hosts 並新增 RAC 節點的 IP 地址。
    192.168.78.250	collab-scan.vm.ardentperf.com collab-scan
    192.168.78.61	collabn1-vip.vm.ardentperf.com collabn1-vip
    192.168.78.62	collabn2-vip.vm.ardentperf.com collabn2-vip
    192.168.78.51	collabn1.vm.ardentperf.com collabn1
    192.168.78.52	collabn2.vm.ardentperf.com collabn2
    


  5. 透過連線到資料庫測試您的即時客戶端安裝。 C:\instantclient_11_2> sqlplus sh/sh@//collab-scan/RAC.vm.ardentperf.com


  6. 建立一個 TNSNAMES 檔案,並從任意叢集資料庫節點複製 RAC、RAC1 和 RAC2 條目。 C:\instantclient_11_2> notepad C:\instantclient_11_2\tnsnames.ora RAC = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collab-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.vm.ardentperf.com) ) ) RAC2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.vm.ardentperf.com) (INSTANCE_NAME = RAC2) ) ) RAC1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.vm.ardentperf.com) (INSTANCE_NAME = RAC1) ) )
  7. 透過設定 TNS_ADMIN 環境變數並執行 SQLPLUS 測試您的 TNSNAMES。 C:\instantclient_11_2>set TNS_ADMIN=c:\instantclient_11_2 C:\instantclient_11_2>sqlplus sh/sh@RAC



服務故障轉移

[編輯 | 編輯原始碼]
  1. oracle 使用者身份登入 collabn1。建立一個新的服務 svctest,其中 RAC1 作為首選例項,RAC2 作為可用例項。這意味著它通常會在 RAC1 例項上執行,但如果 RAC1 變得不可用,它會故障轉移到 RAC2 例項。 collabn1:/home/oracle[RAC1]$ srvctl add service -d RAC -s svctest -r RAC1 -a RAC2 -P BASIC collabn1:/home/oracle[RAC1]$ srvctl start service -d RAC -s svctest
  2. 透過在兩個節點上檢查 lsnrctl 以及檢視兩個節點上的 SERVICE_NAMES 初始化引數來檢查服務在哪裡執行。
    collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s svctest
    Service svctest is running on instance(s) RAC1
     
    collabn1:/home/oracle[RAC1]$ lsnrctl services
    Service "svctest.vm.ardentperf.com" has 1 instance(s).
      Instance "RAC1", status READY, has 2 handler(s) for this service...
        Handler(s):
          "DEDICATED" established:0 refused:0 state:ready
             REMOTE SERVER
             (ADDRESS=(PROTOCOL=TCP)(HOST=collabn1.vm.ardentperf.com)(PORT=1521))
          "DEDICATED" established:0 refused:0 state:ready
             LOCAL SERVER
     
    collabn1:/home/oracle[RAC1]$ ssh collabn2
    Last login: Sun Aug  3 13:13:16 2008 from collabn1
    The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 is /u01/app/oracle
    Set environment by typing 'oenv' - default is instance RAC1.
    collabn2:/home/oracle[RAC2]$ lsnrctl services
     
    collabn2:/home/oracle[RAC2]$ lsnrctl services
    Service "svctest.vm.ardentperf.com" has 1 instance(s).
      Instance "RAC1", status READY, has 1 handler(s) for this service...
        Handler(s):
          "DEDICATED" established:0 refused:0 state:ready
             REMOTE SERVER
             (ADDRESS=(PROTOCOL=TCP)(HOST=collabn1.vm.ardentperf.com)(PORT=1521))
     
    SQL> col value format a60
    SQL> select inst_id, value from gv$parameter where NAME='service_names';
     
       INST_ID VALUE
    ---------- ------------------------------------------------------------
             1 svctest, RAC.vm.ardentperf.com
             2 RAC.vm.ardentperf.com
    


  3. 使用 SHUTDOWN ABORT 殺死服務 svctest 執行的例項。 SQL> show user USER is "SYS" SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- RAC1 SQL> shutdown abort; ORACLE instance shut down. SQL>
  4. 等待片刻,然後重複步驟 2。發生了什麼? collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s svctest
  5. 重新啟動您殺死的例項。
    collabn1:/home/oracle[RAC1]$ srvctl status database -d RAC
    Instance RAC1 is not running on node collabn1
    Instance RAC2 is running on node collabn2
    collabn1:/home/oracle[RAC1]$ srvctl start instance -d RAC -i RAC1
    collabn1:/home/oracle[RAC1]$ srvctl status database -d RAC
    Instance RAC1 is running on node collabn1
    Instance RAC2 is running on node collabn2
    collabn1:/home/oracle[RAC1]$
    


  6. 重複步驟 2。服務現在執行在哪裡? collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s svctest
  7. 手動故障轉移服務。確認服務現在執行在哪裡。請注意,這不會斷開任何當前會話 collabn1:/home/oracle[RAC1]$ srvctl relocate service -d RAC -s svctest -i RAC2 -t RAC1 collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s svctest


連線故障轉移

[編輯 | 編輯原始碼]

重要提示: 此實驗針對 Oracle 11gR1 編寫,這裡的資訊在使用此版本和更早版本時至關重要。它將演示故障轉移的工作原理以及在 TNSNAMES 中使用正確地址的重要性。但是,從 11gR2 開始,不應使用節點 VIP 連線到資料庫 - 應始終使用 SCAN VIP。11gR2 客戶端為此內建了相同的故障轉移功能,用於在單個 DNS 條目中返回多個 SCAN VIP。



  1. 在本地計算機上編輯例項客戶端使用的 TNSNAMES.ORA 檔案。新增兩個名為 CFTESTCFTEST-NOVIP 的條目,它們連線到 RAC 服務,沒有負載平衡。明確啟用連線故障轉移,即使它預設情況下已啟用。不要對第二個條目使用 VIP(這是錯誤的,但我們將對其進行測試以檢視會發生什麼)。C:\instantclient_11_2> notepad c:\instantclient_11_2\tnsnames.ora CFTEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = collabn2-vip)(PORT = 1521)) (LOAD_BALANCE = no) (FAILOVER = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.vm.ardentperf.com) ) ) CFTEST-NOVIP = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn1)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = collabn2)(PORT = 1521)) (LOAD_BALANCE = no) (FAILOVER = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.vm.ardentperf.com) ) )
  2. collabn1 上,檢查偵聽器到 RAC 服務的已建立連線數。從 Windows 連線到 CFTEST 和 CFTEST-NOVIP 幾次,然後再次檢查 lsnrctl 統計資訊。來自 Windows 計算機的所有連線都附加到 collabn1 上的偵聽器,但此偵聽器會在兩個例項之間分配連線。首先檢視節點 1 上的已建立連線數。如果它們不全是零,則沒關係。collabn1:/home/oracle[RAC1]$ lsnrctl services 服務“RAC.vm.ardentperf.com”具有 2 個例項。例項“RAC1”,狀態為就緒,為此服務具有 2 個處理程式... 處理程式: “DEDICATED” '已建立:0' 拒絕:0 狀態:就緒 本地伺服器 “DEDICATED” '已建立:0' 拒絕:0 狀態:就緒 遠端伺服器 (ADDRESS=(PROTOCOL=TCP)(HOST=collabn1.vm.ardentperf.com)(PORT=1521)) 例項“RAC2”,狀態為就緒,為此服務具有 1 個處理程式... 處理程式: “DEDICATED” 已建立:0 拒絕:0 狀態:就緒 遠端伺服器 (ADDRESS=(PROTOCOL=TCP)(HOST=collabn2.vm.ardentperf.com)(PORT=1521)) 其次,依次連線到資料庫多次,並使用兩個服務名。您可以在檢查連線時間後退出每個會話。所有會話都應快速連線。計算您連線的次數。C:\instantclient_11_2> sqlplus sh/sh@CFTEST C:\instantclient_11_2> sqlplus sh/sh@CFTEST C:\instantclient_11_2> sqlplus sh/sh@CFTEST-NOVIP C:\instantclient_11_2> sqlplus sh/sh@CFTEST-NOVIP C:\instantclient_11_2> sqlplus sh/sh@CFTEST C:\instantclient_11_2> sqlplus sh/sh@CFTEST-NOVIP 第三,再次檢查節點 1 上的偵聽器連線。確保已建立的連線總數至少增加了與您連線的會話數相同的數量。(也就是說,確認您所有的會話都連線到此節點。)可能存在更多連線;沒關係。此外,請注意偵聽器如何將連線分配到兩個例項 - 即使我們的客戶端只連線到一個節點上的偵聽器。連線到每個例項的連線數無關緊要;如果您沒有看到 3 和 3,則沒關係。collabn1:/home/oracle[RAC1]$ lsnrctl services 服務“RAC.vm.ardentperf.com”具有 2 個例項。例項“RAC1”,狀態為就緒,為此服務具有 2 個處理程式... 處理程式: “DEDICATED” '已建立:3' 拒絕:0 狀態:就緒 本地伺服器 “DEDICATED” '已建立:0' 拒絕:0 狀態:就緒 遠端伺服器 (ADDRESS=(PROTOCOL=TCP)(HOST=collabn1.vm.ardentperf.com)(PORT=1521)) 例項“RAC2”,狀態為就緒,為此服務具有 1 個處理程式... 處理程式: “DEDICATED” 已建立:3 拒絕:0 狀態:就緒 遠端伺服器 (ADDRESS=(PROTOCOL=TCP)(HOST=collabn2.vm.ardentperf.com)(PORT=1521))
  3. 在 VMware 控制檯中,確保您已開啟從 Windows 連線到的節點 collabn1。透過從虛擬機器選單中選擇關閉電源,模擬節點完全故障。


  4. 等待大約一分鐘(以便叢集可以檢測到故障節點)。然後,從 Windows 連線到 CFTEST 和 CFTEST-VIP 服務。使用 NOVIP 連線時會發生什麼?C:\instantclient_11_2> sqlplus sh/sh@CFTEST C:\instantclient_11_2> sqlplus sh/sh@CFTEST C:\instantclient_11_2> sqlplus sh/sh@CFTEST-NOVIP C:\instantclient_11_2> sqlplus sh/sh@CFTEST-NOVIP C:\instantclient_11_2> sqlplus sh/sh@CFTEST C:\instantclient_11_2> sqlplus sh/sh@CFTEST-NOVIP



執行時故障轉移

[編輯 | 編輯原始碼]
  1. 從 VMware 控制檯中開啟 collabn1。啟動後,以 oracle 使用者身份登入,並將我們之前在此實驗中建立的 svctest 服務回滾。
    [root@collabn1 ~]# srvctl status database -d RAC
    Instance RAC1 is running on node collabn1
    Instance RAC2 is running on node collabn2
    
    collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s svctest
    Service svctest is running on instance(s) RAC2
    
    collabn1:/home/oracle[RAC1]$ srvctl relocate service -d RAC -s svctest -i RAC2 -t RAC1
    
    collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s svctest
    Service svctest is running on instance(s) RAC1
    


  2. 在本地計算機上編輯例項客戶端使用的 TNSNAMES.ORA 檔案。新增一個名為 SVCTEST 的新條目,該條目連線到 svctest 服務,並確保連線正常。連線後還檢查您的 TAF 設定。(旁註:我們沒有為此服務配置域名,但除非您在 TNSNAMES 條目中指定一個域名,否則您無法連線到它。試試看。這個域名從哪裡來?)C:\instantclient_11_2> notepad c:\instantclient_11_2\tnsnames.ora SVCTEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collab-scan)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = svctest.vm.ardentperf.com) ) ) SVCTEST-NOVIP = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn1)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = collabn2)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = svctest.vm.ardentperf.com) ) ) C:\instantclient_11_2> sqlplus sh/sh@svctest SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- RAC1 SQL> col service_name format a20 SQL> col username format a10 SQL> select username, service_name, failover_method, failover_type 2 from v$session where sid=(select max(sid) from v$mystat); USERNAME SERVICE_NAME FAILOVER_M FAILOVER_TYPE ---------- -------------------- ---------- ------------- SH svctest NONE NONE
  3. 從 Windows SQLPlus 會話中,更新 svctest 服務的伺服器端 TAF(透明應用程式故障轉移)設定。begin dbms_service.modify_service( service_name=>'svctest', failover_type=>dbms_service.failover_type_select, failover_method=>dbms_service.failover_method_basic, failover_delay=>5, failover_retries=>60 ); end; / PL/SQL 過程已成功完成。
  4. 重新連線並再次檢查您的會話的 TAF 設定。SQL> exit 與 Oracle 資料庫 11g 企業版第 11.1.0.6.0 版 - 生產版斷開連線 具有分割槽、即時應用叢集、OLAP、資料探勘和即時應用測試選項 C:\instantclient_11_2> sqlplus sh/sh@svctest SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- RAC1 SQL> col service_name format a20 SQL> col username format a10 SQL> select username, service_name, failover_method, failover_type 2 from v$session where sid=(select max(sid) from v$mystat); USERNAME SERVICE_NAME FAILOVER_M FAILOVER_TYPE ---------- -------------------- ---------- ------------- SH svctest BASIC SELECT
  5. 同時開啟第二個連線到 NOVIP 服務的 sqlplus 會話。C:\> cd \instantclient_11_2 C:\instantclient_11_2> set TNS_ADMIN=c:\instantclient_11_2 C:\instantclient_11_2> sqlplus sh/sh@svctest-novip SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- RAC1 SQL> col service_name format a20 SQL> col username format a10 SQL> select username, service_name, failover_method, failover_type 2 from v$session where sid=(select max(sid) from v$mystat); USERNAME SERVICE_NAME FAILOVER_M FAILOVER_TYPE ---------- -------------------- ---------- ------------- SH svctest BASIC SELECT
  6. 在兩個查詢中啟動一個長時間執行的查詢。在查詢執行時,關閉它們連線到的節點。每個會話會發生什麼?select c.cust_last_name, p.prod_name, s.quantity_sold from products p, sales s, customers c where p.prod_id = s.prod_id and c.cust_id = s.cust_id;


客戶端負載均衡

[編輯 | 編輯原始碼]

注意:此實驗針對 11.1 編寫,在 11.2 中不會顯示相同的行為 - 需要更新!

--

  1. 從 VMware 控制檯中開啟兩個節點
    [root@collabn1 ~]# srvctl status database -d RAC
    Instance RAC1 is running on node collabn1
    Instance RAC2 is running on node collabn2
    


  2. 在資料庫上開啟 SQLPlus 會話,並確認沒有 SH 使用者的會話。SQL> select inst_id, count(*) from gv$session where username='SH' group by inst_id; 沒有選擇任何行
  3. 在兩個例項上,透過清除 REMOTE_LISTENER 初始化引數並重新註冊,停用伺服器端負載均衡。在與監聽器註冊之前,重啟監聽器以重置連線統計資訊。SQL> alter system set remote_listener=''; 系統已更改。collabn1:/home/oracle[RAC1]$ lsnrctl stop collabn1:/home/oracle[RAC1]$ lsnrctl start SQL> -- 例項 RAC1 SQL> alter system register; 系統已更改。collabn1:/home/oracle[RAC1]$ lsnrctl services 服務 "RAC.vm.ardentperf.com" 有 1 個例項。例項 "RAC1",狀態為 READY,為該服務提供 1 個處理程式... 處理程式: "DEDICATED" 已建立:0 已拒絕:0 狀態:ready 本地伺服器collabn2:/home/oracle[RAC2]$ lsnrctl stop collabn2:/home/oracle[RAC2]$ lsnrctl start SQL> -- 例項 RAC2 SQL> alter system register; 系統已更改。collabn2:/home/oracle[RAC2]$ lsnrctl services 服務 "RAC.vm.ardentperf.com" 有 1 個例項。例項 "RAC2",狀態為 READY,為該服務提供 1 個處理程式... 處理程式: "DEDICATED" 已建立:0 已拒絕:0 狀態:ready 本地伺服器
  4. 在您連線的另一個 SQLPlus 會話中,密切關注連線的平衡情況。同時,開啟一個新的 shell 會話並執行此指令碼,該指令碼將開啟 160 個到資料庫的連線。a=160; while [ $a -gt 0 ]; do sqlplus sh/sh@RAC & a=$((a-1)) done 在客戶端負載均衡期間,連線是如何在資料庫例項之間分配的?
  5. 透過執行以下兩個命令終止所有 sqlplus 會話。執行第二個命令後,在看到 "no more job" 訊息後按 <Ctrl-C>。killall sqlplus while true; do fg; done <Ctrl-C>


伺服器負載均衡

[編輯 | 編輯原始碼]
  1. 在資料庫上開啟一個 SQLPlus 會話,並確認沒有針對 SH 使用者的會話。SQL> select inst_id, count(*) from gv$session where username='SH' group by inst_id; 沒有選定行如果存在任何會話,可以使用以下 SQL 的輸出來終止它們:select 'alter system disconnect session '''|| sid||','||serial#||''' immediate;' from v$session where username='SH';
  2. 透過將 REMOTE_LISTENER 初始化引數設定回其預設值 (collab-scan:1521) 並重新註冊,在兩個例項上重新啟用伺服器端負載均衡。在與監聽器註冊之前,重啟監聽器以重置連線統計資訊。SQL> alter system set remote_listener='collab-scan:1521'; 系統已更改。collabn1:/home/oracle[RAC1]$ lsnrctl stop collabn1:/home/oracle[RAC1]$ lsnrctl start collabn2:/home/oracle[RAC2]$ lsnrctl stop collabn2:/home/oracle[RAC2]$ lsnrctl start 為什麼您只需要執行一次 "alter system" 命令,但需要在兩個節點上執行 lsnrctl 命令?SQL> -- 例項 RAC1 SQL> alter system register; 系統已更改。collabn1:/home/oracle[RAC1]$ lsnrctl services 服務 "RAC.vm.ardentperf.com" 有 1 個例項。例項 "RAC1",狀態為 READY,為該服務提供 2 個處理程式... 處理程式: "DEDICATED" 已建立:0 已拒絕:0 狀態:ready 遠端伺服器 (地址 =(協議 = TCP)(主機 = collabn1.vm.ardentperf.com)(埠 = 1521)) "DEDICATED" 已建立:0 已拒絕:0 狀態:ready 本地伺服器 例項 "RAC2",狀態為 READY,為該服務提供 1 個處理程式... 處理程式: "DEDICATED" 已建立:0 已拒絕:0 狀態:ready 遠端伺服器 (地址 =(協議 = TCP)(主機 = collabn2.vm.ardentperf.com)(埠 = 1521))
  3. 編輯您連線到的伺服器上的 TNSNAMES.ORA 檔案。新增一個名為 LBTEST 的條目,它連線到 RAC 服務 - 但只使用一個監聽器。[root@collabn1 ~]# vi $ORACLE_HOME/network/admin/tnsnames.ora LBTEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collab-scan)(PORT = 1521)) (LOAD_BALANCE = no) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.vm.ardentperf.com) ) )
  4. 在您連線的另一個 SQLPlus 會話中,密切關注連線的平衡情況。同時,開啟一個新的 shell 會話並執行此指令碼,該指令碼將開啟 160 個到資料庫的連線 - 但這次它將使用 LBTEST 連線。a=160; while [ $a -gt 0 ]; do sqlplus sh/sh@LBTEST & a=$((a-1)) done 在伺服器端負載均衡期間,連線是如何在資料庫例項之間分配的?
  5. 透過執行以下兩個命令終止所有 sqlplus 會話。執行第二個命令後,在看到 "no more job" 訊息後按 <Ctrl-C>。killall sqlplus while true; do fg; done <Ctrl-C>


RAC SQL 和 PL/SQL

[編輯 | 編輯原始碼]

安裝執行統計資訊

[編輯 | 編輯原始碼]
  1. 以 SYSDBA 身份連線到資料庫。
  2. 首先,透過執行 ?/rdbms/admin/dbmslock.sql 安裝 DBMS_LOCK 包SQL> @?/rdbms/admin/dbmslock.sql 包已建立。同義詞已建立。授權成功。
  3. Tom Kyte 的執行統計資訊包可從 http://asktom.oracle.com/pls/apex/ASKTOM.download_file?p_file=6551378329289980701 獲取。首先,建立 run_stats 全域性臨時表:create global temporary table run_stats ( runid varchar2(15), name varchar2(80), value int ) on commit preserve rows;
  4. 接下來,建立 stats 檢視。create or replace view stats as select 'STAT...' || a.name name, b.value from v$statname a, v$mystat b where a.statistic# = b.statistic# union all select 'LATCH.' || name, gets from v$latch union all select 'STAT...Elapsed Time', hsecs from v$timer;
  5. 最後,建立 runstats 包 本身:create or replace package runstats_pkg as procedure rs_start; procedure rs_middle; procedure rs_stop( p_difference_threshold in number default 0 ); end; / create or replace package body runstats_pkg as g_start number; g_run1 number; g_run2 number; procedure rs_start is begin delete from run_stats; insert into run_stats select 'before', stats.* from stats; g_start := dbms_utility.get_time; end; procedure rs_middle is begin g_run1 := (dbms_utility.get_time-g_start); insert into run_stats select 'after 1', stats.* from stats; g_start := dbms_utility.get_time; end; procedure rs_stop(p_difference_threshold in number default 0) is begin g_run2 := (dbms_utility.get_time-g_start); dbms_output.put_line ( 'Run1 ran in ' || g_run1 || ' hsecs' ); dbms_output.put_line ( 'Run2 ran in ' || g_run2 || ' hsecs' ); dbms_output.put_line ( 'run 1 ran in ' || round(g_run1/g_run2*100,2) || '% of the time' ); dbms_output.put_line( chr(9) ); insert into run_stats select 'after 2', stats.* from stats; dbms_output.put_line ( rpad( 'Name', 30 ) || lpad( 'Run1', 12 ) || lpad( 'Run2', 12 ) || lpad( 'Diff', 12 ) ); for x in ( select rpad( a.name, 30 ) || to_char( b.value-a.value, '999,999,999' ) || to_char( c.value-b.value, '999,999,999' ) || to_char( ( (c.value-b.value)-(b.value-a.value)), '999,999,999' ) data from run_stats a, run_stats b, run_stats c where a.name = b.name and b.name = c.name and a.runid = 'before' and b.runid = 'after 1' and c.runid = 'after 2' -- and (c.value-a.value) > 0 and abs( (c.value-b.value) - (b.value-a.value) ) > p_difference_threshold order by abs( (c.value-b.value)-(b.value-a.value)) ) loop dbms_output.put_line( x.data ); end loop; dbms_output.put_line( chr(9) ); dbms_output.put_line ( 'Run1 latches total versus runs -- difference and pct' ); dbms_output.put_line ( lpad( 'Run1', 12 ) || lpad( 'Run2', 12 ) || lpad( 'Diff', 12 ) || lpad( 'Pct', 10 ) ); for x in ( select to_char( run1, '999,999,999' ) || to_char( run2, '999,999,999' ) || to_char( diff, '999,999,999' ) || to_char( round( run1/run2*100,2 ), '99,999.99' ) || '%' data from ( select sum(b.value-a.value) run1, sum(c.value-b.value) run2, sum( (c.value-b.value)-(b.value-a.value)) diff from run_stats a, run_stats b, run_stats c where a.name = b.name and b.name = c.name and a.runid = 'before' and b.runid = 'after 1' and c.runid = 'after 2' and a.name like 'LATCH%' ) ) loop dbms_output.put_line( x.data ); end loop; end; end; /


序列測試

[編輯 | 編輯原始碼]

我們將執行的第一個測試是序列測試。在叢集資料庫系統中,順序欄位通常成為爭用點。



  1. 首先,在 兩個節點 上以 SYSDBA 身份開啟到資料庫的連線。
  2. 設定一個表和幾個序列型別以進行比較。同時啟用 serveroutput。create table SEQTEST (seqid varchar2(30), highval number); insert into SEQTEST values ('MYTABLE', 1); commit; create sequence SEQTEST_O_NC ORDER NOCACHE; create sequence SEQTEST_O_C ORDER CACHE 100; create sequence SEQTEST_NO_NC NOORDER NOCACHE; create sequence SEQTEST_NO_C NOORDER CACHE 100; set serveroutput on;
  3. 在節點 collabn1 上,測量各種方法之間的差異。執行兩三次以預熱機器。(注意:從報告的執行時間(以 hsecs 為單位)中減去 500 以說明 DBMS_LOCK.SLEEP 中的時間。)exec runstats_pkg.rs_start; DECLARE myval number; BEGIN FOR counter IN 1..10 LOOP select highval into myval from SEQTEST where seqid='MYTABLE' for update; update SEQTEST set highval=highval+1 where seqid='MYTABLE'; dbms_lock.sleep(0.5); commit; END LOOP; END; / exec runstats_pkg.rs_middle; DECLARE myval number; BEGIN FOR counter IN 1..10 LOOP myval := SEQTEST_O_C.NEXTVAL; dbms_lock.sleep(0.5); commit; END LOOP; END; / exec runstats_pkg.rs_stop;
  4. 在另一個節點 - collabn2 - 啟動一個匿名 PL/SQL 塊,每半秒檢索一次值。DECLARE myval number; BEGIN LOOP select highval into myval from SEQTEST where seqid='MYTABLE' for update; update SEQTEST set highval=highval+1 where seqid='MYTABLE'; select SEQTEST_O_NC.NEXTVAL into myval from dual; select SEQTEST_O_C.NEXTVAL into myval from dual; select SEQTEST_NO_NC.NEXTVAL into myval from dual; select SEQTEST_NO_C.NEXTVAL into myval from dual; dbms_lock.sleep(0.5); commit; END LOOP; END; /
  5. 在節點 collabn1 上重複步驟 3。觀察一旦引入叢集爭用,結果如何不同。
  6. 執行更多測試,比較不同型別的序列。關於序列,你能得出什麼結論?快取對 ORDER 序列重要嗎?exec runstats_pkg.rs_start; DECLARE myval number; BEGIN FOR counter IN 1..10 LOOP myval := SEQTEST_O_NC.NEXTVAL; dbms_lock.sleep(0.5); commit; END LOOP; END; / exec runstats_pkg.rs_middle; DECLARE myval number; BEGIN FOR counter IN 1..10 LOOP myval := SEQTEST_O_C.NEXTVAL; dbms_lock.sleep(0.5); commit; END LOOP; END; / exec runstats_pkg.rs_stop;


並行查詢測試

[編輯 | 編輯原始碼]
  1. 登入到節點 collabn1 並以 SYSDBA 身份開啟到資料庫的連線,並解鎖 SH 使用者帳戶。同時授予其 DBA 許可權。SQL> alter user sh identified by sh account unlock; 使用者已更改。SQL> grant dba to sh; 授予成功。
  2. sh 使用者身份並使用 RAC1 服務名重新連線到資料庫。檢查您的 SID 和您連線的服務。SQL> connect sh/sh@RAC1 已連線。SQL> select sid from v$mystat where rownum=1; SID ---------- 145 SQL> col sid format 9999 SQL> col username format a10 SQL> col program format a40 SQL> col service_name format a20 SQL> set linesize 100 SQL> select sid, username, program, service_name from v$session where username='SH'; SID USERNAME PROGRAM SERVICE_NAME ----- ---------- ---------------------------------------- -------------- 145 SH sqlplus@collabn1.vm.ardentperf.com (TNS RAC.vm.ardent
  3. 啟用跟蹤並在 SH 模式下執行並行查詢。查詢跟蹤檔案以確定從哪裡運行了從屬程序。從屬程序在哪些節點上執行?exec dbms_session.set_identifier('racpx01'); alter session set tracefile_identifier = 'racpx01'; exec dbms_monitor.client_id_trace_enable(client_id=>'racpx01'); select /*+parallel*/ p.prod_name, sum(s.amount_sold) from products p, sales s where p.prod_id = s.prod_id group by p.prod_name; exec dbms_monitor.client_id_trace_disable(client_id=>'racpx01'); SQL> col value format a60 SQL> select inst_id, value from gv$parameter where name='user_dump_dest'; INST_ID VALUE ---------- ------------------------------------------------------------ 1 /u01/app/oracle/diag/rdbms/rac/RAC1/trace 2 /u01/app/oracle/diag/rdbms/rac/RAC2/trace SQL> host ssh collabn1 ls -sh /u01/app/oracle/diag/rdbms/rac/RAC1/trace/*racpx01.trc SQL> host ssh collabn2 ls -sh /u01/app/oracle/diag/rdbms/rac/RAC2/trace/*racpx01.trc
  4. 建立一個僅在節點 2 上執行的新服務,並重複測試(從 collabn1)。從屬程序現在在哪些節點上執行?這與 Oracle 10g 有什麼不同?collabn1:/home/oracle[RAC1]$ srvctl add service -d RAC -s pxtest -r RAC2 -a RAC1 collabn1:/home/oracle[RAC1]$ srvctl start service -d RAC -s pxtest collabn1:/home/oracle[RAC1]$ lsnrctl services Services Summary... Service "pxtest.vm.ardentperf.com" has 1 instance(s). Instance "RAC2", status READY, has 1 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 state:ready REMOTE SERVER (ADDRESS=(PROTOCOL=TCP)(HOST=collabn2.vm.ardentperf.com)(PORT=1521)) collabn1:/home/oracle[RAC1]$ vi $ORACLE_HOME/network/admin/tnsnames.ora PXTEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = collabn2-vip)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PXTEST.vm.ardentperf.com) ) ) collabn1:/home/oracle[RAC1]$ sqlplus sh/sh@pxtest SQL> col sid format 9999 SQL> col username format a10 SQL> col program format a40 SQL> col service_name format a20 SQL> select sid, username, program, service_name from v$session where username='SH'; SID USERNAME PROGRAM SERVICE_NAME ----- ---------- ---------------------------------------- -------------- 124 SH sqlplus@collabn1.vm.ardentperf.com (TNS V1-V3) pxtest exec dbms_session.set_identifier('racpx05'); alter session set tracefile_identifier = 'racpx05'; exec dbms_monitor.client_id_trace_enable(client_id=>'racpx05'); select /*+parallel*/ p.prod_name, sum(s.amount_sold) from products p, sales s where p.prod_id = s.prod_id group by p.prod_name; exec dbms_monitor.client_id_trace_disable(client_id=>'racpx05'); host ssh collabn1 ls -sh /u01/app/oracle/diag/rdbms/rac/RAC1/trace/*racpx05.trc host ssh collabn2 ls -sh /u01/app/oracle/diag/rdbms/rac/RAC2/trace/*racpx05.trc


排程器測試

[編輯 | 編輯原始碼]

在 RAC 中,PL/SQL 可以在任何節點上執行 - 在設計程序時必須考慮到這一點。我們將透過兩個簡單的測試簡要了解此屬性。

首先,我們將看看排程器。請注意,此實驗依賴於在 並行查詢測試 中建立的 PXTEST 服務。



  1. 以 oracle 身份登入到節點 collabn1,並確認 pxtest 服務正在例項 RAC2 上執行。collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s pxtest 服務 pxtest 正在例項 RAC2 上執行。collabn1:/home/oracle[RAC1]$
  2. 關閉服務。collabn1:/home/oracle[RAC1]$ srvctl stop service -d RAC -s pxtest collabn1:/home/oracle[RAC1]$
  3. sh 身份登入到 RAC1 服務,並建立一個作業類和一個 PL/SQL 過程,我們可以從作業中執行該過程。請注意,服務名稱區分大小寫!collabn1:/home/oracle[RAC1]$ sqlplus sh/sh@RAC1 exec dbms_scheduler.create_job_class('TESTOFF1',service=>'pxtest'); create or replace procedure traceme(id varchar2) as x number; begin execute immediate 'alter session set tracefile_identifier=||id||'; dbms_session.session_trace_enable(true,true); select count(*) into x from sh.customers; dbms_session.session_trace_disable(); end; /
  4. 計劃作業立即執行,並使用與 PXTEST 服務繫結的作業類。檢查是否已執行。連續多次查詢 user_schedule_jobs 表。發生了什麼事嗎?select job_name, schedule_type, job_class, enabled, auto_drop, state from user_scheduler_jobs; begin dbms_scheduler.create_job('TESTJOB1','PLSQL_BLOCK', job_action=>'traceme(scheduler01);', job_class=>'TESTOFF1',enabled=>true); end; / select job_name, schedule_type, job_class, enabled, auto_drop, state from user_scheduler_jobs;
  5. 啟動 PXTEST 服務並再次檢查作業狀態。確保連續多次查詢 user_schedule_jobs 表。(耐心等待至少一分鐘。)作業是否已執行?如果是,那麼在哪個節點上?host srvctl start service -d RAC -s pxtest select job_name, schedule_type, job_class, enabled, auto_drop, state from user_scheduler_jobs; host ssh collabn2 ls -sh /u01/app/oracle/diag/rdbms/rac/RAC2/trace/*scheduler01.trc host ssh collabn1 ls -sh /u01/app/oracle/diag/rdbms/rac/RAC1/trace/*scheduler01.trc
  6. 修改 PXTEST 服務以在兩個節點上執行,然後停止它。SQL> host srvctl modify service -d RAC -s pxtest -n -i RAC1,RAC2 SQL> host srvctl stop service -d RAC -s pxtest
  7. 提交 20 個作業以執行程式,然後啟用服務。(這樣,所有作業都應該幾乎同時被排程。)它們在哪個節點上執行?begin FOR i IN 10..29 LOOP dbms_scheduler.create_job('TESTJOB'||i,'PLSQL_BLOCK', job_action=>'traceme(scheduler'||i||');', job_class=>'TESTOFF1',enabled=>true); END LOOP; end; / select job_name, schedule_type, job_class, enabled, auto_drop, state from user_scheduler_jobs; SQL> host srvctl start service -d RAC -s pxtest select job_name, schedule_type, job_class, enabled, auto_drop, state from user_scheduler_jobs; host ssh collabn2 ls -sh /u01/app/oracle/diag/rdbms/rac/RAC2/trace/*scheduler*.trc host ssh collabn1 ls -sh /u01/app/oracle/diag/rdbms/rac/RAC1/trace/*scheduler*.trc


檔案測試

[編輯 | 編輯原始碼]

我們的第二個 PL/SQL 測試將關注 UTL_FILE 包。對於 RAC 上的任何 PL/SQL 操作,您必須意識到程式碼可以在其服務所在的任何節點上執行。這也會影響諸如 DBMS_PIPE、UTL_MAIL、UTL_HTTP(例如代理伺服器源 IP 規則)甚至 DBMS_RLS(重新整理策略)之類的包。



  1. sh 身份登入到 RAC1 ,並建立一個稍後可以嘗試讀取的檔案。collabn1:/home/oracle[RAC1]$ sqlplus sh/sh@RAC1 create directory orahome as '/home/oracle'; declare fl utl_file.file_type; begin fl := utl_file.fopen('ORAHOME','data.txt','w'); utl_file.put_line(fl, 'Some sample data for an oracle test.', TRUE); utl_file.fclose(fl); end; /
  2. 退出 SQLPLUS。在提示符下,複製此命令以再次以sh身份連線到RAC服務,並嘗試讀取您剛剛編寫的檔案。連續執行此命令 10-20 次。(建議使用剪下貼上。)發生了什麼?為什麼?sqlplus -S sh/sh@RAC <<EOF declare fl utl_file.file_type; data varchar2(1024); begin fl := utl_file.fopen('ORAHOME','data.txt','r'); utl_file.get_line(fl, data); utl_file.fclose(fl); end; / exit; EOF


RAC 備份和恢復

[編輯 | 編輯原始碼]

設定備份

[編輯 | 編輯原始碼]

在本實驗中,我們將有意地錯誤配置叢集資料庫備份,並對本地非共享儲存進行一些常見錯誤。



  1. 以使用者 oracle 身份登入到collabn1上的終端。
  2. collabn1上建立一個目錄/u01/app/oradata,並嘗試透過 init 引數 db_recovery_file_dest 將其配置為閃回恢復區 (FRA)。操作將失敗。collabn1:/home/oracle[RAC1]$ mkdir /u01/app/oradata collabn1:/home/oracle[RAC1]$ ss SQL*Plus: Release 11.1.0.6.0 - Production on Mon May 4 07:39:57 2009 SQL> show parameter recovery_file NAME TYPE VALUE ------------------------------- ----------- ------------------------------ db_recovery_file_dest string +FRA db_recovery_file_dest_size big integer 4000M SQL> alter system set db_recovery_file_dest='/u01/app/oradata'; alter system set db_recovery_file_dest='/u01/app/oradata' * ERROR at line 1: ORA-32008: error while processing parameter update at instance RAC2 ORA-02097: parameter cannot be modified because specified value is invalid ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated ORA-01262: Stat failed on a file destination directory Linux Error: 2: No such file or director


  3. 現在在遠端節點上建立目錄並重新執行操作。這應該會成功,但它仍然是一個糟糕的配置;我們將在本實驗的後面部分調查原因。SQL> host ssh collabn2 mkdir /u01/app/oradata SQL> alter system set db_recovery_file_dest='/u01/app/oradata'; System altered.
  4. 關閉整個叢集的資料庫。然後在collabn1上裝載它並將資料庫置於歸檔日誌模式。沒有分配歸檔日誌目標 - 歸檔日誌將去哪裡,為什麼?
    collabn1:/home/oracle[RAC1]$ srvctl stop database -d RAC
    collabn1:/home/oracle[RAC1]$ srvctl status database -d RAC
    Instance RAC1 is not running on node collabn1
    Instance RAC2 is not running on node collabn2
     
    collabn1:/home/oracle[RAC1]$ ss
    SQL*Plus: Release 11.1.0.6.0 - Production on Mon May 4 09:08:01 2009
     
    SQL> startup mount
     
    SQL> alter database archivelog;
    Database altered.
     
    SQL> alter database open;
     
    collabn1:/home/oracle[RAC1]$ srvctl start database -d RAC
    



閃回資料庫

[編輯 | 編輯原始碼]
  1. 在開啟資料庫之前,啟用閃回資料庫。SQL> alter database flashback on; Database altered. SQL> alter database open; Database altered. SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ YES SQL> select oldest_flashback_scn,flashback_size from v$flashback_database_log; OLDEST_FLASHBACK_SCN FLASHBACK_SIZE -------------------- -------------- 610425 8192000
  2. 現在,登入到collabn2並從 sqlplus 啟動資料庫。您將收到一條錯誤訊息。collabn2:/home/oracle[RAC2]$ ss SQL*Plus: Release 11.1.0.6.0 - Production on Mon May 4 09:21:25 2009 SQL> startup ORACLE instance started. Total System Global Area 318054400 bytes Fixed Size 1299624 bytes Variable Size 142609240 bytes Database Buffers 167772160 bytes Redo Buffers 6373376 bytes Database mounted. ORA-38760: This database instance failed to turn on flashback database SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ YES SQL> select oldest_flashback_scn,flashback_size from v$flashback_database_log; OLDEST_FLASHBACK_SCN FLASHBACK_SIZE -------------------- -------------- 0 16384000
  3. 有趣的是,資料庫似乎正常執行。調查警報日誌以獲取錯誤訊息。collabn2:/home/oracle[RAC2]$ cdd collabn2:/u01/app/oracle/diag[RAC2]$ cd rdbms/rac/RAC2/trace/ collabn2:/u01/app/oracle/diag/rdbms/rac/RAC2/trace[RAC2]$ less alert_RAC2.log Mon May 04 09:22:07 2009 Errors in file /u01/app/oracle/diag/rdbms/rac/RAC2/trace/RAC2_ora_22856.trc: ORA-38701: Flashback database log 1 seq 1 thread 1: "/u01/app/oradata/RAC/flashb ack/o1_mf_4zxxs99n_.flb" ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3
  4. 調查collabn1上的警報日誌 - 這裡出現任何錯誤訊息嗎?是否發生其他問題?
  5. 停用閃回資料庫。您不需要關閉資料庫來執行停用操作。SQL> alter database flashback off; Database altered.


塊更改跟蹤

[編輯 | 編輯原始碼]
  1. 在資料庫上啟用塊更改跟蹤,並顯式選擇本地 FRA 目標。(通常,塊更改跟蹤檔案是在 OMF DB 目標而不是 FRA 中建立的。)SQL> alter database enable block change tracking 2 using file '/u01/app/oradata/changetracking.ctf'; 發生了什麼?確保檢查警報日誌。嘗試僅開啟一個例項,然後開啟另一個例項,看看會發生什麼。
  2. 停用塊更改跟蹤。SQL> alter database disable block change tracking; SQL> col filename format a40 SQL> select * from v$block_change_tracking; STATUS FILENAME BYTES ---------- ---------------------------------------- ---------- DISABLED


歸檔日誌

[編輯 | 編輯原始碼]
  1. 檢視兩個當前日誌的序列號。SQL> select thread#, sequence# from v$log where status='CURRENT'; THREAD# SEQUENCE# ---------- ---------- 1 6 2 3
  2. 執行“alter system switch logfile”並檢查結果。發生了什麼?SQL> alter system switch logfile; System altered. SQL> select thread#, sequence# from v$log where status='CURRENT'; THREAD# SEQUENCE# ---------- ---------- 1 6 2 4
  3. 執行“alter system archive log current”並檢查結果。現在發生了什麼?SQL> alter system archive log current; System altered. SQL> select thread#, sequence# from v$log where status='CURRENT'; THREAD# SEQUENCE# ---------- ---------- 1 7 2 5
  4. 檢查預設情況下歸檔日誌儲存在哪裡。(這是否符合您的預期?)將它們顯式分配到 FRA 並測試您的更改是否生效。SQL> col t format a5 SQL> col name format a70 SQL> select thread#||'.'||sequence# t, name from v$archived_log; T NAME ----- ---------------------------------------------------------------------- 1.6 /u01/app/oracle/product/11.1.0/db_1/dbs/arch1_6_685220246.dbf 1.6 /u01/app/oradata/RAC/archivelog/2009_05_04/o1_mf_1_6_4zy1wofw_.arc 2.4 /u01/app/oracle/product/11.1.0/db_1/dbs/arch2_4_685220246.dbf 2.4 /u01/app/oradata/RAC/archivelog/2009_05_04/o1_mf_2_4_4zy1wpn9_.arc SQL> alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'; System altered. SQL> alter system archive log current; System altered. SQL> select thread#||'.'||sequence# t, name from v$archived_log; T NAME ----- ---------------------------------------------------------------------- 2.5 /u01/app/oradata/RAC/archivelog/2009_05_04/o1_mf_2_5_4zy2xzv3_.arc 1.7 /u01/app/oradata/RAC/archivelog/2009_05_04/o1_mf_1_7_4zy2y1q6_.arc
  5. 使用預設的 RMAN 配置備份所有當前歸檔日誌。它為什麼失敗?collabn1:/home/oracle[RAC1]$ rman target / Recovery Manager: Release 11.1.0.6.0 - Production on Mon May 4 10:43:45 2009 connected to target database: RAC (DBID=2273202257) RMAN> backup archivelog all; Starting backup at 04-MAY-09 current log archived allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=113 instance=RAC1 device type=DISK archived log /u01/app/oradata/RAC/archivelog/2009_05_04/o1_mf_1_4_4zy03zdh_.arc not found or out of sync with catalog trying alternate file for archived log of thread 1 with sequence 4 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of backup command at 05/04/2009 10:47:56 RMAN-06059: expected archived log not found, lost of archived log compromises recoverability ORA-19625: error identifying file /u01/app/oracle/product/11.1.0/db_1/dbs/arch1_4_685220246.dbf ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3
  6. 交叉檢查存檔日誌;大多數會失敗。然後將檔案從collabn2上的本地 FRA 複製過來,並再次交叉檢查。RMAN> crosscheck archivelog all; RMAN> list archivelog all; List of Archived Log Copies for database with db_unique_name RAC ===================================================================== Key Thrd Seq S Low Time ------- ---- ------- - --------- 6 1 4 X 26-APR-09 Name: /u01/app/oradata/RAC/archivelog/2009_05_04/o1_mf_1_4_4zy03zdh_.arc RMAN> host 'scp -r collabn2:/u01/app/oradata/RAC/archivelog/* /u01/app/oradata/RAC/archivelog/'; o1_mf_1_5_4zy044nl_.arc 100% 1024 1.0KB/s 00:00 o1_mf_2_6_4zy3k2s0_.arc 100% 12KB 11.5KB/s 00:00 o1_mf_2_3_4zy1txkr_.arc 100% 13KB 12.5KB/s 00:01 o1_mf_1_4_4zy03zdh_.arc 100% 29MB 4.9MB/s 00:06 o1_mf_2_2_4zy1dksv_.arc 100% 1209KB 1.2MB/s 00:01 o1_mf_2_4_4zy1wpn9_.arc 100% 233KB 233.0KB/s 00:00 o1_mf_2_5_4zy2xzv3_.arc 100% 19KB 19.0KB/s 00:00 RMAN> crosscheck archivelog all; RMAN> list archivelog all; List of Archived Log Copies for database with db_unique_name RAC ===================================================================== Key Thrd Seq S Low Time ------- ---- ------- - --------- 6 1 4 A 26-APR-09 Name: /u01/app/oradata/RAC/archivelog/2009_05_04/o1_mf_1_4_4zy03zdh_.arc


資料庫備份

[編輯 | 編輯原始碼]

我們將配置備份以充分利用叢集,透過並行執行。



  1. 配置 RMAN 預設通道和並行度。RMAN> configure device type disk parallelism 2 backup type to compressed backupset; RMAN> configure channel 1 device type disk connect 'sys/racattack@rac1'; RMAN> configure channel 2 device type disk connect 'sys/racattack@rac2'; RMAN> show all;
  2. 對整個資料庫進行完整的熱備份。RMAN> backup database plus archivelog; Starting backup at 04-MAY-09 current log archived channel ORA_DISK_1: starting compressed archived log backup set channel ORA_DISK_2: starting compressed archived log backup set ... Finished backup at 04-MAY-09 Starting backup at 04-MAY-09 channel ORA_DISK_1: starting compressed full datafile backup set channel ORA_DISK_2: starting compressed full datafile backup set ... Finished backup at 04-MAY-09 Starting backup at 04-MAY-09 current log archived channel ORA_DISK_1: starting compressed archived log backup set channel ORA_DISK_2: starting compressed archived log backup set ... Finished backup at 04-MAY-09
  3. 交叉檢查備份。發生了什麼?為什麼?RMAN> list backupset summary; Key TY LV S Device Type Completion Time #Pieces #Copies Compressed ------- -- -- - ----------- --------------- ------- ------- ---------- 1 B A A DISK 04-MAY-09 1 1 YES 2 B A A DISK 04-MAY-09 1 1 YES 3 B A A DISK 04-MAY-09 1 1 YES 4 B A A DISK 04-MAY-09 1 1 YES 5 B F A DISK 04-MAY-09 1 1 YES 6 B F A DISK 04-MAY-09 1 1 YES 7 B F A DISK 04-MAY-09 1 1 YES 8 B F A DISK 04-MAY-09 1 1 YES 9 B A A DISK 04-MAY-09 1 1 YES 10 B A A DISK 04-MAY-09 1 1 YES RMAN> allocate channel for maintenance device type disk; released channel: ORA_DISK_1 released channel: ORA_DISK_2 allocated channel: ORA_MAINT_DISK_1 channel ORA_MAINT_DISK_1: SID=111 instance=RAC1 device type=DISK RMAN> crosscheck backup; RMAN> list backupset summary;



資料庫恢復

[編輯 | 編輯原始碼]

此練習取決於之前練習的完成情況。



  1. 清除 RMAN 通道和並行度配置。RMAN> configure channel 1 device type disk clear; RMAN> configure channel 2 device type disk clear; RMAN> configure device type disk parallelism 1; RMAN> show all;
  2. 預覽整個資料庫的恢復。為什麼它會失敗?如何解決?RMAN> restore database preview; Starting restore at 04-MAY-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=114 instance=RAC1 device type=DISK RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of restore command at 05/04/2009 11:44:53 RMAN-06026: some targets not found - aborting restore RMAN-06023: no backup or copy of datafile 5 found to restore RMAN-06023: no backup or copy of datafile 3 found to restore RMAN-06023: no backup or copy of datafile 2 found to restore
  3. 將 FRA 還原到正確的共享位置,該位置在第 6 個實驗室之前的資料庫建立期間分配。SQL> alter system set db_recovery_file_dest='+FRA'; System altered.
  4. 現在,使用共享儲存重複資料庫備份練習和此練習。


  1. "什麼是防病毒軟體?". antivirus.comodo.com. Retrieved 2016-04-29.
華夏公益教科書