整理:RAC搭建過程 201

點擊打開鏈接
 整理:RAC搭建過程 2014-03-22 15:58:37

分類: Oracle

整理:RAC搭建過程

環境:操作系統:CentOS CentOS release 6.5 (Final) 64bite
      kernel:2.6.32-431.el6.x86_64
      ORACLE版本:ORACLE 11G R2.0.4 64bite   
         

    注:請大家一定不要用11.2.0.1版的ORACLE,沒打補丁,問題很多,特別是運行root.sh腳本時報錯。。。傷不起
在執行./root.sh 時會出現
Adding daemon to inittab字樣,此時在另一個窗口開始執行不停的執行以下命令,直到可以執行爲止
/bin/ddif=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
哈哈,這個辦法可以保你過一關,但是下一關在哪裏就不知道了,你裝好了,再重啓一下試試。。。。不說了,你猜不到結尾的

        

安裝步驟:
     1)環境部署
     2)共享磁盤
     3)克隆節點
     4)安裝前檢測
     5)安裝grid infrastructure
     6)添加ASM設備
     7)安裝oracle軟件前檢查
     8)安裝oracle軟件
     9)創建集羣數據前的檢查
     10)創建集羣數據庫

規劃方案:
   IP規劃:
#public
192.168.137.101 rac1.localdomain rac1
192.168.137.102 rac2.localdomain rac2
#private
10.0.0.1 rac1-priv.localdomain rac1-priv
10.0.0.2 rac2-priv.lcoaldomain rac2-priv
#virtaul
192.168.137.10 rac1-vip.localdomain rac1-vip
192.168.137.20 rac2-vip.localdomain rac2-vip
#scan
192.168.137.100 rac-scan.localdomain rac-scan
192.168.137.200 rac-scan.localdomain rac-scan
192.168.137.300 rac-scan.localdomain rac-scan

存儲規劃:
    sdb1    raw1    10G    DATA    存放數據文件
    sdc1    raw2    5G    ARCH    歸檔日誌
    sdd1    ra3    2G    OCR    存放ocr和voting    
    ---還可以加更多,但沒必要這個時候配置這麼多,搭建grid完後就可以利用ASMCA創建更多磁盤了

安裝過程:
  1)環境部署:     
     方法:先在一個linux虛擬機上配置,等一切就緒了,就複製生成另一個虛擬機,這樣就有兩個服務器了
     修改主機名:/etc/sysconfig/network
     添加網卡:/etc/sysconfig/network-scripts/ifcfg-eth0及eth1,這裏需要說的public也就是eth0裏面必須要有網關纔可以,例如:
DEVICE=eth0
TYPE=Ethernet
UUID=6adac61d-587c-4669-9778-a3f7261e2a7d
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.137.102
NETMASK=255.255.255.0
GATEWAY=192.168.137.1

     配置hosts文件:/etc/hosts 內容複製上面的IP規劃方案


#vi /etc/sysconfig/network

HOSTNAME=rac1

 

# hostname rac1


     禁用iptables
     關閉防火牆:

rac1 rac2 2個節點上分別執行如下語句:

 

[root@rac01 ~]# service iptables stop

[root@rac01 ~]# chkconfig iptables off

[root@rac01 ~]# chkconfig iptables --list

iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

 

chkconfig iptables off ---永久

service iptables stop ---臨時

/etc/init.d/iptables status ----會得到一系列信息,說明防火牆開着。

/etc/rc.d/init.d/iptables stop ----------關閉防火牆


     禁用NTP: mv /etc/ntp.conf   /etc/ntp.conf.bak
     搭建本地yum源:掛載CentOS鏡像盤,修改cat /etc/yum.repos.d/media.repo 內容如下:
                    [c6-media]
                    name=CentOS-$releasever - Media
                    file:///media/
                    gpgcheck=1
                    enabled=1
                    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

     安裝必備軟件包:yum install glibc glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat
                        unixODBC unixODBC-devel pdksh  compat-libcap1   compat-libstdc++ elfutils-libelf-devel gcc-c++   
                   ----這裏要說一下系統裏默認安裝了ksh,再安裝pdksh的話就會出現衝突,所以得rpm -e ksh,再安裝pdksh

