我的風格大家也熟悉了,我也不多廢話,也不願意寫什麼手冊,我認為搞稍微復雜一點技術的工程技術人員的最基本的能力就是去做調研和信息搜集,什麼 事情光靠別人很詳細的喂給你,你是永遠無法成為高手的,過程本身很麻煩,有時候甚至很讓人痛苦和氣惱,但是這才是真正能夠把你推動到一個"高手"的位置的 真正動力. 動手越少,水平越糟。
下面是我前幾天做的一個簡明步驟,不想寫復雜的.我覺得已經足夠幫有動手能力的同學過關了.
********************************************
Oracle 10gR2 RAC + RHEL AS4U2 +VMWare GSX 3.2.0
Deployment brifing guide 0.9
Author: nntp 20060119
轉載不得修改,請注明作者時間和出處
********************************************
1. 環境
自用的測試工作站一台,如果你的配置環境和我差很遠,你就不要玩樂,你會很痛苦的.
------------硬件環境--------------------------------------------------------
CPU: AMD Althon64 3200+ x1
Mem: 2G DDR400
Storage: 1x10GB ATA for Host OS, 2x80G SATA for application
------------Host 的環境----------------------------------------------------------
SuSE Enterprise Linux Server 9 SP3 with latest errata Kernel from Novell YOU
(AMD64/EM64T version)
10GB上安裝的是我的上面的這個OS,用來做Host OS, 並且已經調優過. (不會這種環境下Linux調優的同學,你做出來的性能會和我有不少差距)
2個80GB硬盤,我用linux MD 做軟RAID, RAID level 是0, 並且作了調優(不會這種環境下Linux陣列配置和優化的同學,你做出來的性能會和我有不少差距)
VMWare gsx3.2.0 安裝在 10GB硬盤上,也作了一些小的優化工作(你在VTN上查得到怎麼做優化).
80GB做RAID0就變成一個160GB的LUN. 我劃樂40GB出來, mount 到 /vmegg上
我用的這個文件系統是ReiserFS, 並作了文件系統級的性能優化.
vmegg的結構如下
/vmegg
....../rac
........./rhel4
............/n1
............/n2
............/share
各位同學自己建好上面這些目錄.
-------------------安裝的大概步驟------------------------
步驟一: 安裝前准備及Guest OS安裝配置
步驟二: 安裝Oracle 10gR2 clusterware
步驟三: 安裝Oracle 10gR2 database
步驟四: 配置netca
步驟五: 配置dbca創建數據庫
步驟六: 校驗RAC
------------------------------------------------------------
============ 步驟一 安裝前准備及Guest OS安裝配置=======
Host OS 准備
1. 從Oracle OTN下載 Oracle 10gR2 for x86 Linux,下2個zip, 一個是clusterware zip,一個是database zip, comp CD你可以下,我是懶的弄
2. 准備的RHEL AS4U2(x86), 你也可以用CentOS 4.2(x86)
3. 搞清楚你的Linux的kernel version
4. 從Oracle OTN下載 ocfs2 , ocfs tools, ocfs console, ASMLib, ASMLib support & utility,記住這些都是針對你的kernel的,不要下錯
5. VMWare gsx 3.2.0 for Linux
6. 我的工作站是沒有顯示器的,我的工作都是在筆記本上作的, 大家都知道Oracle的安裝是需要X的,所以你可以VNC過去,也可以在本地用Xserver.
我用的是ReflectionX,因為還可用來連其他的Unix(HP-UX, AIX等). 這個完全是個人喜好,你搞得定什麼用什麼.
7. 在筆記本上配置好RelfectionX,做好連接host上的vmware console
Guest OS安裝
1. 泡杯茶,會耗不少時間, 我一邊安裝一邊看DVD的,當中會有很多等待時間. 雖然我後來用了幾個自動化的方式 .
2. 在vmware console 創建你的 vmware guest OS, 取名 node1, node2, 選擇 custome create-> Redhat Enterprise Linux ,其它都是默認. 內存選擇1G(>800MB你就看 不到warning樂), 硬盤選擇 LSI bus controller, 大小選擇10GB, 建立方式選擇 pre-allocated ,也就 是馬上就創建這個vmdk, 我不喜歡split to 2GB,就把默認的打勾給去掉了.因為我的Host OS以及mount filesystem 已經做過優化,我喜歡一個獨立的大文件,你們按照自立的路子來做,不要盲目跟我.
3. 創建好後vmware guest OS之後, 給每一個guest 加上一塊NIC
4. 關掉vmware console, 這個時候你的兩個vmware guest OS都創建好了,分別在n1 n2目錄下面,而且每個都加了1個NIC,硬盤都是LSI, 並且大小10GB,而且都預創建好了,並且沒有分割成2GB一塊
6. 看到很多cluster in vmware的介紹在創建share disk的時候,都是什麼用一個vmware guest OS添 加vmdk然後修改vmx,然後把另外一個vmware guest的vmx再添加進去,我很不喜歡這種套路。我很少用 vmware workstation,所以不知道最新版本是否有vdiskmanager.反正我在gsx裡面一直用vdiskmanager.
ssh到你的 Host OS裡面(現在是我的SLES9SP3). 到 /vmware/rac/rhel4/share下面,運行 vmware-vdiskmanager 創建幾個vmdk. 這裡就有點講究了
如果你在看我的這個文章之前,還沒有搞清楚Oracle RAC的基本結構, raw, ASM, ocfs2的概念,你就不要看下去了,浪費時間.
Oracle RAC 本質上是借鑒了很多Alpha TruCluster的技術,但是也有了很多折衷的設計。 它需要存放OCR, CRS voting 信息的共享空間, 還需要空間給ASM for Oracle data, 所以
在存儲的布局上,有兩種方式,要麼是 raw for OCR, CRS voting , ASM for data, 要麼是 ocfs2 for OCR, CRS voting, ASM for data.
至於以前那種 raw for OCR, CRS voting, CRS for data的做法,我是不考慮了,做做學習用途還可以,用在production環境是給自己吃藥.
所以,如果你選擇第一種,你的vmdk這樣建,
vmware-vdiskmanager 創建 pre-allocated並且是lsi contoller的硬盤 200MB 一個 for raw for OCR
vmware-vdiskmanager 創建 pre-allocated並且是lsi contoller的硬盤 200MB 一個 for raw for CRS voting
vmware-vdiskmanager 創建 pre-allocated並且是lsi contoller的硬盤 1GB 四個, 2個 for ASM Oracle data, 2個for flash recovery area, 你不玩Flash recovery也可以省略掉
如果你選擇第二種,你的vmdk這樣建,
vmware-vdiskmanager 創建 pre-allocated並且是lsi contoller的硬盤 1GB一個 for ocfs2 for OCR + CRS voting
vmware-vdiskmanager 創建 pre-allocated並且是lsi contoller的硬盤 1GB 四個for ASM for Oracle data & Flash recovery area (同上)
raw沒有什麼有意思的,我因為還要在這個環境作其他的test,所以就選擇第二種.
這樣做好後,你的 /vmware/rac/rhel4/share目錄就會產生你剛才創建的這些vmdk了.
7. 分別到 n1和n2的目錄,打開node1.vmx 和node2.vmx, 在最後空白處添加這幾段內容
scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1.sharedBus = "virtual"
這段是打開 scsi1上的使用,並且設置成virtual, controller設置成lsilogic
然後依次添加
scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.filename = "/vmegg/rac/rhel4/share/ocfs.vmdk"
scsi1:1.deviceType = "plainDisk"
scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.filename = "/vmegg/rac/rhel4/share/asm1.vmdk"
scsi1:2.deviceType = "plainDisk"
scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.filename = "/vmegg/rac/rhel4/share/asm2.vmdk"
scsi1:3.deviceType = "plainDisk"
scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.filename = "/vmegg/rac/rhel4/share/asm3.vmdk"
scsi1:4.deviceType = "plainDisk"
scsi1:5.present = "TRUE"
scsi1:5.mode = "independent-persistent"
scsi1:5.filename = "/vmegg/rac/rhel4/share/asm4.vmdk"
scsi1:5.deviceType = "plainDisk"
這樣就把剛才創建的那幾個vmdk添加好了
最後添加這個
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
這段是對vmware使用共享硬盤的方式進行定義,我經常看到很多同學在裝RHCS in vmware的時候說這個不正常,那個不正常,你們也可以借鑒一下這個配置
大多數人都知道設置 disk.locking ="false" 卻漏掉dataCache
保存退出之後,重新打開你的vmware-console,你就可以看到2個vmware guest OS的配置中,都有這些硬盤出現了.
其實到現在為止還是一個超級簡單的工作.
在你的vmware-console裡面edit config 點進看看,但是不要修改和save. !切記,而且之前修改vmx的時候,關掉你的vmware-console
8. 然後就安裝你的vmware guest OS, 安裝的時候,包選擇default,然後點custom進去加幾個必需的, Development Tools, Legacy Software Development LibrarIEs, Kernel Development, Editor, System tools
9. 配置你的2個網卡的固定IP,hostname, DNS, gateway, time server (NTP)
node1:
hostname node1pub
eth0 192.168.0.11
eth1 10.1.1.1.1
node2
hostanme node2pub
eth0 192.168.0.22
eth1 10.1.1.1.2
gateway, DNS就按照自己的需要配
NTP我強烈建議你們配一個,不知道NTP的,後面有古怪事情不要問我.
10. 安裝結束後,進入guest OS
修改 /etc/hosts
如下
127.0.0.1 localhost (必須要這樣)
192.168.0.11 node1pub
192.168.0.22 node2pub
10.1.1.1 node1prv
10.1.1.2 node2prv
192.168.0.111 node1vip
192.168.0.222 node2vip
兩個node都要一樣.
修改後要確認這個hosts 都正確 (ping)
11. ssh-keygen for root, dsa/rsa 1024bit 我選擇空的 passphase,你可以加你的passphase,但是後面你要ssh-agent $SHELL建立等效,我怕麻煩就省略掉了.
cd ~/.ssh
cat *rsa.pub >> authorized_keys
cat *dsa.pub >> authorized_keys2
copy .ssh/下面這些到 node2 的 ~/.ssh下面
這些都是基本功,我就不廢話了,不熟悉這個的就不要往下看了.
12. 分別在每個node 上做這些事情
ssh localhost
ssh node1pub
ssh node2pub
ssh node1prv
ssh node2prv
13. 這個步驟和RAC沒有關系,但是也是好習慣之一,檢查你的service 狀況,disable掉所有不需要用的service ,騰出resource給你的RAC, 什麼cups之類亂七八糟的.
14. group add dba oinstall 組在兩個node上, 創建Oracle 用戶, 主組oinstall, 附加組是dba和disk
然後和前面執行root ssh的操作完全一樣,執行一次,這步非常重要,漏掉了肯定過不下去.
15. mkdir /u01/app/Oracle 在2個node上
chown -R Oracle.oinstall
chmod -R 775
這個目錄給Oracle和clusterware系統的
mkdir /u02/oradata/orcl
chown -R Oracle.dba
這個目錄給 ocfs2用來裝OCR, CRS voting 的
16. 修改你的 /etc/sysctl.conf ,添加這些kernel 參數,這些都是老一套了,大家應該都很熟悉了
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
17. 修改 ulimits 如果你想要修改的話
vi /etc/sysconfig/limits.conf
Oracle soft nproc 2047
Oracle hard nproc 16384
Oracle soft nofile 1024
Oracle hard nofile 65536
18. 修改 pam.d login
vi /etc/pam.d/login
最後添加 session required /lib/security/pam_limits.so
19. 增加 hancheck-timer 模塊在2個node上
先看一下有沒有 find /lib/modules -name "hangcheck-timer.ko"
然後加上去 echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modprobe.conf
然後把這個模塊調起來 modprobe hangcheck-timer
然後檢查是否工作正常了 grep Hangcheck /var/log/messages | tail -2
看到類似這個的信息就表明工作正常了 Jan 18 01:08:19 n1pub kernel: Hangcheck: starting hangcheck timer 0.5.0 (tick is 30 seconds, margin is 180 seconds).
20. 安裝ocfs2 , ocfs2的console的rpm
21. 在每個node 上這樣操作
進入X, 然後運行 ocfs2console, 把你的2個node都添加進去
然後編輯 /etc/init.d/o2cb, 刪除掉 靠近配置開頭的那些帶 #的配置行
然後 /etc/init.d/o2cb offline ocfs2
/etc/init.d/o2cb unload ocfs2
/etc/init.d/o2cb configure ocfs2 回答y 就可以了
22. 在一個 node上 mkfs.ocfs2 -b 4k -C 32k -L oradatafiles /dev/sdb1 (就是前面創建的第一個vmdk)
23. 在每個node上
mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl
修改你的 /etc/fstab , 添加 類似這樣的行
/dev/sdb1 /u02/oradata/orcl ocfs2 _netdev,datavolume 0 0
到這裡,我們的ocfs2 for OCR, CRS voting 就OK了
24. 修改 /etc/sysconfig/o2cb
把threshhold 的 值設置成 601
25. 在每個node上
安裝你的 ASMLibs, tools, support 三個rpm文件
然後運行 /etc/init.d/Oracleasm configure
回答 Oracle , dba, y, y 就可以了
26. 創建ASM
在一個node上:
/etc/init.d/Oracleasm createdisk VOL1 /dev/sdc1
/etc/init.d/Oracleasm createdisk VOL2 /dev/sdd1
/etc/init.d/Oracleasm createdisk VOL3 /dev/sde1
/etc/init.d/Oracleasm createdisk VOL4 /dev/sdf1
記住,ASM在linux下面處理的對象是 partition,不是disk, 所以你那些vmdk要Linux 下面partition好才能用,fdisk 就用type 83就可以了
創建好後, 在這個node 上運行 /etc/init.d/Oracleasm listdisks 查看
27, 在另外一個node 上
/etc/init.d/Oracleasm scandisks
/etc/init.d/Oracleasm listdisks 查看
28. 在每個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=/u01/app/Oracle
export ORACLE_HOME=$Oracle_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=$Oracle_BASE/product/crs
export Oracle_SID=orcl1
export PATH=.:${PATH}:$HOME/bin:$Oracle_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/Oracle/bin
export Oracle_TERM=xterm
export TNS_ADMIN=$Oracle_HOME/network/admin
export ORA_NLS10=$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=orcl2 其他都一樣
=============步驟二: 安裝Oracle 10gR2 clusterware========
1. unset 一些環境變量
$ unset ORA_CRS_HOME
$ unset Oracle_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN
檢查你的變量
$ env | grep ORA
Oracle_SID=orcl2
ORACLE_BASE=/u01/app/Oracle
Oracle_TERM=xterm
2. 用Oracle 用戶login , 然後運行你的unzip 之後的那個clusterware目錄下的runInsaller 進入圖形安裝
3. 確認你的安裝目錄是/u01/app/Oracle/product/crs
4. 修改 你的clustername 從crs到一個隨便你想要的名字
然後增加
node1pub node1prv node1vip
node2pub node2prv node2vip
5. 然後指定 eth0 的類型時public
6. 然後制定你的OCR 和mirror
/u02/oradata/orcl/OCRFile
/u02/oradata/orcl/OCRFile_mirror
7. 然後指定你的voting
/u02/oradata/orcl/VotingFile
/u02/oradata/orcl/VotingFile_mirror1
/u02/oradata/orcl/VotingFile_mirror2
8. 然後就開始安裝了,當眾會讓你用完全的root身份在每個節點上運行orainstRoot.sh,你就一個節點一個節點運行,不要搶時間,一個個來
9. 然後要求你在每個節點上用完全的root權限執行 root.sh,你也一樣,一個個來,一定要等一個做好了,然後做另外一個
10. 做第二個時候,如果告訴你你的eth0不是public,你就在第二個節點,用Oracle用戶在 X裡面運行vipca, 然後配置好你的vip 信息(虛擬IP的信息,很容易配的)
11. clusterware 就安裝好了.
確認一下.
$ /u01/app/Oracle/product/crs/bin/olsnodes -n
node1pub 1
node2pub 2
或
$ ls -l /etc/init.d/init.*
-r-xr-xr-x 1 root root 1951 Oct 4 14:21 /etc/init.d/init.crs*
-r-xr-xr-x 1 root root 4714 Oct 4 14:21 /etc/init.d/init.crsd*
-r-xr-xr-x 1 root root 35394 Oct 4 14:21 /etc/init.d/init.CSSd*
-r-xr-xr-x 1 root root 3190 Oct 4 14:21 /etc/init.d/init.evmd*
===============步驟三: 安裝Oracle 10gR2 database=======
1.1. unset 一些環境變量
$ unset ORA_CRS_HOME
$ unset Oracle_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN
檢查你的變量
$ env | grep ORA
Oracle_SID=orcl2
ORACLE_BASE=/u01/app/Oracle
Oracle_TERM=xterm
2. 用Oracle用戶,運行你unzip之後的那個database目錄下的runInstaller
3. ORACLE安裝目錄指定到 /u01/app/Oracle/product/10.2.0/db_1
4. 把2個node選擇上
5. 選擇 Install database Software only
6. 會要求你用完全的root權限運行 root.sh ,分別在2個node上一一運行,不要搶時間
7. 安裝完畢
==================步驟四: 配置netca=================
1. Oracle 用戶在一個node上運行 netca
2. 選擇所有node
3. 選擇 Listener configuration
4.添加一個LISTEN, 1521 port
5. 回到開始界面,選擇Naming Methods configuration
6. 把Local Naming和Easy Naming 添加進去.然後結束配置
7. 確認一下
$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
LISTENER_NODE1PUB
==============步驟五: 配置dbca創建數據庫=============
1. 用Oracle用戶運行 dbca
2. 選擇custom database
3. 輸入數據庫的全局名,比如orcl
4. 給你的系統的不同角色建立密碼,我都選擇same as ....
5. 選擇用ASM管理數據庫
6. 輸入你前面設定的管理員密碼,並把SPFILE 設定成/u02/oradata/orcl/dbs/spfile+ASM.ora
7.進入ASM配置界面, create NEW, 名字叫做DATA
然後下面你會看到你前面創建的4個ASM VOL1-4, 你選擇 1 和2, "Redundancy" 選擇 Normal.
這樣 DATA diskgroup就創建好了
8. 回到ASM界面後. 仍舊選擇create new, 然後名字叫做Flash_RECOVERY_AREA, 選擇第3和4兩個卷,然後"Redundancy" 選擇External
9. 然後OK結束ASM配置
10.Database File Locations 選擇DATA
11. Recovery Configuration 選擇剛才創建的 Flash_RECOVERY_AREA diskgroup
12. 接下來默認的就可以了
13. Database Services 這裡,你選擇Add你一個新的service, 隨便叫名字,比如ractest
然後選擇 TAF Policy,是Basic
14. 開始創建數據庫
===================步驟六: 校驗RAC===============
1.用Oracle用戶login, 運行
$ srvctl status database -d orcl
Instance orcl1 is running on node node1pub
Instance orcl2 is running on node node2pub
2.
$ srvctl status service -d orcl -s ractest
Service orcltest is running on instance(s) orcl2, orcl1
3.
$ srvctl status nodeaPPS -n node1pub
VIP is running on node: node1pub
GSD is running on node: node1pub
Listener is running on node: node1pub
ONS daemon is running on node: node1pub
4.
$ srvctl status asm -n node1pub
ASM instance +ASM1 is running on node node1pub.
5.
$ srvctl config nodeaPPS -n node1pub -a -g -s -l
VIP exists.: /node1vip/192.168.1.111/255.255.255.0/eth0:eth1
GSD exists.
ONS daemon exists.
Listener exists.
6. 運行 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
-------- -------- ---------- --- ------- ------------ --------- -------
1 1 orcl1 YES OPEN ACTIVE NORMAL node1pub
2 2 orcl2 YES OPEN ACTIVE NORMAL node2pub
7.其他的測試,測試方法n多,你用sqlplus, asmcmd, 或者通過Web進 enterprise manager都可以.
隨便你了.