Oracle RAC,全稱real application clusters,譯爲「實時應用集羣」, 是Oracle新版數據庫中採用的一項新技術,是高可用性的一種,也是Oracle數據庫支持網格計算環境的核心技術。Oracle RAC主要支持Oracle9i、10g、11g版本,能夠支持24 x 7 有效的數據庫應用系統,在低成本服務器上構建高可用性數據庫系統,而且自由部署應用,無需修改代碼。在Oracle RAC環境下,Oracle集成提供了集羣軟件和存儲管理軟件,爲用戶下降了應用成本。當應用規模須要擴充時,用戶能夠按需擴展系統,以保證系統的性能。本文檔主要描述Oracle 11gR2 RAC上中標麒麟安全操做系統5U6版本上的安裝以及配置。html
硬件方面:linux
至少兩臺服務器,服務器至少有兩塊網卡,其中一塊網卡用於對外提供服務,別一塊網卡用於oracle rac節點之間通訊。 c++
一臺存儲,oracle rac須要使用共享磁盤,仲裁磁盤等。 存儲能夠是專業的光纖存儲設備,也能夠是NAS存儲,如iscsi,nfs等。shell
軟件方面:數據庫
中標麒麟安全操做系統光盤,用於在服務器上安裝操做系統,以及安裝好系統後,使用光盤安裝oracle 11gR2 依賴的包。vim
Oracle 11gR2 安裝軟件包:安全
其中linux.x64_11gR2_database_1of2.zip和linux.x64_11gR2_database_2of2.zip是oracle 11gR2數據庫安裝包,linux.x64_11gR2_grid.zip是oracle網格基礎結構,是oracle rac中很是重要的組件。bash
以上軟件包從oracle官網下載服務器
檢測操做系統依賴包:
在兩臺服務器上分別執行
#rpm -q binutils compat-db control-center gcc gcc-c++ glibc glibc-common
gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio openmotif21
查看上述軟件包是否都安裝,若是沒有安裝的,把操做系統安裝光盤掛載到服務器上,安裝缺失的包。
安裝操做系統時,兩臺服務器的主機名分別爲rac1和rac2
操做系統設置
設置操做系統IP地址和修改/etc/hosts文件
這樣,在兩臺主機之間能夠直接經過主機名進行訪問
[root@rac1 ~]# vi /etc/hosts
#Public 對外提供服務的IP
192.168.1.171 rac1 rac1.localdomain
192.168.1.173 rac2 rac2.localdomain
#Private 私有IP地址,用於RAC節點間通信
172.168.1.191 rac1-priv rac1-priv.localdomain
172.168.1.192 rac2-priv rac2-priv.localdomain
#Virtual 虛擬IP地址
192.168.1.172 rac1-vip rac1-vip.localdomain
192.168.1.174 rac2-vip rac2-vip.localdomain
#SCAN
192.168.1.176 rac-cluster rac-cluster-scan
建立oracle用戶和grid用戶
在兩臺服務器上分別執行下列操做
[root@rac1 ~]# groupadd -g 5000 asmadmin
[root@rac1 ~]# groupadd -g 5001 asmdba
[root@rac1 ~]# groupadd -g 5002 asmoper
[root@rac1 ~]# groupadd -g 6000 oinstall
[root@rac1 ~]# groupadd -g 6001 dba
[root@rac1 ~]# groupadd -g 6002 oper
[root@rac1 ~]# useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash grid
#建立grid用戶,這個用戶屬於oinstall組,附加組有asmadmin,asmdba,asmoper
[root@rac1 ~]# useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d /home/oracle -s /bin/bash oracle
#建立oracle用戶,這個用戶屬於oinstall組,附加組有asmadmin,asmdba,asmoper
[root@rac1 ~]# mkdir -p /oracle/app/grid
[root@rac1 ~]# mkdir -p /oracle/app/11.2.0/grid
[root@rac1 ~]# mkdir -p /oracle/app/oracle
[root@rac1 ~]# passwd oracle
[root@rac1 ~]# passwd grid
[root@rac1 ~]# chown -R grid:oinstall /oracle/app/grid
[root@rac1 ~]# chmod -R 775 /oracle/app/grid
[root@rac1 ~]# chown -R grid:oinstall /oracle/app/11.2.0/grid
[root@rac1 ~]# chmod -R 775 /oracle/app/11.2.0/grid
[root@rac1 ~]# chown -R oracle:oinstall /oracle/app/oracle
[root@rac1 ~]# chmod -R 775 /oracle/app/oracle
設置oracle用戶和grid用戶的環境變量
設置oracle用戶環境變量,在兩個節點上執行下列操做,注意兩節點的ORACLE_SID是不一樣的
[oracle@rac1 ~]# vim .bash_profile
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=rac1.localdomain; export ORACLE_HOSTNAME
ORACLE_UNQNAME=RAC; export ORACLE_UNQNAME
ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=RAC1; export ORACLE_SID #注意這裏,在主機rac1上,它的實例名爲RAC1
而在rac2主機,它的實例名RAC2
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export CLASSPATH
設置grid用戶的環境變量,兩個節點都要執行下列操做,但ORACLE_SID是不一樣的
[grid@rac1 ~]# vim .bash_profile
#Grid Settings
CRS_HOME=/oracle/app/11.2.0/grid
ORACLE_BASE=/oracle/app/grid ORACLE_SID=+ASM1 #注意在rac2中,將ORACLE_SID=+ASM2
PATH=$CRS_HOME/bin:$PATH:$Home/bin
export PATH CRS_HOME ORACLE_BASE ORACLE_SID
調整操做系統內核參數
參數的大小,請根據服務器硬件配置,應用程序訪問具體狀況進行調整。如下參數僅作參考,分別在兩臺機器執行。
編輯/etc/sysctl.conf文件
[root@rac1 ~]# vim /etc/sysctl.conf
fs.file-max = 6815744
kernel.msgmni = 2878
kernel.msgmax = 8192
kernel.msgmnb = 65536
kernel.sem = 250 32000 100 142
kernel.shmmni = 4096
物理內存除以pagesize
kernel.shmall = 1073741824
物理內存的一半
kernel.shmmax = 4294967295
kernel.sysrq = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 3145728
net.ipv4.ip_local_port_range = 9000 65500
vm.min_free_kbytes = 51200
編輯/etc/security/limits.conf
[root@rac1 ~]# vi /etc/security/limits.conf
#oracle數據庫用戶使用資源限制
oracle soft nofile 131072
oracle hard nofile 131072
oracle soft nproc 131072
oracle hard nproc 131072
oracle soft core unlimited
oracle hard core unlimited
oracle soft memlock 3500000
oracle hard memlock 3500000
#grid數據庫用戶使用資源限制
grid soft nofile 131072
grid hard nofile 131072
grid soft nproc 131072
grid hard nproc 131072
grid soft core unlimited
grid hard core unlimited
grid soft memlock 3500000
grid hard memlock 3500000
設置ntp服務器,確保兩個節點的時間一致
登陸節點rac1,備份系統原來的ntp.conf配置文件
編輯/etc/ntp.conf配置文件
再登陸節點rac2,
編輯/etc/ntp.conf配置文件
配置存儲
設置一個iscsi或是光纖存儲磁盤,確保這個磁盤能夠被rac1和rac2兩個節點都發現。
在rac1上執行fdisk命令,對存儲磁盤進行分區,注意只分區不進行格式化的操做。
至少劃分三個分區,分區只須要在一臺機器上操做便可
因爲oracle rac 不支持在2.6.32上的內核直接使用ASM,所以,在這裏,將磁盤設置爲裸設備。
編輯/etc/sysconfig/rawdevices,加入以下內容.兩個節點上都作相同的操做
在中標麒麟安全操做系統5U8版本上,沒有raw設備的啓動腳本,所以須要建立一個raw設備的啓動腳本,
[root@host02 ~]# vim /etc/init.d/rawdevices
#!/bin/bash
#
# rawdevices This shell script assignes rawdevices to block devices
#
# chkconfig: 345 56 44
# description: This scripts assignes raw devices to block devices \
# (such as hard drive partitions). This is for the use \
# of applications such as Oracle. You can set up the \
# raw device to block device mapping by editing \
# the file /etc/sysconfig/rawdevices.
# config: /etc/sysconfig/rawdevices
[ -f /bin/raw ] || exit 0
[ -f /etc/sysconfig/rawdevices ] || exit 0
# Exit if the file just has the default comments.
LC_ALL=C
/bin/egrep -q -v "^ *#" /etc/sysconfig/rawdevices 2>/dev/null || exit 0
. /etc/init.d/functions
function assign_raw()
{
LC_ALL=C egrep -v '^ *#' /etc/sysconfig/rawdevices |
while read RAW BLOCK; do
if [ -n "$RAW" -a -n "$BLOCK" ]; then
rawdirname=${RAW%/*}
if [ "$rawdirname" = "/dev" -a -d /dev/raw ]; then
echo $" Please correct your /etc/sysconfig/rawdevices:"
echo $" rawdevices are now located in the directory /dev/raw/ "
echo $" If the command 'raw' still refers to /dev/raw as a file."
echo $" you'll have to upgrade your util-linux package"
exit 0
fi
if [ "$rawdirname" = "/dev/raw" -a -f /dev/raw ]; then
echo $" Please correct your /etc/sysconfig/rawdevices:"
echo $" rawdevices are now located in the directory /dev/raw/ "
echo $" If the command 'raw' still refers to /dev/raw as a file."
echo $" you'll have to upgrade your util-linux package"
exit 0
fi
echo " $RAW --> $BLOCK";
raw $RAW $BLOCK
fi
done
}
# See how we were called.
case "$1" in
start)
# Assign devices
echo $"Assigning devices: "
assign_raw
#添加如下兩行(默認不存在),即默認狀況下生成的裸設備爲root全部,
#因此必須修改屬主,不然oracle用戶沒法使用裸設備
sleep 5
#chown -R oracle:oinstall /dev/raw/
chown -R oracle /dev/raw/
echo $"done"
;;
stop)
# No action to be taken here
;;
status)
ID=`id -u`
if [ $ID -eq 0 ]; then
raw -qa
else
echo $"You need to be root to use this command ! "
fi
;;
restart|reload)
$0 start
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit 0
把rawdevices服務加入系統啓動項,確保每次開機都自動啓動rawdevices服務
#chkconfig rawdevices on
修改raw設備的udev規則
把兩個節點的rawdevices服務啓動,查看兩節點是否都已經識別了raw設備。
設置libcap.so.1的軟連接:
cd /lib64 && ln -s libcap.so.2.16 libpcap.so.1
將oracle 11g grid壓縮包解壓到/tmp目錄,解決完,須要在其安裝文件中的all.jdk中加入中文字體,目錄是爲了解決安裝過程亂碼的問題
桌面上新建一個文件夾,fallback,將/usr/share/fonts/zh_CN/TrueType/下面的
zysong.ttf 複製到 fallback 目錄裏.進入 oracle 的安裝源目錄,
database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/,右擊 all.jar, 用歸檔管理器打開,進入 jdk/jre/lib/fonts/,桌面上的 fallback 文件夾拖到進去,最終目錄爲jdk/jre/lib/fonts/fallback/zysong.ttf
加好中文字體,all.jar包以下
安裝cvuqdisk-1.0.7-1.rpm
在root用戶下,執行xhost + ,從新開啓一個終端,執行su - grid,運行grid的安裝文件,
[grid@host01 grid]$ ./runInstaller
點擊「下一步」
選擇「典型安裝」,點擊「下一步」
填寫SCAN的名稱,添加兩個節點的主機名與虛擬IP地址,配置SSH免密碼登陸,點擊「下一步」,
安裝程序正在驗證兩節點是否準備好,驗證完畢,點擊「下一步」,
集羣註冊表存儲類型,選擇「自動存儲管理」,設置SYSASM用戶口令,點擊「下一步」
設置磁盤組名,添加磁盤,點擊「下一步」,
選中要添加的磁盤,點擊「下一步」
正在檢查系統安裝配置環境,請等待
開始安裝
在第二個節點上執行第一條腳本,兩個節點都執行第二條腳本
把oracle 11gR2 兩個安裝文件解壓到/tmp目錄,在root用戶下打開終端,執行xhost +命令,再su - oracle用戶,進行oracle 11gR2 安裝文檔的解壓目錄,運行./runInstaller
點擊「下一步」
點擊「下一步」
選擇「建立和配置數據庫」,點擊「下一步」
選擇「服務器類」,點擊「下一步」
選擇「Real Application Clusters數據庫安裝」,點擊「下一步」,接下來就不截圖了,點擊下一步繼續安裝。