一般情況下除了compat的一些包沒有安裝外,其他的包都已經安裝了,可以使用rpm –qa |grep 命令進行查詢,注意一定要與操作系統版本相符

 

 

rpm -qa | grep binutils-

rpm -qa | grep compat-libstdc++-

rpm -qa | grep elfutils-libelf-

rpm -qa | grep elfutils-libelf-devel-

rpm -qa | grep glibc-

rpm -qa | grep glibc-common-

rpm -qa | grep glibc-devel-

rpm -qa | grep gcc-

rpm -qa | grep gcc-c++-

rpm -qa | grep libaio-

rpm -qa | grep libaio-devel-

rpm -qa | grep libgcc-

rpm -qa | grep libstdc++-

rpm -qa | grep libstdc++-devel-

rpm -qa | grep make-

rpm -qa | grep sysstat-

rpm -qa | grep unixODBC-

rpm -qa | grep unixODBC-devel-


     安裝支持X環境包: yum groupinstall 'X Windows System'  
           ----如果你記不得話就用yum grouplist | grep 'X'查看一下
     安裝虛擬機tool需要的包:  yum install kernel-headers-2.6.32-431.el6.x86_64  gcc 
           ----其它還需要 gcc的,但上面已經安裝了
     安裝虛擬機tool:這個就不用說了吧,把虛擬機安裝目錄下的linux.iso掛載到media下,安裝裏面的vmware-tool,一步步回車就行,略

     創建用戶和組:
        groupadd oinstall
        groupadd dba
        groupadd oper
        groupadd asmadmin
        groupadd asmdba
        groupadd asmoper
        useradd -g oinstall -G dba,asmdba,asmadmin,asmoper grid
        useradd -g oinstall -G dba,oper,asmdba,asmadmin oracle
        echo -n oracle | passwd --stdin grid
        echo -n oracle | passwd --stdin oracle
創建目錄:
        mkdir -p /u01/app/11.2.0/grid    ---grid安裝目錄
        mkdir -p /u01/app/grid           ---grid的BASE目錄,要求不能與上面同一目錄的
        mkdir -p /u01/app/oracle       
        chown -R grid:oinstall /u01/app/11.2.0/grid
        chown -R grid:oinstall /u01/app/grid
        chown -R oracle:oinstall /u01/app/oracle
        chmod -R 775 /u01/


mkdir -p /u01/app/oraInventory

chown -R grid:oinstall /u01/app/oraInventory

chmod -R 775 /u01/app/oraInventory


修改grid和oracle的bash_profile文件
cat>> /home/grid/.bash_profile<< EOF
export TMP=/tmp;
export TMPDIR=\$TMP;
export ORACLE_HOSTNAME=rac1;
export ORACLE_SID=+ASM1;
export ORACLE_BASE=/u01/app/grid;
export ORACLE_HOME=/u01/app/11.2.0/grid;
export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS";
export PATH=\$ORACLE_HOME/BIN:\$PATH;
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
EOF
cat>> /home/oracle/.bash_profile<< EOF
export TMP=/tmp;
export TMPDIR=\$TMP;
export ORACLE_HOSTNAME=rac1;
export ORACLE_BASE=/u01/app/oracle;
exportORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1;
export ORACLE_UNQNAME=prod;
export ORACLE_SID=prod1;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:\$PATH;
export PATH=\$ORACLE_HOME/bin:\$PATH;
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib;
 export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib;
export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS";
exportNLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
EOF
   修改內核參數/etc/sysctl.conf
sed -i 's/kernel.shmmax/#kernel.shmmax/g' /etc/sysctl.conf
sed -i 's/kernel.shmall/#kernel.shmall/g' /etc/sysctl.conf
cat>> /etc/sysctl.conf<<eof
 fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
EOF
修改oracle用戶限制
cat>> /etc/security/limits.conf<<eof
 oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack  10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
