我的風格大家也熟悉了我也不多廢話也不願意寫什麼手冊我認為搞稍微復雜一點技術的工程技術人員的最基本的能力就是去做調研和信息搜集什麼 事情光靠別人很詳細的喂給你你是永遠無法成為高手的過程本身很麻煩有時候甚至很讓人痛苦和氣惱但是這才是真正能夠把你推動到一個高手的位置的 真正動力 動手越少水平越糟
下面是我前幾天做的一個簡明步驟不想寫復雜的我覺得已經足夠幫有動手能力的同學過關了
********************************************
Oracle gR RAC + RHEL ASU +VMWare GSX
Deployment brifing guide
Author: nntp
轉載不得修改請注明作者時間和出處
********************************************
環境
自用的測試工作站一台如果你的配置環境和我差很遠你就不要玩樂你會很痛苦的
硬件環境
CPU: AMD Althon + x
Mem: G DDR
Storage: xGB ATA for Host OS xG SATA for application
Host 的環境
SuSE Enterprise Linux Server SP with latest errata Kernel from Novell YOU
(AMD/EMT version)
GB上安裝的是我的上面的這個OS用來做Host OS 並且已經調優過 (不會這種環境下linux調優的同學你做出來的性能會和我有不少差距)
個GB硬盤我用linux MD 做軟RAID RAID level 是 並且作了調優(不會這種環境下linux陣列配置和優化的同學你做出來的性能會和我有不少差距)
VMWare gsx 安裝在 GB硬盤上也作了一些小的優化工作(你在VTN上查得到怎麼做優化)
GB做RAID就變成一個GB的LUN 我劃樂GB出來 mount 到 /vmegg上
我用的這個文件系統是ReiserFS 並作了文件系統級的性能優化
vmegg的結構如下
/vmegg
/rac
/rhel
/n
/n
/share
各位同學自己建好上面這些目錄
安裝的大概步驟
步驟一: 安裝前准備及Guest OS安裝配置
步驟二: 安裝Oracle gR clusterware
步驟三: 安裝Oracle gR database
步驟四: 配置netca
步驟五: 配置dbca創建數據庫
步驟六: 校驗RAC
============ 步驟一 安裝前准備及Guest OS安裝配置=======
Host OS 准備
從Oracle OTN下載 oracle gR for x linux下個zip 一個是clusterware zip一個是database zip comp CD你可以下我是懶的弄
准備的RHEL ASU(x) 你也可以用CentOS (x)
搞清楚你的linux的kernel version
從Oracle OTN下載 ocfs ocfs tools ocfs console ASMLib ASMLib support & utility記住這些都是針對你的kernel的不要下錯
VMWare gsx for linux
我的工作站是沒有顯示器的我的工作都是在筆記本上作的 大家都知道Oracle的安裝是需要X的所以你可以VNC過去也可以在本地用Xserver
我用的是ReflectionX因為還可用來連其他的Unix(HPUX AIX等) 這個完全是個人喜好你搞得定什麼用什麼
在筆記本上配置好RelfectionX做好連接host上的vmware console
Guest OS安裝
泡杯茶會耗不少時間 我一邊安裝一邊看DVD的當中會有很多等待時間 雖然我後來用了幾個自動化的方式
在vmware console 創建你的 vmware guest OS 取名 node node 選擇 custome create> Redhat Enterprise Linux 其它都是默認 內存選擇G(>MB你就看 不到warning樂) 硬盤選擇 LSI bus controller 大小選擇GB 建立方式選擇 preallocated 也就 是馬上就創建這個vmdk 我不喜歡split to GB就把默認的打勾給去掉了因為我的Host OS以及mount filesystem 已經做過優化我喜歡一個獨立的大文件你們按照自立的路子來做不要盲目跟我
創建好後vmware guest OS之後 給每一個guest 加上一塊NIC
關掉vmware console 這個時候你的兩個vmware guest OS都創建好了分別在n n目錄下面而且每個都加了個NIC硬盤都是LSI 並且大小GB而且都預創建好了並且沒有分割成GB一塊
看到很多cluster in vmware的介紹在創建share disk的時候都是什麼用一個vmware guest OS添 加vmdk然後修改vmx然後把另外一個vmware guest的vmx再添加進去我很不喜歡這種套路我很少用 vmware workstation所以不知道最新版本是否有vdiskmanager反正我在gsx裡面一直用vdiskmanager
ssh到你的 Host OS裡面(現在是我的SLESSP) 到 /vmware/rac/rhel/share下面運行 vmwarevdiskmanager 創建幾個vmdk 這裡就有點講究了
如果你在看我的這個文章之前還沒有搞清楚ORACLE RAC的基本結構 raw ASM ocfs的概念你就不要看下去了浪費時間
Oracle RAC 本質上是借鑒了很多Alpha TruCluster的技術但是也有了很多折衷的設計 它需要存放OCR CRS voting 信息的共享空間 還需要空間給ASM for oracle data 所以
在存儲的布局上有兩種方式要麼是 raw for OCR CRS voting ASM for data 要麼是 ocfs for OCR CRS voting ASM for data
至於以前那種 raw for OCR CRS voting CRS for data的做法我是不考慮了做做學習用途還可以用在production環境是給自己吃藥
所以如果你選擇第一種你的vmdk這樣建
vmwarevdiskmanager 創建 preallocated並且是lsi contoller的硬盤 MB 一個 for raw for OCR
vmwarevdiskmanager 創建 preallocated並且是lsi contoller的硬盤 MB 一個 for raw for CRS voting
vmwarevdiskmanager 創建 preallocated並且是lsi contoller的硬盤 GB 四個 個 for ASM Oracle data 個for flash recovery area 你不玩flash recovery也可以省略掉
如果你選擇第二種你的vmdk這樣建
vmwarevdiskmanager 創建 preallocated並且是lsi contoller的硬盤 GB一個 for ocfs for OCR + CRS voting
vmwarevdiskmanager 創建 preallocated並且是lsi contoller的硬盤 GB 四個for ASM for Oracle data & flash recovery area (同上)
raw沒有什麼有意思的我因為還要在這個環境作其他的test所以就選擇第二種
這樣做好後你的 /vmware/rac/rhel/share目錄就會產生你剛才創建的這些vmdk了
分別到 n和n的目錄打開nodevmx 和nodevmx 在最後空白處添加這幾段內容
scsipresent = TRUE
scsivirtualDev = lsilogic
scsisharedBus = virtual
這段是打開 scsi上的使用並且設置成virtual controller設置成lsilogic
然後依次添加
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/ocfsvmdk
scsi:deviceType = plainDisk
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/asmvmdk
scsi:deviceType = plainDisk
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/asmvmdk
scsi:deviceType = plainDisk
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/asmvmdk
scsi:deviceType = plainDisk
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/asmvmdk
scsi:deviceType = plainDisk
這樣就把剛才創建的那幾個vmdk添加好了
最後添加這個
disklocking = false
diskLibdataCacheMaxSize =
diskLibdataCacheMaxReadAheadSize =
diskLibDataCacheMinReadAheadSize =
diskLibdataCachePageSize =
diskLibmaxUnsyncedWrites =
這段是對vmware使用共享硬盤的方式進行定義我經常看到很多同學在裝RHCS in vmware的時候說這個不正常那個不正常你們也可以借鑒一下這個配置
大多數人都知道設置 disklocking =false 卻漏掉dataCache
保存退出之後重新打開你的vmwareconsole你就可以看到個vmware guest OS的配置中都有這些硬盤出現了
其實到現在為止還是一個超級簡單的工作
在你的vmwareconsole裡面edit config 點進看看但是不要修改和save !切記而且之前修改vmx的時候關掉你的vmwareconsole
然後就安裝你的vmware guest OS 安裝的時候包選擇default然後點custom進去加幾個必需的 Development Tools Legacy Software Development Libraries Kernel Development Editor System tools
配置你的個網卡的固定IPhostname DNS gateway time server (NTP)
node:
hostname nodepub
eth
eth
node
hostanme nodepub
eth
eth
gateway DNS就按照自己的需要配
NTP我強烈建議你們配一個不知道NTP的後面有古怪事情不要問我
安裝結束後進入guest OS
修改 /etc/hosts
如下
localhost (必須要這樣)
nodepub
nodepub
nodeprv
nodeprv
nodevip
nodevip
兩個node都要一樣
修改後要確認這個hosts 都正確 (ping)
sshkeygen for root dsa/rsa bit 我選擇空的 passphase你可以加你的passphase但是後面你要sshagent $SHELL建立等效我怕麻煩就省略掉了
cd ~/ssh
cat *rsapub >> authorized_keys
cat *dsapub >> authorized_keys
copy ssh/下面這些到 node 的 ~/ssh下面
這些都是基本功我就不廢話了不熟悉這個的就不要往下看了
分別在每個node 上做這些事情
ssh localhost
ssh nodepub
ssh nodepub
ssh nodeprv
ssh nodeprv
這個步驟和RAC沒有關系但是也是好習慣之一檢查你的service 狀況disable掉所有不需要用的service 騰出resource給你的RAC 什麼cups之類亂七八糟的
group add dba oinstall 組在兩個node上 創建oracle 用戶 主組oinstall 附加組是dba和disk
然後和前面執行root ssh的操作完全一樣執行一次這步非常重要漏掉了肯定過不下去
mkdir /u/app/oracle 在個node上
chown R oracleoinstall
chmod R
這個目錄給oracle和clusterware系統的
mkdir /u/oradata/orcl
chown R oracledba
這個目錄給 ocfs用來裝OCR CRS voting 的
修改你的 /etc/nf 添加這些kernel 參數這些都是老一套了大家應該都很熟悉了
rermem_default=
rewmem_default=
rermem_max=
rewmem_max=
kernelshmall =
kernelshmmax =
kernelshmmni =
kernelsem =
fsfilemax =
netipvip_local_port_range =
修改 ulimits 如果你想要修改的話
vi /etc/sysconfig/nf
oracle soft nproc
oracle hard nproc
oracle soft nofile
oracle hard nofile
修改 pamd login
vi /etc/pamd/login
最後添加 session required /lib/security/pam_limitsso
增加 hanchecktimer 模塊在個node上
先看一下有沒有 find /lib/modules name hangchecktimerko
然後加上去 echo options hangchecktimer hangcheck_tick= hangcheck_margin= >> /etc/nf
然後把這個模塊調起來 modprobe hangchecktimer
然後檢查是否工作正常了 grep Hangcheck /var/log/messages | tail
看到類似這個的信息就表明工作正常了 Jan :: npub kernel: Hangcheck: starting hangcheck timer (tick is seconds margin is seconds)
安裝ocfs ocfs的console的rpm
在每個node 上這樣操作
進入X 然後運行 ocfsconsole 把你的個node都添加進去
然後編輯 /etc/initd/ocb 刪除掉 靠近配置開頭的那些帶 #的配置行
然後 /etc/initd/ocb offline ocfs
/etc/initd/ocb unload ocfs
/etc/initd/ocb configure ocfs 回答y 就可以了
在一個 node上 mkfsocfs b k C k L oradatafiles /dev/sdb (就是前面創建的第一個vmdk)
在每個node上
mount t ocfs o datavolume /dev/sdb /u/oradata/orcl
修改你的 /etc/fstab 添加 類似這樣的行
/dev/sdb /u/oradata/orcl ocfs _netdevdatavolume
到這裡我們的ocfs for OCR CRS voting 就OK了
修改 /etc/sysconfig/ocb
把threshhold 的 值設置成
在每個node上
安裝你的 ASMLibs tools support 三個rpm文件
然後運行 /etc/initd/oracleasm configure
回答 oracle dba y y 就可以了
創建ASM
在一個node上:
/etc/initd/oracleasm createdisk VOL /dev/sdc
/etc/initd/oracleasm createdisk VOL /dev/sdd
/etc/initd/oracleasm createdisk VOL /dev/sde
/etc/initd/oracleasm createdisk VOL /dev/sdf
記住ASM在linux下面處理的對象是 partition不是disk 所以你那些vmdk要linux 下面partition好才能用fdisk 就用type 就可以了
創建好後 在這個node 上運行 /etc/initd/oracleasm listdisks 查看
在另外一個node 上
/etc/initd/oracleasm scandisks
/etc/initd/oracleasm listdisks 查看
在每個node上
修改 oracle用戶家目錄下的 bash_profile
修改成大概這個樣子
# bash_profile
# Get the aliases and functions
if [ f ~/bashrc ]; then
~/bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export ORACLE_BASE=/u/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product//db_
export ORA_CRS_HOME=$ORACLE_BASE/product/crs
export ORACLE_SID=orcl
export PATH=:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
第二個節點的 ORACLE_SID=orcl 其他都一樣
=============步驟二: 安裝Oracle gR clusterware========
unset 一些環境變量
$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS
$ unset TNS_ADMIN
檢查你的變量
$ env | grep ORA
ORACLE_SID=orcl
ORACLE_BASE=/u/app/oracle
ORACLE_TERM=xterm
用oracle 用戶login 然後運行你的unzip 之後的那個clusterware目錄下的runInsaller 進入圖形安裝
確認你的安裝目錄是/u/app/oracle/product/crs
修改 你的clustername 從crs到一個隨便你想要的名字
然後增加
nodepub nodeprv nodevip
nodepub nodeprv nodevip
然後指定 eth 的類型時public
然後制定你的OCR 和mirror
/u/oradata/orcl/OCRFile
/u/oradata/orcl/OCRFile_mirror
然後指定你的voting
/u/oradata/orcl/VotingFile
/u/oradata/orcl/VotingFile_mirror
/u/oradata/orcl/VotingFile_mirror
然後就開始安裝了當眾會讓你用完全的root身份在每個節點上運行orainstRootsh你就一個節點一個節點運行不要搶時間一個個來
然後要求你在每個節點上用完全的root權限執行 rootsh你也一樣一個個來一定要等一個做好了然後做另外一個
做第二個時候如果告訴你你的eth不是public你就在第二個節點用oracle用戶在 X裡面運行vipca 然後配置好你的vip 信息(虛擬IP的信息很容易配的)
clusterware 就安裝好了
確認一下
$ /u/app/oracle/product/crs/bin/olsnodes n
nodepub
nodepub
或
$ ls l /etc/initd/init*
rxrxrx root root Oct : /etc/initd/initcrs*
rxrxrx root root Oct : /etc/initd/initcrsd*
rxrxrx root root Oct : /etc/initd/initcssd*
rxrxrx root root Oct : /etc/initd/initevmd*
===============步驟三: 安裝Oracle gR database=======
unset 一些環境變量
$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS
$ unset TNS_ADMIN
檢查你的變量
$ env | grep ORA
ORACLE_SID=orcl
ORACLE_BASE=/u/app/oracle
ORACLE_TERM=xterm
用oracle用戶運行你unzip之後的那個database目錄下的runInstaller
ORACLE安裝目錄指定到 /u/app/oracle/product//db_
把個node選擇上
選擇 Install database Software only
會要求你用完全的root權限運行 rootsh 分別在個node上一一運行不要搶時間
安裝完畢
==================步驟四: 配置netca=================
oracle 用戶在一個node上運行 netca
選擇所有node
選擇 Listener configuration
添加一個LISTEN port
回到開始界面選擇Naming Methods configuration
把Local Naming和Easy Naming 添加進去然後結束配置
確認一下
$ ps ef | grep lsnr | grep v grep | grep v ocfs | awk {print $}
LISTENER_NODEPUB
==============步驟五: 配置dbca創建數據庫=============
用oracle用戶運行 dbca
選擇custom database
輸入數據庫的全局名比如orcl
給你的系統的不同角色建立密碼我都選擇same as
選擇用ASM管理數據庫
輸入你前面設定的管理員密碼並把SPFILE 設定成/u/oradata/orcl/dbs/spfile+ASMora
進入ASM配置界面 create NEW 名字叫做DATA
然後下面你會看到你前面創建的個ASM VOL 你選擇 和 Redundancy 選擇 Normal
這樣 DATA diskgroup就創建好了
回到ASM界面後 仍舊選擇create new 然後名字叫做FLASH_RECOVERY_AREA 選擇第和兩個卷然後Redundancy 選擇External
然後OK結束ASM配置
Database File Locations 選擇DATA
Recovery Configuration 選擇剛才創建的 FLASH_RECOVERY_AREA diskgroup
接下來默認的就可以了
Database Services 這裡你選擇Add你一個新的service 隨便叫名字比如ractest
然後選擇 TAF Policy是Basic
開始創建數據庫
===================步驟六: 校驗RAC===============
用oracle用戶login 運行
$ srvctl status database d orcl
Instance orcl is running on node nodepub
Instance orcl is running on node nodepub
$ srvctl status service d orcl s ractest
Service orcltest is running on instance(s) orcl orcl
$ srvctl status nodeapps n nodepub
VIP is running on node: nodepub
GSD is running on node: nodepub
Listener is running on node: nodepub
ONS daemon is running on node: nodepub
$ srvctl status asm n nodepub
ASM instance +ASM is running on node nodepub
$ srvctl config nodeapps n nodepub a g s l
VIP exists: /nodevip///eth:eth
GSD exists
ONS daemon exists
Listener exists
運行 sqlplus /nolog
SQL> connect /as sysdba
SQL>
SELECT
inst_id
instance_number inst_no
instance_name inst_name
parallel
status
database_status db_status
active_state state
host_name host
FROM gv$instance
ORDER BY inst_id;
INST_ID INST_NO INST_NAME PAR STATUS DB_STATUS STATE HOST
orcl YES OPEN ACTIVE NORMAL nodepub
orcl YES OPEN ACTIVE NORMAL nodepub
其他的測試測試方法n多你用sqlplus asmcmd 或者通過Web進 enterprise manager都可以
隨便你了
From:http://tw.wingwit.com/Article/program/Oracle/201311/18554.html