安裝Oracle RAC數據庫
1、 安裝前的系統配置需求
安裝Oracle Rac數據庫需要的組件可以分爲軟硬件兩部分,下面是一個軟硬件推薦配置:
爲了方便安裝RAC數據庫,在安裝操作系統時,建議選擇如下系統包:
l 桌面環境:xwindows system、GNOME desktop environment。
l 開發工具:development tools、x software development、gnome software development、kde software development。
1、 安裝前的系統配置需求
更詳細的拓撲結構信息,參看下圖:
1、 安裝前的系統配置需求
Oracle Rac數據庫涉及到公用網絡和私有網絡,因此要做網絡劃分和IP地址規劃,下表列出了要安裝的RAC數據庫對應的IP地址、主機名以及網絡連接類型:
兩個節點:兩個實例,對應一個數據庫。
2、設置數據庫安裝資源
安裝RAC數據庫需要的軟件包分爲三個部分,分別是oracle RAC安裝程序包、Oracle ASMLib工具包以及系統補丁包。這裏Oracle的安裝版本爲oracle11g,詳細的軟件包信息如下:
(1)Oracle 11g Release 1 (11.1.0.6.0)軟件包
下載地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/111060-linuxsoft-085130.html
軟件包名稱:
linux_11gR1_database_1013.zip
linux_x86_11gR1_clusterware.zip
軟件包說明:總共需要下載兩個安裝程序,一個是Oracle Rac安裝程序包,另一個是Oracle ClusterWare安裝程序包。
(2)Oracle ASMLib工具包
下載地址:http://www.oracle.com/technetwork/topics/linux/downloads/rhel5-084877.html
軟件包名稱:
oracleasmlib-2.0.4-1.el5.i386.rpm
oracleasm-2.6.18-194.11.1.el5-2.0.5-1.el5.i686.rpm
oracleasm-support-2.1.3-1.el5.i386.rpm
軟件包說明:這三個軟件包是使用ASM存儲管理方式必須的驅動工具包。
(3)系統補丁包
下載地址:http://www.idevelopment.info/data/Oracle/DBA_tips/Oracle11gRAC/Install11gR1RACOnCentOS51/RPMS/redhat-release-5-1.0.el5.centos.1.i386.rpm
軟件包名稱:redhat-release-5-1.0.el5.centos.1.i386.rpm
軟件包說明:由於Centos不在Oracle支持平臺之列,所以安裝檢測時無法通過的,通過安裝這個軟件包,可以使安裝檢測順利通過。
3、配置主機解析文件
爲了使每個主機間可以正常通信,需要在每個節點上修改本地解析文件,即/etc/hosts文件,在兩個節點上添加如下配置信息:
192.168.12.231 node-rac1
192.168.12.232 node-rac2
192.168.12.230 node-vip1
192.168.12.240 node-vip2
10.10.10.1 node-priv1
10.10.10.2 node-priv2
4、檢查所需軟件包
在每個節點上執行相同的操作:
執行下面的命令:
rpm -q make binutils libaio-devel libaio elfutils-libelf-develcompat-libstdc++-33 libgcc gcc gcc-c++glibc sysstat libstdc++ libstdc++-devel unixODBC-devel unixODBC
如果出現某個軟件包沒有安裝,請安裝該軟件包。
5、配置系統內核參數
由於Linux的內核參數信息都存在內存中,可以通過命令直接修改,並且修改後直接生效,但是,當系統重新啓動後,原來設置的參數值就會丟失,而系統每次啓動時都會自動去/etc/sysctl.conf文件中讀取內核參數,因此將內核的參數配置寫入這個文件中,是一個比較好的選擇。
Oracle對Linux系統內核參數有嚴格的要求,如果設置不當,就會導致安裝失敗,編輯/etc/sysctl.conf文件,修改後的參數配置如下所示:
net.ipv4.ip_forward= 0
net.ipv4.conf.default.rp_filter= 1
net.ipv4.conf.default.accept_source_route= 0
kernel.sysrq = 0
kernel.core_uses_pid= 1
net.ipv4.tcp_syncookies= 1
kernel.msgmnb =65536
kernel.msgmax =65536
net.core.rmem_default= 4194304
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 262144
kernel.shmmax =1073741823
kernel.sem = 25032000 100 128
fs.file-max =65536
net.ipv4.ip_local_port_range= 1024 65000
5、配置系統內核參數
下面簡單講述下常用的幾個內核參數的含義:
l kernel.shmmax:表示單個共享內存段的最大值,以字節爲單位,此值一般爲物理內存一半,不過大一點也沒關係,這裏設定的爲1G。
l kernel.shmmni:表示單個共享內存段的最小值,一般爲4KB,即4096bit
l kernel.shmall:表示可用共享內存的總量,單位是頁,在32位系統上一頁等於4k,也就是4096字節。
l fs.file-max:表示文件句柄的最大數量。文件句柄表示在linux系統中可以打開的文件數量。
l net.ipv4.ip_local_port_range:表示端口的範圍,爲指定的內容。
l kernel.sem:用來設置Linux的信號量。
可以使用以下命令查看:
[root@node-rac1rac]#cat/proc/sys/kernel/sem
250 32000 32 128
對於輸出的這四個值的含義,分別介紹如下:
Ø SEMMSL:此參數用於控制每個信號集的最大信號數,Oracle建議將SEMMNI設置爲不小於100。
Ø SEMMNS:此參數用於控制整個Linux系統中信號(而不是信號集)的最大數量。
Ø SEMOPM:此參數用於控制每個semop系統調用可以執行的信號操作數,Oracle建議將SEMOPM的值設置爲不少於100
Ø SEMMNI:此內核參數用於控制整個Linux系統中信號集的最大數量,Oracle建議將SEMMNI設置爲不小於100。
6、設置 Shell對Oracle用戶的限制
以root用戶身份,在每個節點上執行相同的操作。
首先,修改/etc/security/limits.conf,在文件最後添加如下內容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
接着,修改/etc/pam.d/login,在文件最後添加如下內容:
session required /lib/security/pam_limits.so
最後,修改/etc/profile,在文件最後添加如下內容:
if [ $USER = "oracle" ]; then
if [ $SHELL ="/bin/ksh" ]; then
ulimit-p 16384
ulimit-n 65536
else
ulimit-u 16384 -n 65536
fi
fi
所有修改完畢,重啓所有Linux系統。
7、配置hangcheck-timer內核模塊
以root用戶身份執行,在所有節點上做如下配置。
查看模塊是否存在:
[root@node-rac1~]#find /lib/modules -name "hangcheck-timer.ko"
接着,編輯/etc/modprobe.conf:
[root@node-rac1~]# vi /etc/modprobe.conf
在文件的末尾加入一行:
options hangcheck-timer hangcheck_tick=30hangcheck_margin=180
然後,將hangcheck-timer模塊配置爲自啓動:
[root@node-rac1~]#vi /etc/rc.d/rc.local
在文件的末尾加入一行:
/sbin/modprobe hangcheck_timer
接着,啓動hangcheck:
[root@node-rac1~]# /sbin/modprobehangcheck_timer
最後,檢查hangcheck是否成功啓動:
[root@node-rac1~]#grep hangcheck/var/log/messages | tail -2
Aug 26 19:08:17Mysql1 kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 30 seconds,margin is 180 seconds).
如果顯示上面輸出信息說明已經成功啓動hangcheck。
8、配置系統安全設置
由於在安裝RAC數據庫時,安裝進程需要在每個節點間傳送數據,這就要求每個節點間是互信任的,因此,最簡單的方式就是關閉系統的安全限制,常用的方式是關閉Linux系統的iptables以及selinux,在每個節點上執行相同的操作。
關閉iptables很簡單,可以直接執行如下命令:
[root@node-rac1 ~]# iptables –F
[root@node-rac1 ~]# /etc/init.d/iptables save
最後,將selinux禁用即可,也就是修改/etc/selinux/config文件,修改後的內容爲:
SELINUX=disabled
SELINUXTYPE=targeted
9、創建Oracle用戶和組
在安裝進行之前,需要創建兩個用戶組和一個用戶,分別用於oracle安裝和oracle管理,在兩個節點執行相同的操作,操作如下:
[root@node-rac1~]#groupadd –g 1001 dba
[root@node-rac1~]#groupadd –g 1002 oinstall
[root@node-rac1~]#useradd -u 1001 -g oinstall-G dba oracle
然後,給oracle用戶設置密碼:
[root@node-rac1~]# passwd oracle
最後,確認匿名用戶nobody是否存在於系統中,因爲在安裝完成後nobody用戶需要執行一些擴展任務:
[root@node-rac1~]# id nobody
uid=99(nobody)gid=99(nobody) groups=99(nobody)
jesse:需要驗證是否有noboday用戶
這樣,用戶和組創建就完畢了。
10、設置Oracle用戶環境變量
用文本編輯器vi編輯/home/oracle/.bash_profile文件,在文件最後添加如下內容,這裏以node-rac1爲例,同理,需要在節點node-rac2也執行相同的操作。
exportORACLE_BASE=/u01/oracle
#oracle程序的基本目錄
exportORACLE_HOME=$ORACLE_BASE/product/11.0.6/rac_db
#
exportORA_CRS_HOME=/app/crs/product/11.0.6/crs
exportORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
exportORACLE_SID=racdb1
#第一個節點設置爲racdb1,第二個節點這裏需要設置爲racdb2
exportNLS_LANG=AMERICAN_AMERICA.zhs16gbk
#語言編碼的設置
exportNLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
exportPATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
exportPATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
exportPATH=${PATH}:$ORACLE_BASE/common/oracle/bin
exportORACLE_TERM=xterm
exportTNS_ADMIN=$ORACLE_HOME/network/admin
exportORA_NLS10=$ORACLE_HOME/nls/data
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib
exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
exportCLASSPATH=$ORACLE_HOME/JRE
exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
exportTHREADS_FLAG=native
export TEMP=/tmp
exportTMPDIR=/tmp
10、設置Oracle用戶環境變量
根據oracle官方的建議,這裏將oracle rac數據庫程序和oracle clusterware軟件安裝在了不同的目錄。而“ORACLE_SID”在節點2上應該設置爲“export ORACLE_SID=racdb2”
設置完畢oracle用戶環境變量後,還需要在兩個節點創建環境變量中指定的安裝目錄,基本操作如下:
[root@node-rac1~]# mkdir -p/u01/oracle/product/11.0.6/rac_db
[root@node-rac1~]# mkdir -p /app/oracrs/product/11.0.6/crs
[root@node-rac1~]# chown -R oracle:oinstall/u01/oracle
[root@node-rac1~]#chown -R oracle:oinstall/app
11、配置節點間SSH信任
在安裝RAC過程中,OUI程序會使用ssh和scp命令來執行遠程拷貝操作,將文件從安裝節點拷貝到其它節點上,如果節點間不相互信任,那麼傳輸過程就需要輸入密碼,從而導致安裝失敗,因此必須在所有的節點上爲oracle用戶配置節點間的互信。
1 在每個節點上創建 RSA密鑰和公鑰
(1)以 oracle 用戶登錄
(2)在 oracle用戶的根目錄內創建.ssh目錄並設置讀取權限
[oracle@node-rac1 ~]$ mkdir ~/.ssh
[oracle@node-rac1 ~]$ chmod 700 ~/.ssh
(3)使用ssh-keygen命令生成基於SSH協議的RSA密鑰
[oracle@node-rac1 ~]$ cd ~/.ssh
[[email protected]]$ssh-keygen -t rsa
Generatingpublic/private rsa key pair.
Enter file inwhich to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase(empty for no passphrase):
Enter samepassphrase again:
Youridentification has been saved in /home/oracle/.ssh/id_rsa.
Your public keyhas been saved in /home/oracle/.ssh/id_rsa.pub.
The keyfingerprint is:
dd:69:5a:aa:e6:85:88:a4:07:72:ab:15:7b:3b:4a:77oracle@node-rac1
在提示保存私鑰(key)和公鑰(public key)的位置時,選擇使用默認值,然後依次直接回車即可。
11、配置節點間SSH信任
2 整合公鑰文件
(1)以 Oracle 用戶登錄
(2)在要執行Oracle安裝程序的節點node-rac1 上執行如下操作:
[oracle@node-rac1 ~] $ cd ~/.ssh
[oracle@node-rac1 .ssh]$ ssh node-rac1 cat/home/oracle/.ssh/id_rsa.pub >> authorized_keys
[oracle@node-rac1 .ssh]$ ssh node-rac2 cat/home/oracle/.ssh/id_rsa.pub >> authorized_keys
[oracle@node-rac1 .ssh]$ chmod 600 ~/.ssh/authorized_keys
[oracle@node-rac1 .ssh]$scp authorized_keys node-rac2:/home/oracle/.ssh/
這個操作過程是將兩個節點生成的公鑰文件整合爲一個authorized_keys文件,然後進行授權,並將authorized_keys拷貝到另一個節點。
(3)測試SSH互信
首先在node-rac1節點上執行:
[oracle@node-rac1 ~]$ ssh node-rac1 date
[oracle@node-rac1 ~]$ ssh node-rac2 date
然後在node-rac2節點上執行
[oracle@node-rac2 ~]$ ssh node-rac1 date
[oracle@node-rac2 ~]$ ssh node-rac2 date
如果不需要輸入密碼就出現系統當前日期,就說明SSH互信已經配置成功了。
12、配置共享存儲系統
在講述的這個環境中,共享存儲由一臺ISCSI-target主機來提供,通過以太網,假定將ISCSI-target主機兩塊本地磁盤/dev/sdb、/dev/sdc共享給RAC數據庫的兩個節點,由於ISCSI的安裝已經在前面章節進行了詳細講述,這裏不再介紹,然後對兩塊共享磁盤分別劃分了五個分區,每個分區的用途如下表:
全部操作執行完畢,重啓RAC數據庫的兩個節點。
13、建立和配置raw設備
關於raw設備的使用,從Centos4版本到Centos5發生了很大變化,在Centos4以前版本中可以通過/etc/sysconfig/rawdevices和/etc/init.d/rawdevices文件來創建和配置raw設備,而在Centos5以後,raw必須要通過 udev來管理raw,並且raw命令的位置從/usr/bin/raw變爲/bin/raw,這從安全方面改進了不少,但是仍然兼容之前的配置方式,因此在Centos5版本中配置raw的方法有兩種:
(1)手動建立/etc/sysconfig/rawdevices文件,然後從其它操作系統上拷貝/etc/init.d/rawdevices文件到本機,修改/etc/init.d/rawdevices文件中raw命令的路徑,然後就可以通過/etc/init.d/rawdevices來啓動和關閉 raw文件了。
(2)通過udev來管理raw,添加raw設備對應的配置文件爲/etc/udev/rules.d/60-raw.rules。
這裏採用第二種方式來建立和配置raw設備,首先修改/etc/udev/rules.d/60-raw.rules文件,修改完成的內容如下:
ACTION=="add",KERNEL=="sdb5",RUN+="/bin/raw/dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdb6",RUN+="/bin/raw/dev/raw/raw2 %N"
…………
ACTION=="add",KERNEL=="sdc8",RUN+="/bin/raw/dev/raw/raw9 %N"
ACTION=="add",KERNEL=="sdc9",RUN+="/bin/raw/dev/raw/raw10 %N"
KERNEL=="raw1",OWNER="oracle", GROUP="oinstall", MODE="644"
KERNEL=="raw2",OWNER="oracle", GROUP="oinstall", MODE="644"
KERNEL=="raw3",OWNER="oracle", GROUP="oinstall", MODE="660"
…………
KERNEL=="raw9",OWNER="oracle", GROUP="oinstall", MODE="660"
KERNEL=="raw10",OWNER="oracle", GROUP="oinstall", MODE="660"
13、建立和配置raw設備
然後啓動udev服務生成raw設備:
[root@node-rac1/]# start_udev
Startingudev: [ OK ]
接着驗證一下raw設備是否生成:
[root@node-rac1/]# ll /dev/raw/raw*
crw-r--r--1 oracle oinstall 162, 1 Aug 27 00:13/dev/raw/raw1
crw-rw----1 oracle oinstall 162, 10 Aug 27 00:13 /dev/raw/raw10
crw-r--r--1 oracle oinstall 162, 2 Aug 27 00:13/dev/raw/raw2
crw-rw----1 oracle oinstall 162, 6 Aug 27 00:13/dev/raw/raw6
crw-rw----1 oracle oinstall 162, 7 Aug 27 00:13/dev/raw/raw7
……………..
crw-rw----1 oracle oinstall 162, 8 Aug 27 00:13 /dev/raw/raw8
crw-rw----1 oracle oinstall 162, 9 Aug 27 00:13/dev/raw/raw9
從輸出可以看出,raw設備已經生成,並且相關權限也自動加載。