EOF
配置/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
aliasgrep='grep --color=auto'
export PATH=$PATH:/u01/app/11.2.0/grid/bin
  ----以上已經很多事情了,不過你還可能做下面這些事情
  增加swap空間
   1.檢查swap大小和硬盤空間 free -m查看內存和swap | df -h查看硬盤空間 ,得有2.7G的空間纔可以
   2.添加交換文件
mkdir -p /opt/temp
dd if=/dev/zero of=/opt/temp/swap bs=1024 count=2048000   --這個是2G
   3.創建交換空間
       mkswap /opt/temp/swap
   4.啓動新增加的2G交換空間
   swapon /opt/temp/swap
   5.修改/etc/fstab,使新加的2G交換空間在系統重新啓動後自動生效
  echo "/opt/temp/swap           swap                    swap    defaults        0 0" >>/etc/fstab
  6.重啓生效
爲xmanager準備,最好是在root的.bash_profile裏面添加上下面內容
   export DISPLAY=192.168.137.1:0.0
   ----在後面運行runInstall之前,先打開Xmanager - Passive工具,細節就不講了,不懂的回覆我,然後在root下面執行xhost +
       再回到grid下面運行runInstall,就可以在window下看到虛擬機中的grid安裝界面了



 2)共享磁盤
    因爲我們用的是虛擬機,所以共享磁盤也得用虛擬機配置出來,方法如下:
    利用虛擬機自帶的工具創建硬盤: vmware-vdiskmanager.exe -c -s 10g -a lsilogic -t 2 e:\share\data.vmdk 
          ----生成的文件不要和RAC1的虛擬機文件放在一塊了,因爲等下要複製RAC1到RAC2的,共享磁盤當然不復制了,按照上面的方法添加三塊
    修改虛擬機配置文件RAC1.vmx,後面添加如下內容:
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1.present = "TRUE"
scsi1.sharedBus = "VIRTUAL"
scsi1.virtualDev = "lsilogic"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "E:\Share\RAC1-1.vmdk"
scsi1:1.writeThrough = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.deviceType = "disk"
scsi1:1.redo = ""
scsi1:2.present = "TRUE"
scsi1:2.fileName = "E:\Share\RAC1-2.vmdk"
scsi1:2.writeThrough = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.deviceType = "disk"
scsi1:2.redo = ""
scsi1:3.present = "TRUE"
scsi1:3.fileName = "E:\Share\RAC1-3.vmdk"
scsi1:3.writeThrough = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.deviceType = "disk"
scsi1:3.redo = ""
---OK,重啓一下,這樣就添加好了

磁盤分區:fdisk /dev/sdb   
     fdisk /dev/sdc
      fdisk /dev/sdd

利用udev工具綁定裸設備:
       [root@RAC1 ~]# cat /etc/udev/rules.d/60-raw.rules 
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
KERNEL=="raw1", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw2", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw3", OWNER="grid", GROUP="asmadmin", MODE="660"
[root@RAC1 ~]# start_udev
 Starting udev:                                             [  OK  ]
[grid@RAC1 ~]$ ll /dev/raw
total 0
crw-rw---- 1 grid asmadmin 162, 1 Mar 21 02:58 raw1
crw-rw---- 1 grid asmadmin 162, 2 Mar 21 02:58 raw2
crw-rw---- 1 grid asmadmin 162, 3 Mar 21 02:58 raw3
crw-rw---- 1 root disk     162, 0 Mar 21 02:58 rawctl
----OK,綁定裸設備成功

注: 這裏沒有提到安裝ASMLIB,而且用的是CENTOS6.5的系統,內核裏面也沒有ASMLIB,當然不能運行ORACLEASM LISTDISKS這樣的命令。有很多新手認爲ASM與ASMLIB有關係,爲什麼RHEL 6上沒有ASMLIB?,建議大家看看這篇文章就瞭然了 http://www.oracledatabase12g.com/archives/why-no-asmlib-redhat-linux6.html


 3)克隆節點
    直接複製RAC1的虛擬機的目錄爲RAC2,打開RAC2虛擬機,點擊“I Copied It”
    此時,只需要修改三個地方即可:主機名、.bash_profile配置的實例名等、IP地址

 4)安裝前的檢查:
    配置兩節點互信:
       以下均以grid和oracle用戶執行
