整理:Oracle11g Rac搭建过程

环境:操作系统:CentOS CentOS release 6.5 (Final) 64bite

                                 KERNEL:2.6.32-431.el6.x86_64

            ORACLE版本:ORACLE 11G R2.0.4 64bit 

注:请大家一定不要用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

哈哈,这个办法可以保你过一关,但是下一关在哪里就不知道了,你装好了,再重启一下试试。。。。不说了,你猜不到结尾的


共享一下ORACLE的下载链接 链接:http://pan.baidu.com/s/1pKDXR5L 密码:yakr 

其中,第1,2个文件是oracle的安装包,第三个是grid的安装包。


如果大家在安装过程中遇到什么问题,可以在评论区提问,我会及时回复,另可加群QQ:134426686    

安装步骤:

     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 raw3 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;
export ORACLE_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";
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.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 = 1417529344
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
alias grep='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   ---192.168.137.1为你的当前终端命令窗口所在的电脑的IP

   ----在后面运行runInstall之前,先打开Xmanager - Passive工具,细节就不讲了,不懂的回复我,然后在root下面执行xhost +

   

  7.再回到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   
disk  /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

不过ORACLE官网提供了ASMLIB的下载,通过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 rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
Rac2执行:
cat ~/.ssh/*.pub >>~/.ssh/authorized_keys
ssh rac1 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
Rac1和Rac2双节点执行  ---两个节点4个账户都要执行以下语句,特别要自己和自己验证
ssh rac1 date
ssh rac1-priv date
ssh rac2 date
ssh rac2-priv date

 

 5)安装grid infrastructure

  以grid用户在grid目录下解压grid安装包:

rpm -ivh grid/rpm/cvuqdisk-1.0.9-1.rpm
export CVUQDISK_GRP=oinstall 
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose   ----安装前检查两个节点

注:如果出现Could not get the type of storage 之类的错误,请检查有没有安装cvuqdisk-1.0.9-1.rpm,该包在目录grid/rpm目录下

./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose     ----安装后检查两个节点       

./runcluvfy.sh comp ssa -n rac1,rac2 -s /dev/raw/raw1,/dev/raw/raw2,/dev/raw/raw3   ---检查共享存储

 检查是否有错误的地方,仔细核对,直到测试成功

    在要运行安装命令的窗口下敲

export LANG="en_US.UTF-8"
export DISPLAY=192.168.137.1:0.0
xhost +
./runInstaller

    安装过程比较简单,就不截图了,重点说一下

    开始选择安装并配置grid.

    要先创建一个ocr和vote磁盘组,剩下的data和arch的等以后用asmacd来创建

    磁盘组的冗余级别:

              高冗余:三块磁盘互为镜像,通过GI来实现

              普通冗余:两块磁盘互为镜像,通过GI来实现

              外部冗余:通过外部存储设备本身的安全机制来实现冗余,比如RAID

For standard disk groups, High redundancy requires a minimum of three disks. Normal requires a minimum of two disks.

External requires a minimum of one disk. 

If you want to install Oracle Cluster Registry and voting disk files on Oracle ASM, then the minimum number of disks is higher. High redundancy requires a minimum of five disks. Normal redundancy requires a minimum of three disks. External redundancy requires a minimum of one disk

翻译:如果放OCR和VOTING DISK FILES,High为5个,Normal为3个,External为1个

在grid安装过程为创建两个用户sys(sysasm组,主要做管理用的)和asmsnmp(sysdba组,主要做监控用的),显然asmsnmp的权限小于sys。

    跑脚本的顺序一定要对,先在RAC1执行第一个脚本,再到RAC2执行第一个脚本,然后到RAC1执行第二脚本,最后再去RAC2执行第二个脚本

    执行root.sh时同时在另一窗口用 root用户执行/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1

 注:即使是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  


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

    在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,打完收工,前的征程才刚开始

2

热门评论