整理:RAC搭建過程

達芬奇的夢發表於2017-03-30
整理: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規劃方案
     禁用iptables
     關閉防火牆:
     禁用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
     安裝支援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/
修改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
</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</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?,建議大家看看這篇文章就瞭然了


 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 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,打完收工,前的征程才剛開始

最後,做個廣告,我個人的網站


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

相關文章