原文::在這邊!
一.說明
安裝Oracle RAC基本需要設定很多,我也是花滿多時間,搜集網路相關的資
料,並且測試多次,才成功,中間也有遇到一些錯誤,我會將可能遇到的錯誤儘
量標示出來,如果各位大大在測試過程中有遇到什麼問題,可以儘管提出來。
二、安裝前準備工作
1.軟體需求:
(1).Vmware 5.5軟體:安裝RAC二個節點
(2).plainmaker工具:產生一個Shared Disk
(3).Oracle 9軟體:我們在這裡使用9.2.0.4版本
(4).OS版本:RHEL AS 3
2.環境說明:
RAC節點名稱 資料庫名稱 Oracle SID 資料庫安裝位置
資料庫檔案位置
rac1pub/rac2prv orcl orcl1 /opt/oracle
/var/opt/oracle/oradata(跟上面是同一行)
rac2pub/rac2prv orcl orcl2 /opt/oracle
/var/opt/oracle/oradata(跟上面是同一行)
3.產生ShareDisk:
在DOS下:
F:\> plainmaker f:\virtual\rac\sharedisk.pln 4096M
4.安裝二個節點Linux OS虛擬作業系統,建議要有二張網卡,一張為Public,
一張為Private,請先修改主機名稱及IP,範例如下:
節點1:
主機名稱:rac1pub
IP:192.168.1.241(Public)、192.168.0.241(Private)
節點2:
主機名稱:rac2pub
IP:192.168.1.242(Public)、192.168.0.242(Private)
5.修改二個節點的/etc/hosts檔案,範例如下:
127.0.0.1 localhost.localdomain localhost
192.168.1.241 rac1pub
192.168.0.241 rac1prv
192.168.1.242 rac2pub
192.168.0.242 rac2prv
6.增加二台虛擬機器的Shared Disks,將我們剛剛新增的sharedisk.pln加進
來,注意在新增Disk,是選擇“Use an existing virtual
“Advanced”→“SCSI 1:1”→打勾“Independent及Persistent”,記得
二台都要增加,最後先不要啟動,修改二台虛擬機器副檔名為vmx檔案,
增加以下內容:
disk.locking=FALSE
scsi1.sharedBus="virtual"
diskLib.dataCacheMaxSize="0"
diskLib.dataCacheMaxReadAheadSize="0"
diskLib.datacacheMinReadAheadSize="0"
diskLib.dataCachePageSize="4096"
diskLib.maxUnsyncedWrites="0"
P.S. 在啟動二台虛擬機器時,會出現Vmware不支援Cluster,但那不影響後面操
作
7.進行ShareDisk的分割,主要用來安裝Oracle資料檔及一些RAC所需要用到
的檔案,請參考以下內容,並且利用fdisk工具進行分割(記住:只要在一個
節點進行分割):
分割區名稱 大小(MB) 用途
/dev/sdb1 10 存放Cluster Manager Quorum文件
/dev/sdb2 350 存放Undotbs1
/dev/sdb3 350 存放Undotbs2
/dev/sdb5 500 存放system tablespace
/dev/sdb6 10 存放Spfile
/dev/sdb7 300 存放temp tablespace
/dev/sdb8 300 存放indx tablespace
/dev/sdb9 100 存放控制檔1
/dev/sdb10 100 存放控制檔2
/dev/sdb11 100 存放第1個節點的第1組log檔
/dev/sdb12 100 存放第1個節點的第2組log檔
/dev/sdb13 100 存放第2個節點的第1組log檔
/dev/sdb14 100 存放第2個節點的第1組log檔
/dev/sdb15 100 存放Shared Configuration文件
P.S. 分割完成後,在另一個節點請執行“partprobe”後,再執行“fdisk –l”,
查看是否可以看到已經完成的分割區
三、安裝Oracle RAC
1.新增使用者並設定環境變數,請參考以下指令說明《二個節點上都須要做》
Root的身份:
# groupadd –g dba (在這個群組的使用者將有SYSDBA權限)
# gropadd –g oinstall (Oracle檔案的擁有者)
# useradd –c “Oracle software owner” –g oinstall –G dba oracle
# passwd oracle(設定Oracle密碼)
Oracle的身份:(請利用Oracle身份登入)
$ vi ~/.bash_profile (修改內容如下)
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/9.2.0
export ORACLE_SID=orcl1 (節點2請設定為orcl2)
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin
export THREADS_FLAG=native
export LD_ASSUME_KERNEL=2.4.1
請登出然後再登入,讓設定值套用
$ echo $ORACLE_SID
2.產生Oracle安裝目錄《二個節點上都須要做》
$ su – root(使用root身份)
# mkdir –p /opt/oracle/product/9.2.0 (資料庫軟體)
# mkdir –p /var/opt/oracle/oradata/orcl (資料檔位置)
# chown –R oracle.oinstall /opt
# chown –R oracle.dba /var/opt/oracle
# chmod –R 775 /var/opt/oracle
$ mkdir –p $ORACLE_HOME/oracm/log(使用Oracle身份)
$ mkdir –p $ORACLE_HOME/network/log
$ mkdir –p $ORACLE_HOME/network/trace
$ mkdir –p $ORACLE_HOME/rdbms/log
$ mkdir –p $ORACLE_HOME/rdbms/audit
$ mkdir –p $ORACLE_HOME/network/agent/log
$ mkdir –p $ORACLE_HOME/network/agent/reco
3.配置Raw Devices《二個節點上都須要做》
$ su – root
# raw /dev/raw/raw1 /dev/sdb1
# raw /dev/raw/raw2 /dev/sdb2
# raw /dev/raw/raw3 /dev/sdb3
# raw /dev/raw/raw4 /dev/sdb5
# raw /dev/raw/raw5 /dev/sdb6
# raw /dev/raw/raw6 /dev/sdb7
# raw /dev/raw/raw7 /dev/sdb8
# raw /dev/raw/raw8 /dev/sdb9
# raw /dev/raw/raw9 /dev/sdb10
# raw /dev/raw/raw10 /dev/sdb11
# raw /dev/raw/raw11 /dev/sdb12
# raw /dev/raw/raw12 /dev/sdb13
# raw /dev/raw/raw13 /dev/sdb14
# raw /dev/raw/raw14 /dev/sdb15
# raw –aq(檢查是否設定正確)
請將上面的語法附加到 /etc/rc.local這個檔案(raw –aq這個不用加入)
# ./chang_owner(利用root身份執行,檔案內容請參考下面)
for i in `seq 1 14`
do
chmod 660 /dev/raw/raw$i
chown oracle.dba /dev/raw/raw$i
done
$ ./lnoracle(利用Oracle身份執行,檔案內容請參考下面)
ln -s /dev/raw/raw1 /var/opt/oracle/oradata/orcl/CMQuorumFile
ln -s /dev/raw/raw2 /var/opt/oracle/oradata/orcl/undotbs01.dbf
ln -s /dev/raw/raw3 /var/opt/oracle/oradata/orcl/undotbs02.dbf
ln -s /dev/raw/raw4 /var/opt/oracle/oradata/orcl/system01.dbf
ln -s /dev/raw/raw5 /var/opt/oracle/oradata/orcl/spfileorcl.ora
ln -s /dev/raw/raw6 /var/opt/oracle/oradata/orcl/temp01.dbf
ln -s /dev/raw/raw7 /var/opt/oracle/oradata/orcl/indx01.dbf
ln -s /dev/raw/raw8 /var/opt/oracle/oradata/orcl/control01.ctl
ln -s /dev/raw/raw9 /var/opt/oracle/oradata/orcl/control02.ctl
ln -s /dev/raw/raw10 /var/opt/oracle/oradata/orcl/redo01.log
ln -s /dev/raw/raw11 /var/opt/oracle/oradata/orcl/redo02.log
ln -s /dev/raw/raw12 /var/opt/oracle/oradata/orcl/redo01_1.log
ln -s /dev/raw/raw13 /var/opt/oracle/oradata/orcl/redo02_1.log
ln -s /dev/raw/raw14 /var/opt/oracle/oradata/orcl/SharedSrvctlConfigFile
4.安裝hangcheck-timer,使用監視節點之間的狀況,請參考以下指令《二個
節點上都須要做》
$ su – root
# insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
# grep Hangcheck /var/log/messages | tail –1
(查看是否有載入這個Module)
# echo “options hangcheck-timer hangcheck_tick=30
hangcheck_margin=180” >> /etc/modules.conf
# modprobe hangcheck-timer
# grep Hangcheck /var/log/messages | tail -1
5.設定RAC Nodes之間信任《二個節點上都須要做》
# chkconfig rsh on (使用root身份)
# chkconfig rlogin on
# service xinetd reload
# vi /etc/hosts.equiv
+rac1prv oracle
+rac2prv oracle
+rac1pub oracle
+rac2pub oracle
# chmod 600 /etc/hosts.equiv
# chown root.root /etc/hosts.equiv
$ rsh rac2prv ls –l /etc/hosts.equiv
(在節點1上,利用Oracle身份執行,是否可以正常看到)
$ rsh rac1prv ls –l /etc/hosts.equiv
(在節點2上,利用Oracle身份執行,是否可以正常看到)
6.安裝Oracle 9i Cluster Manager
我們先將Oracle安裝檔案放在rac1pub上
$ su – root(切換成root身份執行,必須二個節點都要做)
# unzip p3006854_9204_LINUX.zip(RHEL 3必須安裝這個Patch)
# cd 3006854
# chmod +x rhel3_pre_install.sh
# ./ rhel3_pre_install.sh
$ ./runInstaller(利用Oracle身份執行,只須在一個節點上都須要做)
此部份安裝此先選擇“Oracle Cluster Manager”,並先後輸public及
private節點,在這個我們public為“rac1pub”及“rac2pub”,private
為“rac1prv”及”rac2prv”,Quorum Disk Information
為“/var/opt/oracle/oradata/orcl/CMQuorumFile”
7.組態Oracle 9i Cluster Manager《二個節點上都須要做》
$ su – root
# . /home/oracle/.bash_profile
# ORACLE_HOME/oracm/bin/ocmstart.sh
# ps –ef | grep oracm(檢查是否有oracm process出現)
8.安裝Oracle 9i 資料庫軟體
$ ./ runInstaller(利用Oracle身份執行,只須在一個節點上都須要做)
在安裝的初期,記得選擇二個節點,並且選擇只安裝“Software only”,
Shared Configuration File Name請輸
入”/var/opt/oracle/oradata/orcl/SharedSrvctlConfigFile
P.S. 記得要有足夠的硬碟容量
9.啟動Oracle Global Services
$ srvconfig –init (利用Oracle身份執行,在節點1執行即可)
$ gsdctl start (利用Oracle身份執行,二個節點都要執行)
$
10.安裝Oracle資料庫
$ dbca –datafileDestination /var/opt/oracle/oradata
(利用Oracle身份執行,只須在一個節點上都須要做)
選擇“Oracle Cluster Database”,“Create Database”,“二個節點都
要選擇”,“New Database”,資料庫名稱及SID為“orcl”,將所有
Database Feature打勾都取消,在Database Storage部份請注意,只保
留“二個控制檔”,Tablespaces保
留“SYSTEM”、“TEMP”、”UNDOTBS1”、”UNDOTBS2”即可,將
redo log 3檔案名稱改為“redo01_1.log,redo log 4檔案名稱改
為”redo02_1.log,其它保持預設值即可
安裝在3%會出現錯誤,出現原因為無法解析到網路名
稱“LISTENERS_ORCL”,所以請先離開,並執行以下指令:
$ netca
選擇“Cluster Configuration”,會出現二個節點,選擇“Listener
configuration”,在名稱部份輸入“LISTENERS_ORCL”,其它保持預設值
$ dbca –datafileDestination /var/opt/oracle/oradata
(利用Oracle身份執行,只須在一個節點上都須要做)
其它請依照上面的設定值輸入,這次就不會再出現任何錯誤
P.S. 我大部份發生問題都是在這個,所以要特別小心,尤其是檔案名稱要與
我前面設定連結名稱一樣,否則會出現
四、進行驗證及Failover
驗證:
$ srvctl status database –d orcl
(如果出現二個Instance都在run,那代表安裝成功)
$ lsnrctl status
(會看到二個Instance:orcl1及orcl2)
Failover:
請在一台有安裝Oracle Client軟體上,修改tnsnames.ora設定檔,加入以下
內容:
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1pub)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2pub)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
(failover_mode=(type=select)(method=basic))
)
(LOAD_BALANCE=ON)
(FAILOVER=ON)
)
sql> select instance_name from v$instance(利用sql plus工具)
(得知目前連到那一台Instance上,假設為orcl2的話,故意將orcl2的Instance
關閉,並且再執行一次,您會發現已變更為orcl1,證實已經自動進行
Failover)
沒有留言:
張貼留言