在RHEL6.0搭建Oracle 11gR2 RAC生產環境

us_yunleiwang發表於2013-12-05

【背景】昨天開發要求我給他們在Red Hat Enterprise Linux 6.0上搭建一套兩節點的Oracle 11gR2 RAC,用來做客服系統使用。以前大部分都在AIX上安裝Oracle RAC,很少在Linux上安裝Oracle RAC.雖然在操作上沒有什麼問題,但是有個文件參考確實方便一點。在安裝的過程中自己整理了一下這個安裝手冊,方便在以後使用。

一、環境檢查
1.檢查硬體配置
  檢查記憶體:
  [root@rac1 ~]# grep MemTotal /proc/meminfo

  檢查交換空間
  [root@rac1 ~]# grep SwapTotal /proc/meminfo

  檢查臨時檔案目錄(至少應有400M空閒空間)
  [root@rac1 ~]# df -m /tmp

  檢查檔案系統空間
  [root@rac1 ~]# df -m

  檢查作業系統核心版本必須是2.6.18以上
  [root@rac1 ~]# uname -r

  關閉SELinux
  [root@rac1 ~]# vi /etc/selinux/config,
  將SELINUX 值改為 “SELINUX=disabled”.
  如果原來是enabled,改為disabled,需要重啟
 
2.配置ntpd
  [root@rac1 ~]# service ntpd stop
  Shutting down ntpd:                                        [  OK  ]
  [root@rac1 ~]# chkconfig ntpd off
  [root@rac1 ~]# mv /etc/ntp.conf /etc/ntp.conf.orig
  [root@rac1 ~]# rm /var/run/ntpd.pid

  If you are using NTP, you must add the “-x” option into the following line in the “/etc/sysconfig/ntpd” file.
  如果要使用NTP,你必須新增-x引數到/etc/sysconfig/ntpd檔案中
  OPTIONS=”-x -u ntp:ntp -p /var/run/ntpd.pid”Then restart NTP.

  [root@rac1 ~]# service ntpd restart

3.檢查Oracle必須要安裝的包
  我們可以透過下面這個命令來檢查,缺少那個包就安裝哪個包:
  [root@rac1 ~]#rpm -q binutils compat-db control-center gcc gcc-c++ glibc glibc-common gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio openmotif21
  掛載光碟
  [root@rac1 ~]# mkdir /media/disk
  [root@rac1 ~]# mount /dev/cdrom /media/disk
  mount: block device /dev/cdrom is write-protected, mounting read-only 
 
  如果少了哪些包,直接在光碟Server/Packages/目錄下找到改包安裝上就可以了。
  rpm 包安裝:
  rpm -Uvh *.rpm –force –nodeps
 

4.官方安裝說明必須要的包
  # From Oracle Linux 6 DVD
  cd /media/cdrom/Server/Packages
  #rpm -Uvh binutils-2.*
  #rpm -Uvh compat-libstdc++-33*
  #rpm -Uvh elfutils-libelf-0.*
  #rpm -Uvh libaio-0.*
  rpm -Uvh libaio-devel-0.*
  #rpm -Uvh sysstat-9.*
  #rpm -Uvh glibc-2.*
  #rpm -Uvh glibc-common-2.*
  #rpm -Uvh glibc-devel-2.* glibc-headers-2.*
  rpm -Uvh ksh-2*
  #rpm -Uvh make-3.*
  #rpm -Uvh libgcc-4.*
  #rpm -Uvh libstdc++-4.*
  rpm -Uvh libstdc++-4.*.i686*
  #rpm -Uvh libstdc++-devel-4.*
  #rpm -Uvh gcc-4.*x86_64*
  #rpm -Uvh gcc-c++-4.*x86_64*
  #rpm -Uvh –allfiles elfutils-libelf-0*x86_64* elfutils-libelf-devel-0*x86_64*
  rpm -Uvh elfutils-libelf-0*i686* elfutils-libelf-devel-0*i686*
  rpm -Uvh libtool-ltdl*i686*
  rpm -Uvh ncurses*i686*
  rpm -Uvh readline*i686*
  rpm -Uvh unixODBC*
  cd /
  eject

二、系統配置 
1.配置hosts(兩個節點都要執行)
[root@rac1 ~]# vi /etc/hosts
#Public
192.168.1.171   rac1   rac1.localdomain
192.168.1.173   rac2   rac2.localdomain

#Private
172.168.1.191   rac1-priv  rac1-priv.localdomain
172.168.1.192   rac2-priv  rac2-priv.localdomain

#Virtual
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
2.建立目錄、使用者和賦予許可權(兩個節點都要執行)
[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 -c “Grid Infrastructure Owner” grid
[root@rac1 ~]# useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d /home/oracle -s /bin/bash -c “Oracle Software Owner” oracle
[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

3.驗證使用者 nobody 存在
安裝軟體之前,執行以下過程,以驗證在兩個 Oracle RAC 節點上存在使用者 nobody:
要確定該使用者是否存在,輸入以下命令:
[root@rac1 ~]# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
如果該命令顯示了nobody 使用者的資訊,則無需建立該使用者。
如果使用者 nobody 不存在,則輸入以下命令進行建立:
[root@rac1 ~]# /usr/sbin/useradd nobody 
在叢集中的所有其他Oracle RAC 節點上重複此過程。

4.配置環境變數
rac1節點上配置Oracle環境變數
[oracle@rac1 ~]# vi .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
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

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

rac2節點上配置Oracle環境變數
[oracle@rac2 ~]# vi .bash_profile
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=rac2.localdomain; export ORACLE_HOSTNAME
ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=RAC2; export ORACLE_SID
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

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi
rac1節點上配置Grid環境變數
[grid@rac1 ~]# vi .bash_profile
#Grid Settings
CRS_HOME=/oracle/app/11.2.0/grid
ORACLE_BASE=/oracle/app/grid
ORACLE_SID=+ASM1
PATH=$CRS_HOME/bin:$PATH:$Home/bin
export PATH CRS_HOME ORACLE_BASE ORACLE_SID

rac2節點上配置Grid環境變數
[grid@rac2 ~]# vi .bash_profile
#Grid Settings
CRS_HOME=/oracle/app/11.2.0/grid
ORACLE_BASE=/oracle/app/grid
ORACLE_SID=+ASM2
PATH=$CRS_HOME/bin:$PATH:$Home/bin
export PATH CRS_HOME ORACLE_BASE ORACLE_SID

5.編輯/etc/sysctl.conf(兩節點都要執行)
[root@rac1 ~]# vi /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

讓配置生效:
/sbin/sysctl -p

可以使用如下命令來檢視某個引數值:
/sbin/sysctl -a | grep

6.編輯/etc/security/limits.conf(兩節點都要執行)
[root@rac1 ~]# vi /etc/security/limits.conf

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   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

三、配置共享儲存

配置共享儲存請參考http://www.tianqingbo.com/rhel-udev-asm.html
四、解壓介質進行安裝
這些介質都是最新的。可以從MOS官方下載
[root@rac1 ~]unzip p10404530_112030_Linux-x86-64_1of7.zip
[root@rac1 ~]unzip p10404530_112030_Linux-x86-64_2of7.zip
[root@rac1 ~]unzip p10404530_112030_Linux-x86-64_3of7.zip

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23490154/viewspace-1062351/,如需轉載,請註明出處,否則將追究法律責任。

相關文章