Rac1和Rac2分別執行:
ssh-keygen–t rsa
ssh-keygen–t dsa
Rac1
cat ~/.ssh/ *.pub >>~ /.ssh/authorized_keys
ssh oracle@rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys
Rac1和Rac2雙節點執行
ssh rac1 date
ssh rac1-priv date
ssh rac2 date
ssh rac2-priv date

    以grid用戶在grid解壓目錄下面運行:
    ./runcluvfy.sh stage -post hwos -n rac01,rac02 -verbose     ----檢查兩個節點 

./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose      ---更改!
    ./runcluvfy.sh comp ssa -n rac1,rac2 -s /dev/raw/raw1,/dev/raw/raw2,/dev/raw/raw3   ---檢查共享存儲
       ---如果出現Could not get the type of storage 之類的錯誤,請檢查有沒有安裝cvuqdisk-1.0.9-1.rpm,該包在目錄grid/rpm目錄下
        檢查是否有錯誤的地方,仔細覈對,直到測試成功

 5)安裝grid infrastructure

    安裝過程比較簡單,就不截圖了,重點說一下
    磁盤組的冗餘級別:
              高冗餘:三塊磁盤互爲鏡像,通過GI來實現
              普通冗餘:兩塊磁盤互爲鏡像,通過GI來實現
              外部冗餘:通過外部存儲設備本身的安全機制來實現冗餘,比如RAID
    跑腳本的順序一定要對,先在RAC1執行第一個腳本,再到RAC2執行第一個腳本,然後到RAC1執行第一腳本,最後再去RAC2執行第二個腳本
    注:即使是11.2.0.4這樣的版本也會在節點2上運行root.sh腳本時出錯的,我是刪除了一次GI再重裝才成功的
       留下刪除的過程:
          以root身份運行  /u01/app/11.2.0/grid/crs/install/root.crs -deconfig -force    ---這個命令相信新手都見過,也用過不少次吧
          完了,再執行 /u01/app/11.2.0/grid/deinstall/deinstall   過程中會讓輸入一些信息,不清楚的可以百度
          再然後就是清除共享存儲上已經寫入的文件了
           dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=10240000  其它兩個也是這樣執行就行了
          最後刪除目錄
           rm /etc/ora*
           rm /u01/app/11.2.0/grid/*
           rm /usr/local/bin/dbhome
           rm /usr/local/bin/oraenv
           rm /usr/local/bin/coraenv
           rm /u01/app/oraInventory
          OK.         


6)添加ASM設備
   su - grid
   ASMCA
   接着就是圖形化界面配置了
   我配置了又配置了兩個磁盤組DATA和FRA,分別用來保存數據文件和閃回日誌
   在ASMCA界面會看到節點2上的設備沒有mount,我們可以執行以下命令
   $sqlplus / as sysasm
   >alter diskgroup DATA mount;
   
7)安裝ORACLE前的檢查
   ./cluvfy stage -pre dbinst -fixup -n rac1,rac2 -osdba dba -verbose
   如果出現/etc/resolv.conf未配置之類的錯誤,是因爲沒有指定DNS地址。但我們這裏用的是hosts文件解析,所以可以忽略。

8)安裝ORACLE軟件
   su - oracle
   然後運行database目錄下的./install 就很簡單了   

9)創建集羣數據庫前的檢查
   ./cluvfy stage -pre dbcfg -n rac1,rac2 -d $ORACLE_HOME -verbose
   
10)創建集羣數據庫
   DBCA   
   這裏就描述一下,我這裏面的數據庫名叫orcl,在填寫的時候不必擔心不要區分orcl1還是orcl2,只需要把數據庫名和SID都寫爲orcl就行,剩下分1和2的事   
   就交給oracle了

OK,打完收工,前的征程纔剛開始

最後,做個廣告,我個人的網站http://51zhujie.top/article/37&dissertation
發佈了1 篇原創文章 · 獲贊 15 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章