RAC 攻擊 - Oracle 叢集資料庫入門/列印版
| 這是 列印版 的 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]為了獲得最大收益,您必須仔細計劃您的時間。沒有足夠的時間完成所有實驗室 - 所以選擇您最感興趣的實驗室。
如果您在家中或活動中使用自己的計算機,那麼您始終需要完成第一個實驗室(硬體和 Windows 準備)才能快速啟動到任何後續實驗室。如果您在課堂上,那麼講師可能已經為您完成了第一個實驗室,您可以從快速啟動開始。 |
概述
[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 實驗室。雖然可以使用更小的配置完成這些實驗室,但存在許多潛在問題。
雖然我們建議不要嘗試,但 RAC Attack 已使用以下配置完成:單核、3GB 記憶體、一個物理硬碟、某些 USB 快閃記憶體驅動器以及不到 60GB 的可用空間。 |
Windows 準備
[edit | edit source]- 重新啟動 Windows。在此乾淨啟動後,不要啟動任何不必要的程式 - 例如電子郵件或即時訊息。
- 如果可能,停用病毒掃描(這樣您的防病毒軟體[1] 不會嘗試掃描虛擬機器磁碟上的 I/O)。
- 終止任何正在執行的駐留記憶體程式,尤其是幫助大型應用程式“快速啟動”的程式(這些程式通常會佔用大量記憶體)。
硬體驗證
[edit | edit source]處理器
[edit | edit source]記憶體
[edit | edit source]
硬碟
[edit | edit source]單個硬碟的最高速度可能低至 45 MB/s。(這在 RAC Attack 測試中觀察到。) 典型的 USB 快閃記憶體盤效能非常差,不建議使用。一些 USB 快閃記憶體盤號稱具有高效能,但典型情況下最高速度只有 30 MB/s 左右。在 RAC Attack 測試中,USB 驅動器適用於儲存 ISO 映象,但用於儲存虛擬機器檔案時效能不佳。有關不同連線型別的詳細比較,請參考:http://www.pixelbeat.org/speeds.html |
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 的佔用空間,但對於 11gR2 來說,很難將它降低到這個範圍以下。 |
RAC Attack 需要一個具有密碼和管理員許可權的本地 Windows 使用者帳戶。您只能使用網路或無密碼帳戶登入,前提是登入帳戶具有管理員許可權,並且您知道另一個本地帳戶的密碼,該本地帳戶也具有管理員許可權(且密碼不為空)。
如果您的帳戶不是本地帳戶,或者您的帳戶沒有本地管理員許可權,那麼您可以按照這裡的說明建立管理員帳戶。
- 從開始選單中選擇執行。在出現的對話方塊中,鍵入cmd以啟動命令提示符。在 Windows 7 中,在開始選單底部找到“搜尋程式”欄位。鍵入cmd,但不要執行它。右鍵單擊“cmd”,然後選擇“以管理員身份執行”。以管理員使用者身份開啟命令提示符後,執行以下兩條命令
net user admin racattack /add net localgroup administrators admin /add
登入:admin
密碼:racattack
- 鍵入net user %username%(如果您使用的是網路或無密碼登入帳戶,請將 %username% 替換為本地帶密碼的管理員帳戶)。驗證使用者名稱,驗證需要密碼為是,並驗證本地組成員資格是否包含管理員。

- 這些實驗室已在 VMware Server 2.0.1 版本上測試。請訪問 VMware Server 網站:http://www.vmware.com/go/getserver

- 如果您還沒有帳戶,請註冊一個帳戶。
- 記下您的許可證號。
- 如果您在家,請下載 VMware Server。如果您參加 RAC Attack 活動,則講師提供的 Jumpstart 驅動器包含 VMware Server 的副本,因此您無需下載。(但您仍然需要從 VMware 網站獲取許可證號。)
這些實驗室已在 VMware Server 2.0.1 版本上測試。

- 執行 VMware 安裝程式

- 在安裝過程中接受許可協議和所有預設選項。



- 輸入您的許可證資訊,該資訊在您下載軟體的 VMware 網站的同一頁面上可見。

- 如果 VMware 安裝程式要求您重新啟動計算機,請重新啟動計算機。
- 從開始選單中選擇管理虛擬網路。程式啟動後,確保您在底部看到一個“應用”按鈕。如果您沒有看到“應用”按鈕,請關閉程式並透過右鍵單擊並選擇“以管理員身份執行”重新啟動程式(這通常在 Windows 7 上需要這樣做)。

- 單擊主機虛擬網路對映選項卡,然後單擊VMnet1旁邊的右箭頭按鈕。從子選單中選擇子網。

- 將 IP 地址設定為172.16.100.0,然後單擊確定。

- 單擊Vmnet8旁邊的右箭頭按鈕,然後從子選單中選擇子網。

- 將 IP 地址設定為192.168.78.0,然後單擊確定。

- 單擊應用按鈕。
- 返回摘要選項卡並驗證
VMnet1的子網為172.16.100.0
VMnet8的子網為192.168.78.0
- 轉到NAT選項卡並驗證 VMnet 主機是否為VMnet8,閘道器 IP 是否為192.168.78.2

如果您參加活動,則活動組織者可能會提供一個特殊的演示選項,您可以在自己的筆記型電腦上執行預配置的 RAC 叢集。要使用此演示選項,請按照本實驗室進行操作,但在活動提供的外部硬碟驅動器上使用目錄。
- 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
- VMware Server 管理介面是基於 Web 的,某些新的 Web 瀏覽器與之不相容。有兩種方法可以開啟此管理介面
- 開啟一個非預設的 Web 瀏覽器,並訪問地址 https://:8333/
- 如果您在活動現場,活動組織者可能已提供Firefox 2.0.0.20,該瀏覽器已透過 RAC Attack 測試。您可以直接從 Jumpstart 驅動器執行此瀏覽器,無需將其安裝在您的 PC 上。此版本的 Firefox 也可以從網際網路下載。
- 從開始選單啟動VMware Server 主頁。這將使用您的預設 Web 瀏覽器。

- 開啟一個非預設的 Web 瀏覽器,並訪問地址 https://:8333/
- 根據您使用的 Web 瀏覽器,您可能會收到與安全相關的警告。繼續處理所有這些警告,並選擇檢視網頁。

Mozilla Firefox 中的警告 
Internet Explorer 6 中的相同警報 - 使用本地 Windows 管理員帳戶的使用者名稱和密碼登入 VMware 控制檯。

- 在主螢幕(摘要選項卡)上,找到命令框,然後選擇新增資料儲存。

- 重複此步驟三次。將資料儲存名稱設定為RAC11g、RAC11g-shared 和RAC11g-iso。選擇本地資料儲存,並使用您之前選擇和建立的目錄路徑。

- 驗證摘要螢幕中是否存在三個新的資料儲存,名為RAC11g 和RAC11g-iso 和RAC11g-shared。還要驗證兩個網路vmnet1 和vmnet8 是否分別作為主機專用和NAT 可用。

如果您在活動現場,活動組織者已經下載了軟體並將其複製到 Jumpstart 驅動器。
- 跳過此實驗室。
如果您在家,請按照以下說明下載 Oracle 企業版 Linux。
- 繼續下面。
- 訪問 http://edelivery.oracle.com/linux 並選擇繼續。

- 輸入您的姓名、公司、電子郵件和國家/地區,並在單擊繼續之前檢視/接受許可證和出口限制。如果您之前訪問過 Oracle EDelivery,請確保輸入的資訊完全相同。如果您是第一次從 Oracle 下載軟體,您可能需要等待幾天才能收到 Oracle 傳送的電子郵件,授予您繼續操作的許可權。

- 在x86-32 位平臺上搜索Oracle Linux。選擇 Oracle Linux 版本 5 更新 6。

- 下載x86(32 位)的檔案,而不是原始碼。

- 此 zip 檔案將包含一個名為Enterprise-R5-U6-Server-i386-dvd.iso 的單個檔案 - 將此檔案解壓縮到RAC11g-iso 資料夾中,然後刪除原始 zip 檔案。
- 從摘要螢幕中,選擇建立虛擬機器。將新機器命名為collabn1,並選擇RAC11g 資料儲存。

- 選擇Linux 作業系統,然後選擇Red Hat Enterprise Linux 5(32 位)。

- 為虛擬機器分配760M 記憶體,並選擇1 個處理器。

- 選擇建立新的虛擬磁碟。

- 將磁碟大小設定為30G,並將檔案命名為[RAC11g] collabn1/system.vmdk - 將所有其他選項保留為預設值,然後單擊下一步。

- 選擇新增網路介面卡。

- 選擇建立NAT 網路連線。

- 選擇不新增 CD/DVD 驅動器。

- 選擇不新增軟盤驅動器。

- 選擇不新增 USB 控制器。

- 檢視配置並單擊完成。暫時不要啟動虛擬機器。

虛擬 DVD 配置
| 虛擬裝置節點(介面卡/裝置) | 路徑(資料儲存/目錄/檔名) |
|---|---|
| IDE 0:0 | [RAC11g-iso] Enterprise-R5-U6-Server-i386-dvd.iso |
| IDE 0:1*** | [RAC11g-iso] RAC11gR2.iso*** |
***僅限講師主導的課程
- 在左側的庫存選項卡中,選擇collabn1(我們剛剛建立的虛擬機器)。

- 從命令框中,單擊新增硬體。在出現的視窗中,單擊CD/DVD 驅動器。

- 選擇使用 ISO 映像。

- 單擊瀏覽並找到檔案[RAC11g-iso] Enterprise-R5-U6-Server-i386-dvd.iso。

- 開啟名為虛擬裝置節點的部分,然後選擇IDE 0:0。然後單擊下一步。
仔細執行此步驟,因為很容易遺漏。

- 單擊完成新增裝置。暫時不要啟動虛擬機器。

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

- 單擊控制檯選項卡。您可能會看到一條訊息,提示未安裝遠端控制檯外掛。如果您看到此訊息,請單擊安裝外掛並按照說明操作,然後繼續。(注意:在此過程中,您可能會被要求重新啟動計算機。)

- 安裝外掛後,您應該在控制檯的中心看到一個大的“播放”按鈕。單擊播放按鈕啟動虛擬機器。

- 當您看到方框時,單擊任意位置開啟一個控制檯視窗。

- 現在將開啟一個新視窗 - 在您的 Web 瀏覽器之外。如果您在啟動虛擬機器後不久打開了此視窗,那麼您將看到 Oracle 企業版 Linux 安裝程式的啟動螢幕。

最初,這個新的控制檯視窗將忽略您的鍵盤和滑鼠。單擊新的控制檯視窗內,它將開始接受您的鍵盤和滑鼠。
任何時候您的鍵盤和滑鼠卡在 VMware 虛擬機器中,您都可以按CTRL 和 ALT 鍵一起將其移出虛擬機器。如果您仍然看到啟動螢幕,那麼您可以按 Enter 鍵繼續,或者只需等待它自動繼續。
- 選擇跳過媒體測試。

- 當第一個安裝程式螢幕出現時,選擇下一步。

- 接受預設的英語語言,然後選擇下一步。

- 選擇美國英語鍵盤佈局,然後單擊下一步。

- 選擇是初始化驅動器。

- 接受預設佈局(無加密),然後選擇下一步。

- 選擇是刪除所有分割槽。

- 將主機名設定為collabn1.vm.ardentperf.com,並在選擇下一步之前保持 DHCP 啟用。

- 選擇您所在時區的時區!但讓系統時鐘以 UTC 執行。

- 將 root 密碼設定為racattack

- 選擇立即自定義 - 但不要選擇任何“附加任務”。然後單擊下一步。

-
僅選擇以下軟體包組,然後單擊下一步繼續
類別 選擇 桌面環境 Gnome 桌面環境 應用程式 編輯器
圖形化網際網路
基於文字的網際網路開發 開發庫
開發工具伺服器 伺服器配置工具 基本系統 管理工具
基礎
系統工具
X 視窗系統
不要選擇叢集儲存或叢集。

- 選擇下一步開始安裝。


- 安裝完成後,選擇重啟。

- 機器重啟後 - 當您看到歡迎螢幕時 - 選擇下一步。

-
接受許可協議並選擇下一步。

-
停用防火牆並選擇下一步。單擊是確認。

-
在選擇下一步之前停用SELinux。用是確認。

- 保持Kdump停用並選擇下一步。

- 保持時鐘不變(時間錯誤)並點選下一步。

- 不要建立使用者;點選下一步。選擇繼續確認。

- 選擇下一步跳過音效卡配置。

- 選擇完成關閉安裝程式。點選確定重啟。

- 重啟後,您將看到登入螢幕。

完成作業系統安裝
[edit | edit source]提示:如果您熟悉Unix命令列,那麼我們建議您除了使用VMware控制檯之外,還要透過SSH連線。然後,您可以從本手冊中複製和貼上許多命令!在我們配置網路之前,VMware將分配地址192.168.78.128。
- 以使用者root登入,密碼為racattack。

- GNOME是OEL中預設安裝的圖形視窗環境。首先,停用GNOME CD自動掛載。轉到選單系統 >> 首選項 >> 可移動驅動器和媒體。

- 取消選中可移動儲存下所有選項,然後點選關閉。

- 從選單應用程式 >> 附件 >> 終端開啟一個終端視窗。

- 從選單中開啟編輯 >> 當前配置檔案。

- 在標題和命令選項卡中,選中以登入shell執行命令複選框,然後關閉對話方塊。

- 編輯器"gedit"是一個簡單的圖形編輯器 - 與記事本類似 - 它可以用來編輯Linux上的檔案。如果您打算使用gedit,那麼建議您開啟編輯 > 首選項來停用文字換行並啟用行號。

- 在終端視窗中以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
它不會給您造成任何問題,但請注意,在您繼續進行本實驗時,一些CPU密集型和I/O密集型作業將在後臺執行約10分鐘(例如,updatedb和makewhatis)。您可能會注意到系統性能略有下降。您可以隨時使用top程式檢視當前正在執行的內容。
- 在終端視窗中以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
- 在終端視窗中以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
- 如果狀態列中任何小的CD映象沒有綠色圓點,則點選CD映象,然後選擇"連線到[RAC11g] iso/... on Server"。如果出現一個視窗顯示CD內容,請確保關閉該視窗。

- 建立兩個名為cdrom和cdrom5的CDROM目錄。
請務必使用這些名稱,因為本手冊中許多後面的步驟都會引用它們![root@collabn1 ~]# cd /mnt [root@collabn1 mnt]# mkdir cdrom [root@collabn1 mnt]# mkdir cdrom5
- 為所有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
- 安裝其他所需的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.*
- 彈出cdrom [root@collabn1 mnt]# eject /mnt/cdrom
- 返回VMware控制檯中的摘要選項卡。從狀態框中選擇安裝VMware Tools。點選安裝按鈕開始。

- 安裝VMware客戶端工具並執行配置工具。
您必須在VMware控制檯中執行此步驟;不要使用PuTTY或任何其他終端程式。[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共享可能會失敗,但沒關係。

- 執行網路命令。(您可以將命令複製貼上到終端中。)接下來,執行vmware-toolbox並啟用時鐘同步。

- 登出您的會話。

- 解除安裝VMware Tools映象: umount /mnt/cdrom 使用VMware基礎架構Web介面,從[RAC11g-iso]資料儲存掛載Oracle Enterprise Linux。掛載它: mount /mnt/cdrom
建立RAC攻擊DVD
[edit | edit source]如果您在課堂或活動中,則講師可能提供了一個名為RAC11gR2.iso的第二個虛擬DVD,以節省一些課堂時間。它包含所有其他軟體下載。
- 跳過此實驗,繼續下一個實驗。
如果您在家,請按照以下說明下載所有需要的軟體並自己構建第二個DVD。
- 繼續下面。
- 以root使用者身份登入後,下載最新版本的RAC攻擊支援程式碼(GPL)。# cd ~ # curl -kL github.com/ardentperf/racattack/tarball/master | tar xz
- 您可以在此處檢視下載的總列表:https://github.com/ardentperf/racattack/blob/master/makeDVD/auto.sh 如果您已經下載了這些檔案中的任何一個,您可以選擇將其複製到虛擬機器中的/tmp目錄中。建立DVD時,任何剩餘的檔案將自動下載。
- 透過執行自動構建指令碼建立DVD。系統將提示您輸入Oracle SSO登入名和密碼。
如果您的帳戶未被授權使用Oracle支援,則補丁下載將失敗。[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]- 編輯/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
- 編輯/etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
- 編輯/etc/pam.d/login,並在selinux open行之前插入以下行。session required /lib/security/pam_limits.so session required pam_limits.so
- 建立組和使用者。將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: 所有身份驗證令牌已成功更新。
- 建立目錄。[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
- 登出您的會話,以oracle使用者身份登入。

- 為oracle使用者停用GNOME CD自動掛載。轉到選單系統 >> 首選項 >> 可移動驅動器和媒體。

- 取消選中可移動儲存下所有選項,然後點選關閉。

- 開啟一個終端視窗。

- 從選單中開啟編輯 >> 當前配置檔案。

- 在標題和命令選項卡中,選中以登入shell執行命令複選框,然後關閉對話方塊。

- 如果您使用的是gedit,則開啟編輯 > 首選項來停用文字換行並啟用行號。

- 為 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
- 設定 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

- 關閉並重新開啟您的終端會話,以便新配置檔案生效。
- 安裝 fix_cssd 指令碼。
在 VMware 測試環境中,您通常只有很少的記憶體。Oracle CSS 程序會佔用大量的記憶體(在本實驗中超過 50%),因為它會鎖定物理記憶體中的數百兆位元組。在 VMware(針對 ASM 和 RAC 環境)中,這可能是不可取的。這個低階技巧將使記憶體能夠在執行時交換。永遠,永遠,永遠,即使在您最瘋狂的夢境中,也不要想過在任何接近生產系統的環境中嘗試這個方法。
該檔案的原始碼可以在 https://github.com/ardentperf/racattack/blob/master/makeDVD/root/fix_cssd/fix_cssd.sh 找到。[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'
- 如果機器正在執行,則登出並關閉。機器需要關閉電源。
- 在左側的庫存選項卡中,選擇collabn1(我們剛剛建立的虛擬機器)。

- 向下滾動到硬體框並確認存在一個型別為NAT的網路介面卡。

- 從命令框中,單擊新增硬體。在出現的視窗中,單擊網路介面卡。

- 選擇建立僅主機網路連線。這將用於互連。然後單擊下一步。

- 單擊完成以建立網路介面卡。

對這兩個裝置重複步驟 1-6
| 虛擬裝置節點(介面卡/裝置) | 大小 | 路徑(資料儲存/目錄/檔名) |
|---|---|---|
| SCSI 1:0 | 3.25 GB | [RAC11g-shared] data.vmdk |
| SCSI 1:1 | 3.25 GB | [RAC11g-shared] backup.vmdk |
- 在左側的庫存選項卡中,選擇collabn1(我們剛剛建立的虛擬機器)。

- 從命令框中,單擊新增硬體。在出現的視窗中,單擊硬碟。

- 選擇建立新的虛擬磁碟並單擊下一步。

- 輸入容量3.25 GB並輸入名稱“[RAC11g-shared] data.vmdk”。
- 選擇檔案選項 → 立即分配所有磁碟空間。
- 選擇磁碟模式 → 獨立並持久。
- 選擇虛擬裝置節點 → SCSI 1:0。單擊下一步繼續。

- 單擊完成以建立磁碟。

磁碟可能需要一段時間才能出現在 VMware 控制檯中。在繼續進行實驗之前,請等待新磁碟出現。此外,網頁瀏覽器可能會顯示錯誤,要求您重新載入頁面並重新登入到 VMware。 - 對第二個磁碟重複步驟 1-5(它列在本次實驗的開頭)。
-
確認您的硬碟和網路裝置列表與該螢幕截圖匹配。

- 從命令框中,單擊配置虛擬機器。

- 單擊高階選項卡,然後向下滾動到配置引數。使用新增新條目按鈕新增此處列出的條目。單擊確定儲存配置更改。
名稱 值 disk.locking false diskLib.dataCacheMaxSize 0 diskLib.maxUnsyncedWrites 0 mainMem.useNamedFile false 
我發現以下三個網站在建立自定義 VMware 配置方面最為有用。它們展示了 VMware 的強大和多功能性,即使是免費的 VMware Server 產品。http://sanbarrow.com/vmx/vmx-advanced.html
http://vmfaq.com/?View=entry&EntryID=25
http://sanbarrow.com/vmx/vmx-config-ini.html
- 在Windows 資源管理器中,瀏覽到資料夾[RAC11g] \collabn1。將所有檔案複製到資料夾[RAC11g] \collabn2。
- [RAC11g] 的位置是在第一個實驗中確定的。在課堂上,講師可能會提供位置。
- 如果collabn2資料夾不存在,則建立它。


- 瀏覽到[RAC11g] \collabn2。編輯檔案collabn1.vmx(VMware 配置檔案)。您可以使用記事本或寫字板來編輯該檔案。

- 找到行displayName並將其更改為collabn2(新的節點名稱),然後儲存並關閉該檔案。displayName = "collabn2"

- 在左側的庫存選項卡中,選擇collabn1。

- 選擇控制檯選項卡。單擊播放按鈕以啟動虛擬機器。當您看到方框時,單擊任意位置開啟一個控制檯視窗。

- 以oracle使用者身份登入,密碼為racattack。

- 開啟一個終端視窗。

- 使用“su -”命令切換到 root 使用者。(密碼為racattack。)確認存在兩個新的磁碟,並且它們具有相應的尺寸。這兩行應該完全匹配!! [root@collabn1 ~]# cat /proc/partitions major minor #blocks name ... 8 16 3407872 sdb 8 32 3407872 sdc
- 使用fdisk在所有新建立的磁碟上建立分割槽。
- 執行fdisk /dev/sdb 您應該看到訊息“裝置既不包含有效的 DOS 分割槽表,也不包含 Sun、SGI 或 OSF 磁碟標籤”
- 鍵入“n”以建立新的分割槽。
- 鍵入“p”以建立主分割槽。
- 鍵入分割槽號1。
- 按兩次 Enter 鍵接受預設的第一個/最後一個柱面。
- 鍵入“t”以設定分割槽型別。
- 輸入分割槽型別da(非 FS 資料)。
- 鍵入“w”將分割槽表寫入磁碟。
- 對磁碟 /dev/sdc 重複上一步
完成上一個實驗後,您應該已經以 oracle 使用者身份登入到 collabn1。您應該已經打開了一個終端,您目前已切換到 root 使用者。
- 以 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 範圍:主機
- 透過直接編輯 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
- 更新 DNS 搜尋域 [root@collabn1 network-scripts]# gedit /etc/resolv.conf search vm.ardentperf.com nameserver 192.168.78.2
- 以 root 身份,透過輸入 service network restart 重新啟動網路服務。然後使用 ifconfig 確認新的 IP 地址。還可以透過檢查 /etc/resolv.conf 來確認搜尋域 - 如果檔案已還原,則再次編輯它。(當我編寫這個實驗時,更改在第二次編輯檔案後就保留了。)
您必須在 VMware 中執行此步驟;不要使用 PuTTY。

- 編輯 /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
- 在 VMware 控制檯中,轉到 虛擬機器 選單並選擇 將虛擬機器新增到清單。

- 瀏覽到 RAC11g/collabn2 並開啟 collabn1.vmx。確保您瀏覽到正確的資料夾!

- 在左側的 清單 選項卡中,選擇新的虛擬機器 - collabn2。選擇 控制檯 選項卡並單擊播放按鈕以啟動虛擬機器。

- VMware 控制檯應詢問您是否複製或移動了虛擬機器。回答您複製了檔案,然後單擊 確定。

- 當您看到方框時,單擊任意位置開啟一個控制檯視窗。

- 以oracle使用者身份登入,密碼為racattack。

- 開啟一個終端(應用程式 >> 附件 >> 終端)並切換到 root 使用者。
當您第一次在 collabn2 上開啟控制檯時,您會注意到主機名仍然顯示為 collabn1。這是因為我們複製了機器;我們很快就會更改主機名。

- 確認 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
- 透過直接編輯 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
- 更新 DNS 搜尋域 [root@collabn1 network-scripts]# gedit /etc/resolv.conf search vm.ardentperf.com nameserver 192.168.78.2
- 透過編輯 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
- 以 root 身份,透過輸入 service network restart 重新啟動網路服務。然後使用 ifconfig 確認新的 IP 地址。確認搜尋域,方法是檢查 /etc/resolv.conf - 如果檔案已還原,則再次編輯它。(在完成此實驗時,更改在第二次編輯檔案後就保留了。)還可以使用 hostname 確認新的主機名。
您必須在 VMware 中執行此步驟;不要使用 PuTTY。

- 退出終端會話並啟動一個新的會話,以便您可以在提示符中看到更新的主機名。
- 編輯 /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
- 登入到節點 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
- 儲存主機的公鑰。您可以使用名為 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
- 測試 ssh 等效性。重要的是沒有提示,並且您會自動登入。[oracle@collabn2 .ssh]$ ssh collabn1 警告:已將 IP 地址“192.168.78.51”的 RSA 主機金鑰永久新增到已知主機列表中。上次登入:2008 年 4 月 15 日星期二 16:59:36 來自 collabn2 [oracle@collabn1 ~]$ exit 退出連線到 collabn1 已關閉。
- 切換到節點 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
- 測試 ssh 等效性。[oracle@collabn1 ~]$ ssh collabn2 上次登入:2008 年 4 月 15 日星期二 17:02:29 來自 collabn2 [oracle@collabn2 ~]$ exit 退出連線到 collabn2 已關閉。
- 您還需要能夠登入到自己;測試一下。[oracle@collabn1 ~]$ ssh collabn1 上次登入:2008 年 4 月 15 日星期二 17:03:39 來自 collabn2 [oracle@collabn1 ~]$ exit 退出連線到 collabn1 已關閉。
- 執行 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 的多個使用者已透過 硬體和作業系統設定後的檢查已成功。
- 以 oracle 身份登入 collabn1 並開啟一個終端。切換到 root 使用者。

- 在兩個節點上安裝 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
- 以 oracle 使用者身份登入 collabn1 並開啟一個終端。

- 執行 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' 叢集服務設定前的檢查在所有節點上均不成功。
- 切換到 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
- 以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" ...
- 以oracle使用者身份,啟動網格安裝程式。在第一個螢幕上,選擇為叢集安裝和配置網格基礎設施,然後單擊下一步。[oracle@collabn1 ~]$ /mnt/cdrom*/grid/runInstaller


- 選擇高階安裝,然後單擊下一步。

- 接受預設語言(英語)並選擇下一步。

- 將叢集命名為collab,並確保SCAN名稱為collab-scan,埠為1521,然後單擊下一步。

- 新增節點collabn2,其VIP為collabn2-vip,然後選擇下一步以驗證叢集配置。

- 驗證子網192.168.78.0上的eth0是否為PUBLIC,子網172.16.100.0上的eth1是否為PRIVATE,然後單擊下一步。

- 選擇將叢集軟體檔案儲存在ASM中,然後選擇下一步。

- 建立一個名為DATA的磁碟組,使用外部冗餘,只使用磁碟ORCL:DATA,然後單擊下一步。

- 選擇對所有帳戶使用相同的密碼,並輸入密碼racattack,然後單擊下一步。(忽略Oracle不喜歡此密碼的訊息。)

- 不要使用IPMI。單擊下一步。

- 將OSDBA組設定為asmdba,將OSOPER組設定為asmoper,將OSASM組設定為asmadmin。然後單擊下一步。

- 接受ORACLE_BASE位置/u01/app/oracle,並使用ORACLE_HOME位置/u01/grid/oracle/product/11.2.0/grid_1。然後單擊下一步。

- 接受預設的庫存位置/u01/app/oraInventory並選擇下一步

- 先決條件檢查將執行。將發出警告,說明三個檢查失敗:物理記憶體、交換空間和網路時間協議。單擊複選框以忽略所有,然後單擊下一步。

-
在oracle使用者主目錄中儲存一個名為grid.rsp的響應檔案。然後單擊完成以安裝網格基礎設施。


- 出現提示時,以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.
在第二個節點上執行任何指令碼之前,檢查第一個節點上的CPU利用率 - 您剛完成執行指令碼的地方。如果%idle為0,則後臺仍有程序在執行,您應該等到%idle增加後才繼續。您可以使用以下三個命令中的任何一個來監控CPU- top
- vmstat 3
- iostat -x sda sdb sdc 3
- 執行完兩個指令碼後,返回安裝程式視窗並單擊確定以繼續執行配置助手。

- 叢集驗證實用程式將失敗,因為NTP未執行。如果您願意,請檢視日誌檔案末尾的錯誤訊息。然後單擊確定關閉訊息框,並單擊下一步以繼續。

- 您現在應該看到最終螢幕!單擊關閉退出安裝程式。

[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.
這些步驟對於測試或生產環境來說並不必要。但是,它們可能會使您的VMware測試叢集更加穩定,並且它們將提供一個關於網格基礎設施的良好學習機會。
- 網格基礎設施必須只在一個節點上執行才能更改這些設定。以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高可用性服務已停止。
- 返回節點collabn1。以root使用者身份,增加misscount,以便CRS在重啟之前等待1.5分鐘。(VMware可能會在某些筆記型電腦上稍微拖延!)[root@collabn1 ~]# crsctl get css misscount 30 [root@collabn1 ~]# crsctl set css misscount 90 配置引數misscount現在設定為90。
- 增加disktimeout,以便CRS在重啟之前等待10分鐘以完成I/O。[root@collabn1 ~]# crsctl get css disktimeout 200 [root@collabn1 ~]# crsctl set css disktimeout 600 配置引數disktimeout現在設定為600。
- 在另一個節點上重新啟動CRS。[root@collabn1 bin]# ssh collabn2 [root@collabn2 bin]# crsctl start crs
- 以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
- 確保您位於磁碟組選項卡上,然後右鍵單擊DATA磁碟組並選擇編輯屬性。

- 將資料庫相容性和ADVM相容性都設定為11.2.0.0.0,然後單擊確定。在提示有關提高資料庫相容性時選擇是。

- 單擊建立按鈕新增一個新的磁碟組。

- 將新磁碟組命名為BACKUP。選擇外部冗餘並選擇磁碟ORCL:BACKUP。然後,單擊顯示高階選項按鈕。

- 保留分配單元為1MB,並將所有相容性引數設定為11.2.0.0.0,然後單擊確定。


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

- 在collabn1上以root使用者身份開啟一個終端。

- 在兩個節點上為兩個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
- 從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:確定
- 從終端視窗中,以root身份啟動ocfs2console

- 從CLUSTER選單中選擇CONFIGURE NODES…。如果您看到叢集已啟動的通知,請單擊關閉按鈕確認。


- 點選ADD,輸入collabn1和私有 IP 172.16.100.51。接受預設埠。點選OK儲存。

- 再次點選ADD,輸入collabn2和172.16.100.52。然後選擇APPLY,再點選CLOSE關閉視窗。

- 從CLUSTER選單中選擇PROPAGATE CONFIGURATION…。如果提示您接受主機金鑰,請輸入YES。在兩個提示符處輸入根密碼racattack。當您看到訊息“Finished!”時,按下<ALT-C>關閉視窗。

- 從TASKS選單中選擇FORMAT建立 OCFS 檔案系統。選擇/dev/sdb1並輸入卷標u51-data。將其他選項保留為預設值,然後單擊OK格式化卷。透過單擊YES確認。


- 對卷/dev/sdc1重複上述步驟,並將其命名為u52-backup。

- 從FILE選單中選擇QUIT退出 OCFS2 控制檯。

- 在兩個節點上配置 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
- 在執行 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
- 編輯/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
- 掛載卷併為 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
- 以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
- 可選地,檢查/var/log/messages和dmesg輸出以獲取與 OCFS2 相關的狀態訊息。
叢集驗證工具(共享檔案系統)
[edit | edit source]- 以 oracle 使用者身份登入 collabn1 並開啟一個終端。

- 執行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' 在所有節點上,叢集服務設定的預檢查均不成功。
- 切換到 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
- 以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 目錄呈現給叢集軟體。
- 以 **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**
- 在節點 **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**
在大型叢集資料庫部署中,多個 NFS 裝置和大型機叢集檔案系統非常常見。我們將在此處使用 OCFS2 來使用檔案系統練習 11gR2 RAC。
- 以oracle使用者身份,啟動網格安裝程式。在第一個螢幕上,選擇為叢集安裝和配置網格基礎設施,然後單擊下一步。[oracle@collabn1 ~]$ /mnt/cdrom*/grid/runInstaller


- 選擇高階安裝,然後單擊下一步。

- 接受預設語言(英語)並選擇下一步。

- 將叢集命名為collab,並確保SCAN名稱為collab-scan,埠為1521,然後單擊下一步。

- 新增節點collabn2,其VIP為collabn2-vip,然後選擇下一步以驗證叢集配置。

- 驗證子網192.168.78.0上的eth0是否為PUBLIC,子網172.16.100.0上的eth1是否為PRIVATE,然後單擊下一步。

- 選擇將叢集軟體檔案儲存在 **共享檔案系統** 中,然後選擇 **下一步**。

- 對於 OCR,選擇外部冗餘並輸入路徑 /u61/cluster/ocr。(這是來自 BUG 修復的 NFS 位置。)單擊 **下一步** 繼續。

- 對於投票磁碟,執行相同的操作 - 選擇外部冗餘並輸入路徑 /u61/cluster/vdsk。(同樣,這是來自 BUG 修復的 NFS 位置。)單擊 **下一步** 繼續。

- 不要使用IPMI。單擊下一步。

- 將OSDBA組設定為asmdba,將OSOPER組設定為asmoper,將OSASM組設定為asmadmin。然後單擊下一步。

- 接受ORACLE_BASE位置/u01/app/oracle,並使用ORACLE_HOME位置/u01/grid/oracle/product/11.2.0/grid_1。然後單擊下一步。

- 接受預設的清單位置,然後選擇 **下一步**

- 先決條件檢查將執行。將發出警告,說明三個檢查失敗:物理記憶體、交換空間和網路時間協議。單擊複選框以忽略所有,然後單擊下一步。

-
在oracle使用者主目錄中儲存一個名為grid.rsp的響應檔案。然後單擊完成以安裝網格基礎設施。


- 出現提示時,以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.
- 執行完兩個指令碼後,返回安裝程式視窗並單擊確定以繼續執行配置助手。

- 叢集驗證實用程式將失敗,因為NTP未執行。如果您願意,請檢視日誌檔案末尾的錯誤訊息。然後單擊確定關閉訊息框,並單擊下一步以繼續。

- 您現在應該看到最終螢幕!單擊關閉退出安裝程式。

這些步驟對於測試或生產環境來說並不必要。但是,它們可能會使您的VMware測試叢集更加穩定,並且它們將提供一個關於網格基礎設施的良好學習機會。
- 網格基礎設施必須只在一個節點上執行才能更改這些設定。以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高可用性服務已停止。
- 返回節點collabn1。以root使用者身份,增加misscount,以便CRS在重啟之前等待1.5分鐘。(VMware可能會在某些筆記型電腦上稍微拖延!)[root@collabn1 ~]# crsctl get css misscount 30 [root@collabn1 ~]# crsctl set css misscount 90 配置引數misscount現在設定為90。
- 增加disktimeout,以便CRS在重啟之前等待10分鐘以完成I/O。[root@collabn1 ~]# crsctl get css disktimeout 200 [root@collabn1 ~]# crsctl set css disktimeout 600 配置引數disktimeout現在設定為600。
- 在另一個節點上重新啟動CRS。[root@collabn1 bin]# ssh collabn2 [root@collabn2 bin]# crsctl start crs
- 以 **oracle** 使用者身份登入到 **collabn1** 並開啟終端。執行 **CLUVFY** 檢查您是否已準備好啟動資料庫安裝。記憶體、交換空間和 NTP/時間檢查可能會失敗,但其他所有檢查都應該成功。[oracle@collabn1 ~]$ **/mnt/cdrom*/grid/runcluvfy.sh stage -pre dbinst
- 使用 **/mnt/cdrom*/database/runInstaller** 啟動資料庫安裝程式。

- 在第一個螢幕上,將電子郵件留空並取消選中“安全更新”選項。單擊 **下一步** 繼續。選擇 **是** 確認您不想輸入電子郵件地址。

- 選擇僅安裝資料庫軟體,然後單擊 **下一步**。

- 選擇真實應用叢集資料庫安裝,然後選擇所有節點。單擊 **下一步** 繼續。

- 選擇英語,然後單擊 **下一步**。

- 選擇企業版安裝,然後單擊 **下一步**。

- 確認 ORACLE_BASE 為 /u01/app/oracle,並將 **更改** ORACLE_HOME 為 /u01/app/oracle/product/11.2.0/db_1。單擊 **下一步** 繼續。

- 驗證 OSDBA 組為 dba,OSOPER 組為 oper。單擊 **下一步** 繼續。

- 先決條件檢查將執行。將發出警告,說明三個檢查失敗:物理記憶體、交換空間和網路時間協議。單擊複選框以忽略所有,然後單擊下一步。

-
在 oracle 使用者的主目錄中 **儲存** 一個名為 db.rsp 的響應檔案。然後單擊 **完成** 安裝 oracle 資料庫軟體。


- 當出現提示時,以 **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.
- 執行完兩個指令碼後,返回到安裝程式視窗,然後單擊 **確定** 完成安裝。現在您應該看到最終螢幕!單擊 **關閉** 退出安裝程式。

- 僅限 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
-
僅限 ASM 資料庫:驗證兩個磁碟組是否已裝載。如果已啟動或重啟,則 BACKUP 磁碟組可能已解除安裝。要裝載它,請右鍵單擊,然後選擇在所有節點上裝載。單擊退出關閉 ASM 配置助手。

- 鍵入“. oraenv”設定環境。保留預設 SID,並將 /u01/app/oracle/product/11.2.0/db_1 輸入 ORACLE_HOME。然後鍵入 dbca 啟動資料庫配置助手。

- 在第一個提示符處,選擇“真實應用程式叢集資料庫”,然後單擊下一步。

- 選擇“建立資料庫”,然後單擊下一步繼續。

- 選擇“通用或事務處理”,然後單擊下一步繼續。

- 選擇“管理員管理的資料庫”,將全域性資料庫名稱設定為 RAC.vm.ardentperf.com,並選擇所有叢集節點。然後單擊下一步繼續。

- 不要配置企業管理器(這裡可能沒有足夠的記憶體)。取消選中它,然後單擊自動維護任務選項卡。

- 停用自動維護任務(它們可能會真正佔用筆記型電腦的 CPU...)。取消選中該框後,單擊下一步繼續。

- 將所有密碼設定為 racattack,然後單擊下一步繼續。選擇是繼續,即使 Oracle 不喜歡該密碼。

- 根據正在執行的 RAC 攻擊實驗室的軌道選擇儲存型別。
Oracle ASM 共享檔案系統 選擇“自動儲存管理 (ASM)”的儲存型別。
選擇“叢集檔案系統”的儲存型別。
- 配置 Oracle 管理檔案。
Oracle ASM 共享檔案系統 選擇“Oracle 管理檔案”,並在資料庫區域中鍵入 +DATA。然後單擊下一步繼續。
選擇“Oracle 管理檔案”,並在資料庫區域中鍵入 /u51/oradata。然後單擊下一步繼續。
- 配置閃回恢復區。
Oracle ASM 共享檔案系統 選擇“指定閃回恢復區”,並將 +BACKUP 作為目標鍵入。將大小增加到 3000 MB。不要啟用歸檔,並選擇下一步繼續。
選擇“指定閃回恢復區”,並將 /u52/oradata 作為目標鍵入。將大小增加到 3000 MB。不要啟用歸檔,並選擇下一步繼續。
Oracle 將在指定位置自動建立目錄樹,並按型別和資料庫對檔案進行分類。 - 選擇安裝示例模式。選中該框後,單擊下一步繼續。

- 將記憶體目標提高到 400 MB,並且不要選中“自動記憶體管理”。跳過其他選項卡,然後單擊下一步繼續。

- 接受預設儲存設定,然後單擊下一步繼續。

- 繼續並生成指令碼(在預設位置),但保留“建立資料庫”選項選中。單擊完成開始建立資料庫。

- 檢視摘要,然後單擊確定繼續。

- DBCA 將在生成指令碼後通知您。單擊確定繼續建立資料庫。


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


- 最後一件事:在兩個節點上編輯 /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 的已知問題,我們將使用此版本進行本實驗室。
這些說明已儲存為 HTML 檔案,位於講師提供的虛擬 DVD 上。它位於您的虛擬 RAC 節點的 /mnt/cdrom5 中。 |
對於本實驗室,講師提供了最新的 PSU。PSU 和 CPU 是一個或多個獨立補丁的集合。如果獨立補丁已透過滾動升級認證,則只能以滾動方式應用於 Oracle 資料庫。
- 檢視安裝說明。我們將安裝三個補丁,您可以在以下位置找到 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
- 首先,我們需要更新 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 成功。
- 在節點collabn2 上重複上一步。$ ssh collabn2 ... 重複上一步 ... $ exit
- 此新版本的 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) 已成功建立。
- 在講師提供的 DVD 上找到 Grid Infrastructure 和 Database PSU。$ cd /mnt/cdrom5/patch $ ls opatch-6880880 psu2-gi-9655006 psu6-db-12419378
- 我們知道這些 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
- 我們也知道不會有任何補丁衝突(因為這些是我們安裝的第一個補丁) - 但也請進行驗證。$ 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" 透過。
- 自動補丁應用流程將自動關閉並重啟節點上的所有資料庫程序。但是,我們不希望自動重啟,因為我們正在應用兩個PSU(一個用於網格,一個用於資料庫)。停用節點collabn1的例項自動啟動,並手動關閉例項以進行補丁應用。
在生產系統上,所有活動連線都需要在執行此操作之前遷移到另一個例項(例如,使用服務)。collabn1$ srvctl disable instance -d rac -i RAC1 collabn1$ srvctl stop instance -d rac -i RAC1
- 我們將使用自動補丁應用來應用網格基礎設施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.
- 返回到oracle使用者並在講師提供的DVD上找到資料庫PSU。使用oenv進入資料庫環境,然後執行opatch apply。
- 在本地模式下執行OPatch,這樣它就不會嘗試在整個叢集中進行自動滾動安裝。
- 當提示關於OCM時,將您的使用者名稱留空,並使用"y"確認您不想輸入任何帳戶資訊。
- 當提示本地主目錄是否已準備好進行補丁時,鍵入"y"繼續。
- 啟用並啟動節點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
- 使用自動補丁應用來應用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.
- 返回到oracle使用者並在講師提供的DVD上找到資料庫PSU。使用oenv進入資料庫環境,然後執行opatch apply。
- 在本地模式下執行OPatch,這樣它就不會嘗試在整個叢集中進行自動滾動安裝。
- 當提示關於OCM時,將您的使用者名稱留空,並使用"y"確認您不想輸入任何帳戶資訊。
- 當提示本地主目錄是否已準備好進行補丁時,鍵入"y"繼續。
- 啟用並重啟節點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
- 執行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
- 可選:如果您想更多地練習使用補丁,那麼嘗試回滾資料庫PSU,然後嘗試在自動滾動模式(不使用本地標誌)或“最小停機時間”模式下應用它。
叢集軟體測試
[edit | edit source]叢集軟體和圍欄
[edit | edit source]本實驗的目的是透過強制觸發Oracle叢集軟體內建圍欄功能的配置來演示Oracle叢集軟體的圍欄能力。使用Oracle叢集軟體,圍欄在節點級別透過重啟無響應或失敗的節點來處理。這類似於“向另一臺機器開槍”(STOMITH)演算法,但實際上是自殺而不是影響另一臺機器。網上有很多很好的資料可以提供更多資訊。
- 從一個正常執行的叢集開始,資料庫例項正在執行。
- 監控每個節點上的叢集軟體日誌檔案。在每個節點上,啟動一個新的視窗並執行以下命令:[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
- 我們將模擬“拔掉”網路介面,方法是將一個專用網路介面關閉。在collabn2節點上,透過執行以下命令(以root使用者身份)關閉專用網路介面:[root@collabn2 ~]# ifconfig eth1 down或者,您也可以透過在VMware中將HostOnly網路介面卡關閉來模擬這種情況。


- 執行完此命令後,觀察您在步驟2中開始監控的日誌檔案。您應該在這些日誌檔案中看到錯誤,最終(可能需要一兩分鐘,字面上)您將觀察到一個節點自行重啟。如果您使用ifconfig觸發故障,那麼節點將重新加入叢集,例項應該自動啟動。如果您使用VMware觸發故障,那麼節點將不會重新加入叢集。
- 哪個檔案包含指示節點未重新加入叢集的原因的錯誤訊息?
- 重啟的節點是否總是與發生故障的節點相同?為什麼或為什麼不?
本實驗的目標是演示 Oracle 快速應用程式通知 (FAN) 呼叫。在 11g 之前的版本中,這些也稱為 Oracle 叢集軟體呼叫。
此功能是 Oracle 叢集軟體的一個相對鮮為人知的特性,它可以觸發指令碼(或包含指令碼的整個目錄),以在發生叢集範圍事件時執行您希望執行的任何任務。
有關更多資訊,請參閱此處文件:http://download.oracle.com/docs/cd/B28359_01/rac.111/b28254/hafeats.htm#BABGCEBF
在本練習中,我們將在每個節點上配置一些 FAN 呼叫指令碼,然後觸發各種叢集事件,以檢視每個事件如何觸發呼叫指令碼。
- 從一個正常的執行叢集開始,兩個節點都已啟動並執行。
- 從每個伺服器上的一個 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 &
請注意,主機名和日期命令周圍使用了反引號。
- 確保檔案的許可權設定為 755,使用以下命令: [oracle@<node_name> ~]$ chmod 755 \ > /u01/grid/oracle/product/11.2.0/grid_1/racg/usrcocallout1.sh
- 監控每個節點上叢集軟體的日誌檔案。在每個節點上,啟動一個新視窗並執行以下命令: [oracle@<node_name> ~]$ tail –f \ /u01/grid/oracle/product/11.2.0/grid_1/log/`hostname -s`/crsd/crsd.log
- 接下來,我們需要觸發一個會導致呼叫觸發的事件。一個這樣的事件是節點關閉。關閉節點 collabn2 上的叢集軟體。 [root@collabn2 ~]# crsctl stop crs 正在停止資源。這可能需要幾分鐘。已成功停止 Oracle 叢集軟體資源 正在停止叢集同步服務。正在關閉叢集同步服務守護程序。已成功發出關閉請求。
- 執行完此命令後,觀察您在步驟 2 中開始監控的日誌檔案。因為我們測試叢集的超時時間很長,所以您可能需要等待幾分鐘才能看到任何內容。
- 最終,您應該看到條目,指出節點已失敗,緊隨其後,您應該在 /tmp/<hostname>_uptime.log 檔案中看到一個條目,表明節點已關閉。
- 注意哪些成員執行叢集軟體呼叫指令碼。(存活的成員可以執行命令通知客戶端和/或應用程式伺服器,其中一個叢集節點已關閉。)
- 重新啟動叢集軟體。是否有節點啟動事件? [root@collabn2 bin]# crsctl start crs
- 嘗試關閉其中一臺虛擬機器 - 與之前的測試相比,結果有什麼不同?如果停用 Linux 網路介面或 VMware 網路卡會怎樣?
- 如果您願意,可以進行更多測試。另一個有趣的事件是資料庫例項意外關閉。在安裝資料庫後,回到本實驗室測試這種情況。 [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 包開始。
- 以 oracle 使用者身份登入節點 collabn1,並開啟到資料庫的連線,以 SYSDBA 身份登入,並解鎖 SH 使用者帳戶。另外授予 DBA 訪問許可權。 SQL> alter user sh identified by sh account unlock; 使用者已更改。 SQL> grant dba to sh; 授予成功。
- 下載 Oracle 的基本(僅限英語)即時客戶端和 Oracle 的即時客戶端 SQLPlus 包。實驗室講師可能已提供這些檔案,或者也可以從 Oracle 網站下載:http://www.oracle.com/technetwork/topics/winsoft-085727.html 您需要的兩個檔案是
- instantclient-basiclite-*.zip
- instantclient-sqlplus-*.zip
- 每個存檔包含一個名為“instantclient_11_2”的資料夾。將此資料夾(來自兩個存檔)解壓縮到 C:\。(在資源管理器中,您可以拖放,也可以從“檔案”選單中選擇“全部提取”。)

- 編輯 c:\windows\system32\drivers\etc\hosts 並新增 RAC 節點的 IP 地址。
如果沒有這個步驟,您的資料庫連線將無法正常工作 - 您不能只建立一個使用 IP 地址的 tnsnames。在執行此步驟之前,嘗試幾次執行步驟 4。步驟 4 有時會掛起嗎?您知道為什麼嗎?我們將在後面進一步探討...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

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

- 建立一個 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) ) )
- 透過設定 TNS_ADMIN 環境變數並執行 SQLPLUS 測試您的 TNSNAMES。 C:\instantclient_11_2>set TNS_ADMIN=c:\instantclient_11_2 C:\instantclient_11_2>sqlplus sh/sh@RAC

- 以 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
- 透過在兩個節點上檢查 lsnrctl 以及檢視兩個節點上的 SERVICE_NAMES 初始化引數來檢查服務在哪裡執行。
您永遠不應直接更改 RAC 資料庫上的 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
- 使用 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>
- 等待片刻,然後重複步驟 2。發生了什麼? collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s svctest
- 重新啟動您殺死的例項。
這不會啟動任何例項恢復。您知道為什麼嗎?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]$
- 重複步驟 2。服務現在執行在哪裡? collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s svctest
- 手動故障轉移服務。確認服務現在執行在哪裡。請注意,這不會斷開任何當前會話 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。
- 在本地計算機上編輯例項客戶端使用的 TNSNAMES.ORA 檔案。新增兩個名為 CFTEST 和 CFTEST-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) ) )
- 在 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))
- 在 VMware 控制檯中,確保您已開啟從 Windows 連線到的節點 collabn1。透過從虛擬機器選單中選擇關閉電源,模擬節點完全故障。

