整理:RAC搭建过程 201

来源:互联网 发布:老王风生水起淘宝假货 编辑:程序博客网 时间:2024/06/05 07:30
点击打开链接
 整理: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
0 0