時至今日經過反復的試驗終於配置RAC成功現在把詳細的操作步驟貼出來供大家參考希望能讓同樣對RAC的配置存在困惑的兄弟少走一些不必要的彎路也希望朋友們發現有不足之處多多指正共同進步
環境
VMWARE SERVER ORALCE G系統平台為紅帽企業版基於RAW設備的的RAC磁盤陣列用模擬共享存儲替代節點為兩個
節點信息IP PRIVIP VIP HOSTNAME
RAC
RAC
配置系統
包括安裝和創建共享存儲步驟省略只要相應的開發包要裝齊全句OK相信大家既然能玩RAC這些肯定不在話下接下來是系統相關的操作
() 增加ORACLE用戶及其組
命令
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/useradd m g oinstall G dba oracle
id oracle
這裡需要注意的用戶 ID 和組 ID 在所有集群主機上必須相同
設置 oracle 帳戶的口令
# passwd oracle
Changing password for user oracle
New password:
Retype new password:
passwd:all authentication tokens updated successfully
()創建掛載點
以 root 用戶身份執行以下命令
mkdir p /u/app/oracle
chown R oracle:oinstall /u/app/oracle
chmod R /u/app/oracle
()配置內核參數
以 root 用戶身份登錄並在每個主機上配置 Linux 內核參數
cat >> /etc/nf >>EOF
kernelshmall =
kernelshmmax =
kernelshmmni =
kernelsem =
fsfilemax =
netipvip_local_port_range =
rermem_default=
rewmem_default=
rermem_max=
rewmem_max=
EOF
/sbin/sysctl p
內核參數具體數值請根據系統環境自行設置本例為測試環境
()配置LIMIT
Oracle 建議對每個 Linux 帳戶可以使用的進程數量和打開文件的數量設置限制要進行這些更改以 root 用戶身份剪切和粘貼下列命令
cat >> /etc/security/nf >>EOF
oracle soft nproc
oracle hard nproc
oracle soft nofile
oracle hard nofile
EOF
()配置 Hangcheck 計時器所有 RHEL 版本
modprobe hangchecktimer hangcheck_tick= hangcheck_margin=
cat >> /etc/rcd/rclocal >>EOF
modprobe hangchecktimer hangcheck_tick= hangcheck_margin=
EOF
()配置 /etc/hosts
有些 Linux 發行版本將主機名與回送地址 () 相關聯 如果出現這種情況則從回送地址中刪除主機名
用於此指南的 /etc/hosts 文件
localhostlocaldomain localhost
racpriv
racpriv
rac
rac
racvip
racvip
此處需要注意的問題是回環地址中不要出現主機名稱再一個是本機的公網IP必須和VIP在一個網段(也有可能是局域網)在設置IP時同網段的IP網關一定要是同一個
以上六步操作需要在所有節點上操作
()為用戶等效性配置 SSH
在每個主機上以 oracle 用戶身份登錄
$ mkdir ~/ssh
$ chmod ~/ssh
$ /usr/bin/sshkeygen t rsa
這些操作會在/home/oracle/ssh/生成id_dsapub文件我們把id_dsapub復制到一個名稱為authorized_keys(這個文件需要自己先創建)
以下l兩步操作只在RAC上
ssh rac cat /home/oracle/ssh/id_dsapub >> /home/oracle/ssh/authorized_keys
ssh rac cat /home/oracle/ssh/id_rsapub >> /home/oracle//ssh/authorized_keys
把生成的authorized_keys拷貝到RAC的/home/oracle/ssh/下
()測試連通性
如果一切均設置正確則您現在就可以使用 ssh 在其他集群主機上不必輸入口令而登錄執行程序和復制文件了 通過在遠程集群主機上運行諸如 date 等簡單命令來驗證用戶等效性
ssh rac date
ssh rac date
ssh racpriv date
ssh racpriv date
以上SSH命令需要在兩個節點上依次執行
測試每個方向上所有服務器的連通性是非常重要的 這樣會確保當 OUI 在 CRS 和數據庫軟件安裝期間試圖復制文件時不會出現類似以下的消息 該消息只有在遠程節點上第一次執行操作時才會出現因此通過測試連通性您不僅確保了遠程操作的正常運行還完成了初始的安全密鑰交換
()准備共享磁盤(原始設備)在此我們為兩個共享磁盤SDBSDC
在集群文件系統和 ASM 可用之前原始分區是為 Oracle RAC 配置共享磁盤存儲的唯一選擇 由於這種技術經歷長時間的考驗因此它們構成了一個構建 RAC 集群的非常堅實的平台
但是原始分區有很多缺點 主要是它們必須接受每個磁盤可使用 個分區的限制Linux 強制的 個原始設備的限制以及額外的管理任務和所需計劃 對於單實例環境而言邏輯卷管理器 (LVM) 可以減少管理工作並在存儲布局方面提供更多靈活性 不幸的是LVM 不能識別集群因此在 RAC 環境中不支持它的使用
在使用原始分區時通常最好選擇一組標准的分區大小即某個基本大小的倍數 這就在存儲布局方面提供了更大的靈活性並且在需要重新調整 I/O 時便於將分區重新配給其他磁盤我為本示例選擇了標准的分區大小 MBMBMB 和 MB
為進一步簡化管理每個共享磁盤將擁有相同的分區布局其中包含某種標准化的分區大小 在單個磁盤上能夠創建的可用分區的最大數量是 因此要謹慎地計劃分區布局 下表顯示了本指南中用於原始分區示例的分區布局
分區 類型 大小
SDB的分區的規劃
主分區
主分區
主分區
擴展分區
邏輯型
邏輯型
邏輯型
邏輯型
邏輯型
邏輯型
邏輯型
邏輯型
邏輯型
邏輯型
邏輯型 任意
邏輯型 任意
SDC分區的劃分
主分區
主分區
主分區
Syncing disks
以上分區操作只需在一個節點上進行即可
在其他主機上運行 partprobe 使內核與所做的更改同步
# partprobe
下表列出了最小的 RAC 數據庫所需的每個分區 最小分區大小已經映射到為本示例所選擇的標准分區大小 在本示例中使用了兩個共享磁盤 (/dev/sdb and /dev/sdc) (請注意SLES 為原始設備使用了一種不同的命名標准
目的 最小大小 (MB) 標准化大小 (MB) 磁盤設備 原始設備
Oracle CRS Voting /dev/sdb /dev/raw/raw
SPFILE /dev/sdb /dev/raw/raw
Oracle Cluster Registry /dev/sdb /dev/raw/raw
EXAMPLE 表空間 /dev/sdb /dev/raw/raw
USERS 表空間 /dev/sdb /dev/raw/raw
控制文件 /dev/sdb /dev/raw/raw
重做日志 _ /dev/sdb /dev/raw/raw
重做日志 _ /dev/sdb /dev/raw/raw
UNDOTBS 表空間 /dev/sdb /dev/raw/raw
SYSTEM 表空間 /dev/sdb /dev/raw/raw
TEMP 表空間 /dev/sdb /dev/raw/raw
SYSAUX 表空間 /dev/sdb /dev/raw/raw
UNDOTBS 表空間 /dev/sdb /dev/raw/raw
重做日志 _ /dev/sdb /dev/raw/raw
口令文件 /dev/sdc /dev/raw/raw
控制文件 /dev/sdc /dev/raw/raw
重做日志 _ /dev/sdc /dev/raw/raw
以下命令需要在兩個節點上操作
將以下各行添加到每個集群節點上的 /etc/sysconfig/rawdevices
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdb
/dev/raw/raw /dev/sdc
/dev/raw/raw /dev/sdc
/dev/raw/raw /dev/sdc
為每個節點上的 CRS 原始設備設置所有權和權限 這些文件的所有權和權限必須按照所示內容進行准確地設置(安裝指南和版本說明都是不正確的) 如果不這樣做則導致 CRS 安裝失敗 如果需要在 CRS 安裝失敗後進行清理請參見 MetaLink 說明
chown root:oinstall /dev/raw/raw[]
chmod /dev/raw/raw[]
為每個節點上的數據庫原始設備設置所有權和權限
chown oracle:oinstall /dev/raw/raw[]
chown oracle:oinstall /dev/raw/raw[]
chmod /dev/raw/raw[]
chmod /dev/raw/raw[]
(注意 RHEL 對原始設備的實施方法與以前的版本不同 每次啟動原始設備服務時都會重新創建 /dev/raw/raw* 設備文件刪除任何現有的非默認所有權或權限 當原始設備與 Oracle 搭配使用時有幾種方法可以解決這個問題 最簡單的方法是將 oracle 帳戶添加到 disk 組(例如 usermod –G dbadisk oracle) 或者您可以創建一個啟動腳本在系統啟動時更改原始設備的所有權和權限)
重新啟動原始設備服務
RHEL/
/sbin/service rawdevices restart
下表顯示了每個原始設備以及我們要為其關聯的文件名 (實際上我希望將 spfile 和口令文件與 $ORACLE_HOME/dbs 中的位置相關聯但是由於在安裝的這個階段該目錄尚不存在因此我暫時選擇了 /u/oradata/dbname 中的位置 在安裝完成後如果您願意可以將這些原始設備的符號鏈接重新定位到 $ORACLE_HOME/dbs 目錄)
目的 原始設備 文件名
oracle CRS voting /dev/raw/raw /u/oracrs/votecrs
SPFILE /dev/raw/raw u/oradata/gemni/spfilegemniora
Oracle Cluster Registry /dev/raw/raw /u/oracrs/ocrcrs
EXAMPLE 表空間 /dev/raw/raw /u/oradata/gemni/example_dbf
USERS 表空間 /dev/raw/raw /u/oradata/gemni/users_dbf
控制文件 /dev/raw/raw /u/oradata/gemni/controlctl
重做日志 _ /dev/raw/raw /u/oradata/gemni/redo_log
重做日志 _ /dev/raw/raw /u/oradata/gemni/redo_log
UNDOTBS 表空間 /dev/raw/raw /u/oradata/gemni/undo_dbf
SYSTEM 表空間 /dev/raw/raw /u/oradata/gemni/system_dbf
TEMP 表空間 /dev/raw/raw /u/oradata/gemni/temp_dbf
SYSAUX 表空間 /dev/raw/raw /u/oradata/gemni/sysaux_dbf
UNDOTBS 表空間 /dev/raw/raw /u/oradata/gemni/undo_dbf
重做日志 _ /dev/raw/raw /u/oradata/gemni/redo_log
口令文件 /dev/raw/raw /u/oradata/gemni/orapwgemni
控制文件 /dev/raw/raw /u/oradata/gemni/controlctl
重做日志 _ /dev/raw/raw /u/oradata/gemni/redo_log
以 root 用戶身份創建用於符號鏈接的目錄 在本示例中數據庫名是 gemni
CRS 文件
mkdir p /u/oracrs
chown R oracle:oinstall /u/oracrs
chmod R /u/oracrs
數據庫文件
mkdir p /u/oradata/gemni /u/oradata/gemni
chown R oracle:oinstall /u[]/oradata
chmod R /u[]/oradata
現在以oracle用戶登陸只需創建目錄和鏈接即可
ln s /dev/raw/raw /u/oracrs/votecrs
ln s /dev/raw/raw /u/oradata/gemni/spfilegemniora
ln s /dev/raw/raw /u/oracrs/ocrcrs
ln s /dev/raw/raw /u/oradata/gemni/example_dbf
ln s /dev/raw/raw /u/oradata/gemni/users_dbf
ln s /dev/raw/raw /u/oradata/gemni/controlctl
ln s /dev/raw/raw /u/oradata/gemni/redo_log
ln s /dev/raw/raw /u/oradata/gemni/redo_log
ln s /dev/raw/raw /u/oradata/gemni/undo_dbf
ln s /dev/raw/raw /u/oradata/gemni/system_dbf
ln s /dev/raw/raw /u/oradata/gemni/temp_dbf
ln s /dev/raw/raw /u/oradata/gemni/sysaux_dbf
ln s /dev/raw/raw /u/oradata/gemni/undo_dbf
ln s /dev/raw/raw /u/oradata/gemni/redo_log
ln s /dev/raw/raw /u/oradata/gemni/orapwgemni
ln s /dev/raw/raw /u/oradata/gemni/controlctl
ln s /dev/raw/raw /u/oradata/gemni/redo_log
最後我們需要為數據庫配置助手 (DBCA) 創建原始設備映射文件 此文件將您已創建的原始設備與 DBCA 將要用於創建數據庫的名稱相關聯 剪切和粘貼以下各行為本示例創建映射文件
cat > $HOME/nf << EOF
system=/u/oradata/gemni/system_dbf
sysaux=/u/oradata/gemni/sysaux_dbf
example=/u/oradata/gemni/example_dbf
users=/u/oradata/gemni/users_dbf
temp=/u/oradata/gemni/temp_dbf
undotbs=/u/oradata/gemni/undo_dbf
undotbs=/u/oradata/gemni/undo_dbf
redo_=/u/oradata/gemni/redo_log
redo_=/u/oradata/gemni/redo_log
redo_=/u/oradata/gemni/redo_log
redo_=/u/oradata/gemni/redo_log
control=/u/oradata/gemni/controlctl
control=/u/oradata/gemni/controlctl
spfile=/u/oradata/gemni/spfilegemniora
pwdfile=/u/oradata/gemni/orapwgemni
EOF
然後將 DBCA_RAW_CONFIG 環境變量導出並指向此文件export DBCA_RAW_CONFIG=$HOME/nf
現在您已准備就緒可以安裝 Oracle CRS安裝 Oracle 數據庫軟件並創建 Oracle RAC 數據庫了
安裝ORACLE CRS(即CLUSTER軟件)
在此需要注意的有兩點一兩個節點系統時間一定要相同不然會報錯二一定要建立用戶等效性並在次會話執行安裝不然也會報錯三再以ROOT用戶執行腳本時一定要安順序一個節點執行完再一個節點切勿同時執行
以 oracle 用戶身份登錄並建立節點間的用戶等效性
exec /usr/bin/sshagent $SHELL
/usr/bin/sshadd
Enter passphrase for /home/oracle/ssh/id_rsa:
Identity added: /home/oracle/ssh/id_rsa (/home/oracle/ssh/id_rsa)
Identity added: /home/oracle/ssh/id_dsa (/home/oracle/ssh/id_dsa)
設置 ORACLE_BASE 和 ORACLE_HOME 環境變量
export ORACLE_BASE=/u/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product//crs_
RHEL and SLES Only
export LD_ASSUME_KERNEL=
Welcome單擊 Next Specify Inventory Directory and Credentials — 默認值應該就是正確的確保 inventory 目錄位於 ORACLE_BASE 目錄中(例如 /u/app/oracle/oraInventory)並且操作系統組是oinstall在安裝節點 (ds) 上運行 orainstRootsh(確保在 /etc/hosts 中而不僅僅是在 DNS 中配置了您的主機)
Specify File Locations — 確認默認值後繼續 Language Selection — 確認默認值後繼續 Cluster Configuration — 輸入集群名(或接受默認的crs)
Private Interconnect Enforcement — 為每個接口指定接口類型(公共專用或不使用)
Oracle Cluster Registry — 在 clusterSpecify OCR Location 中(例如 /u/oracrs/ocrcrs)為每個節點輸入公共節點名和專用節點名 Voting Disk — 輸入 voting disk 名(例如 /u/oracrs/votecrs)
在集群的其余節點上運行 orainstRootsh
Summary — 在出現提示時單擊 Install從安裝節點開始每次在一個節點上運行 Oracle CRS 主目錄中的 rootsh(例如 /u/app/oracle/product//crs_/rootsh) 不要同時運行這些腳本 等一個腳本結束後再啟動另一個
CRS 安裝結束
從 $ORACLE_BASE/product//crs_/bin 目錄中運行 olsnodes 驗證安裝已成功例如
$ cd $ORACLE_BASE/product//crs_/bin
$ olsnodes
ds
ds
Once CRS 已安裝並運行現在可以安裝 Oracle RAC 軟件的其余部分了
安裝ORALCE軟件創建數據庫
設置 ORACLE_BASE 和 ORACLE_HOME 環境變量
export ORACLE_BASE=/u/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product//db_
僅針對 RHES 和 SLES
export LD_ASSUME_KERNEL=
僅針對 RHEL Oracle g OUI 將檢查操作系統版本以確認是否支持該版本 到 Oracle 數據庫 為止安裝程序尚不支持 RHEL 作為一種變通方法在運行 runInstaller 之前按照以下步驟操作
cp /etc/redhatrelease /etc/redhatreleaseorig
cat > /etc/redhatrelease << EOF
Red Hat Enterprise Linux AS release (Taroon)
EOF
從 db CD 運行 runInstaller
Welcome — 單擊 Next
Specify File Locations — 確認默認值後繼續
Specify Hardware Cluster Installation Mode — 選擇 Cluster Installation 並選擇集群中的其他節點
Select Installation Type — Enterprise Edition Productspecific Prerequisite Checks — 全部選 OKSLES 選 OK 以忽略 openmotif 警告 選擇數據庫配置 — 選擇Do not create a starter database (我們將在一個單獨的步驟中使用數據庫配置助手 (DBCA) 來創建數據庫)
總結在以 root 用戶身份登錄時從安裝節點開始每次在一個主機上運行 Oracle 數據庫主目錄中的 rootsh(例如 /u/app/oracle/product//db_/rootsh) 不要同時運行這些腳本 等一個腳本結束後再啟動另一個
DBCA創建數據庫
$ dbca
Welcome — 選擇Oracle Real Application Clusters database
Operations — 創建數據庫
Node Selection — 單擊 Select All(ds 和 ds)
Database Templates — 通用
Database Identification — 全局數據庫名
Management Options — 利用 Enterprise Manager 配置數據庫使用數據庫控制進行數據庫管理
Database Credentials — 為所有帳戶使用相同的口令輸入口令並再次確認
Storage Options — 原始設備指定原始設備映射文件 (/home/oracle/nf)
Recovery Configuration — 單擊 Next
Database Content — 示例模式
初始化參數 — 內存典型
Database Storage — 單擊 Next
Create Options — 選擇Create Database
Summary — 檢查總結信息並單擊 OK
至此安裝完畢可以從客戶端連接節點測試以下為客戶端的連接RAC節點TNSNAMEORA文件的內容
GEMNI =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))
(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))
(LOAD_BALANCE = yes)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = )
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
)
)
)
From:http://tw.wingwit.com/Article/program/Oracle/201311/18016.html