- 等待大約一分鐘(以便叢集可以檢測到故障節點)。然後,從 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
此實驗的目的是說明為什麼您應該始終使用 VIP 連線!
- 從 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
- 在本地計算機上編輯例項客戶端使用的 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
- 從 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 過程已成功完成。
- 重新連線並再次檢查您的會話的 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
- 同時開啟第二個連線到 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
- 在兩個查詢中啟動一個長時間執行的查詢。在查詢執行時,關閉它們連線到的節點。每個會話會發生什麼?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 中不會顯示相同的行為 - 需要更新!
--
- 從 VMware 控制檯中開啟兩個節點。

[root@collabn1 ~]# srvctl status database -d RAC Instance RAC1 is running on node collabn1 Instance RAC2 is running on node collabn2
- 在資料庫上開啟 SQLPlus 會話,並確認沒有 SH 使用者的會話。SQL> select inst_id, count(*) from gv$session where username='SH' group by inst_id; 沒有選擇任何行
- 在兩個例項上,透過清除 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 本地伺服器
- 在您連線的另一個 SQLPlus 會話中,密切關注連線的平衡情況。同時,開啟一個新的 shell 會話並執行此指令碼,該指令碼將開啟 160 個到資料庫的連線。a=160; while [ $a -gt 0 ]; do sqlplus sh/sh@RAC & a=$((a-1)) done 在客戶端負載均衡期間,連線是如何在資料庫例項之間分配的?
注意:在 11.2 中,這些連線是跨 SCAN 監聽器而不是 RAC 節點進行負載均衡的。 - 透過執行以下兩個命令終止所有 sqlplus 會話。執行第二個命令後,在看到 "no more job" 訊息後按 <Ctrl-C>。killall sqlplus while true; do fg; done <Ctrl-C>
- 在資料庫上開啟一個 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';
- 透過將 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))
- 編輯您連線到的伺服器上的 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) ) )
- 在您連線的另一個 SQLPlus 會話中,密切關注連線的平衡情況。同時,開啟一個新的 shell 會話並執行此指令碼,該指令碼將開啟 160 個到資料庫的連線 - 但這次它將使用 LBTEST 連線。a=160; while [ $a -gt 0 ]; do sqlplus sh/sh@LBTEST & a=$((a-1)) done 在伺服器端負載均衡期間,連線是如何在資料庫例項之間分配的?
- 透過執行以下兩個命令終止所有 sqlplus 會話。執行第二個命令後,在看到 "no more job" 訊息後按 <Ctrl-C>。killall sqlplus while true; do fg; done <Ctrl-C>
- 以 SYSDBA 身份連線到資料庫。
- 首先,透過執行 ?/rdbms/admin/dbmslock.sql 安裝 DBMS_LOCK 包SQL> @?/rdbms/admin/dbmslock.sql 包已建立。同義詞已建立。授權成功。
- 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;
- 接下來,建立 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;
- 最後,建立 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; /
我們將執行的第一個測試是序列測試。在叢集資料庫系統中,順序欄位通常成為爭用點。
- 首先,在 兩個節點 上以 SYSDBA 身份開啟到資料庫的連線。
- 設定一個表和幾個序列型別以進行比較。同時啟用 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;
- 在節點 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;
- 在另一個節點 - 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; /
- 在節點 collabn1 上重複步驟 3。觀察一旦引入叢集爭用,結果如何不同。
- 執行更多測試,比較不同型別的序列。關於序列,你能得出什麼結論?快取對 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;
- 登入到節點 collabn1 並以 SYSDBA 身份開啟到資料庫的連線,並解鎖 SH 使用者帳戶。同時授予其 DBA 許可權。SQL> alter user sh identified by sh account unlock; 使用者已更改。SQL> grant dba to sh; 授予成功。
- 以 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
- 啟用跟蹤並在 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
- 建立一個僅在節點 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 服務。
- 以 oracle 身份登入到節點 collabn1,並確認 pxtest 服務正在例項 RAC2 上執行。collabn1:/home/oracle[RAC1]$ srvctl status service -d RAC -s pxtest 服務 pxtest 正在例項 RAC2 上執行。collabn1:/home/oracle[RAC1]$
- 關閉服務。collabn1:/home/oracle[RAC1]$ srvctl stop service -d RAC -s pxtest collabn1:/home/oracle[RAC1]$
- 以 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; /
- 計劃作業立即執行,並使用與 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;
- 啟動 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
- 修改 PXTEST 服務以在兩個節點上執行,然後停止它。SQL> host srvctl modify service -d RAC -s pxtest -n -i RAC1,RAC2 SQL> host srvctl stop service -d RAC -s pxtest
- 提交 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(重新整理策略)之類的包。
- 以 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; /
- 退出 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
在本實驗中,我們將有意地錯誤配置叢集資料庫備份,並對本地非共享儲存進行一些常見錯誤。
- 以使用者 oracle 身份登入到collabn1上的終端。
- 在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
錯誤發生在遠端節點上,但在這裡報告。它也在遠端節點上記錄 - 您知道它在哪裡記錄嗎?需要建立什麼樣的監控才能透過此類訊息主動發出警報?
- 現在在遠端節點上建立目錄並重新執行操作。這應該會成功,但它仍然是一個糟糕的配置;我們將在本實驗的後面部分調查原因。SQL> host ssh collabn2 mkdir /u01/app/oradata SQL> alter system set db_recovery_file_dest='/u01/app/oradata'; System altered.
- 關閉整個叢集的資料庫。然後在collabn1上裝載它並將資料庫置於歸檔日誌模式。沒有分配歸檔日誌目標 - 歸檔日誌將去哪裡,為什麼?
為此,您不需要停用 cluster_database 初始化引數。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
- 在開啟資料庫之前,啟用閃回資料庫。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
- 現在,登入到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
- 有趣的是,資料庫似乎正常執行。調查警報日誌以獲取錯誤訊息。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
- 調查collabn1上的警報日誌 - 這裡出現任何錯誤訊息嗎?是否發生其他問題?
您可能需要等待幾分鐘。也檢查“srvctl status database -d RAC”的輸出。 - 停用閃回資料庫。您不需要關閉資料庫來執行停用操作。SQL> alter database flashback off; Database altered.
- 在資料庫上啟用塊更改跟蹤,並顯式選擇本地 FRA 目標。(通常,塊更改跟蹤檔案是在 OMF DB 目標而不是 FRA 中建立的。)SQL> alter database enable block change tracking 2 using file '/u01/app/oradata/changetracking.ctf'; 發生了什麼?確保檢查警報日誌。嘗試僅開啟一個例項,然後開啟另一個例項,看看會發生什麼。
- 停用塊更改跟蹤。SQL> alter database disable block change tracking; SQL> col filename format a40 SQL> select * from v$block_change_tracking; STATUS FILENAME BYTES ---------- ---------------------------------------- ---------- DISABLED
- 檢視兩個當前日誌的序列號。SQL> select thread#, sequence# from v$log where status='CURRENT'; THREAD# SEQUENCE# ---------- ---------- 1 6 2 3
- 執行“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
- 執行“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
- 檢查預設情況下歸檔日誌儲存在哪裡。(這是否符合您的預期?)將它們顯式分配到 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
- 使用預設的 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
- 交叉檢查存檔日誌;大多數會失敗。然後將檔案從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
我們將配置備份以充分利用叢集,透過並行執行。
- 配置 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;
- 對整個資料庫進行完整的熱備份。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
- 交叉檢查備份。發生了什麼?為什麼?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;
再試一次,不要分配維護通道。發生了什麼?為什麼?
此練習取決於之前練習的完成情況。
- 清除 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;
- 預覽整個資料庫的恢復。為什麼它會失敗?如何解決?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
- 將 FRA 還原到正確的共享位置,該位置在第 6 個實驗室之前的資料庫建立期間分配。SQL> alter system set db_recovery_file_dest='+FRA'; System altered.
- 現在,使用共享儲存重複資料庫備份練習和此練習。
- ↑ "什麼是防病毒軟體?". antivirus.comodo.com. Retrieved 2016-04-29.





































































































































































































