RHEL6.4安装Oracle11gR2RAC的CRS

来源:互联网 发布:语音识别模块 淘宝 编辑:程序博客网 时间:2024/05/18 03:58
ORACLE GRID INSTALL FOR RHEL6.4
硬件环境
华硕A43S
    RHEL6.5
    QEMU-KVM
    节点配置:
        内存:3GB
        硬盘:40GB
        网卡:2
        系统:RHEL6.4
    存储环境:
        内存:256
        硬盘:8GB(系统),118GB(共享)
        网卡:1
        系统:RHEL6.4
系统安装不再描述,笔者此处安装操作系统只最小化安装RHEL6.4不再多余赘述

大概描述一下CRS的基本硬件
共享存储 X 1
集群节点 X 2
下边是HOST信息
#public
192.168.0.20 racst #存储服务器
192.168.0.21 rac1  #255.255.255.0
192.168.0.22 rac2
#private
192.168.10.21 priv1 #255.255.255.0
192.168.10.22 priv2
分区规划(在racst主机对vdb分区如下):
/dev/vdb5               1        4162     2097585   83  Linux    2GB
/dev/vdb6            4163        8324     2097616+  83  Linux    2GB
/dev/vdb7            8325       12486     2097616+  83  Linux    2GB
/dev/vdb8           12487       33292    10486192+  83  Linux    10GB
/dev/vdb9           33293       54098    10486192+  83  Linux    10GB
/dev/vdb10          54099       74904    10486192+  83  Linux    10GB
/dev/vdb11          74905      116515    20971912+  83  Linux    20GB
/dev/vdb12         116516      158126    20971912+  83  Linux    20GB
/dev/vdb13         158127      199737    20971912+  83  Linux    20GB
/dev/vdb14         199738      220543    10486192+  83  Linux    10GB
然后将整个vdb共享出去

下边正式进行集群预安装
关闭selinux
[root@racst ~]# sed -i s/"SELINUX=enforcing"/"SELINUX=disabled"/g /etc/sysconfig/selinux && setenforce 0
关闭iptables
[root@racst ~]# /etc/init.d/iptables stop && chkconfig iptables off
[root@racst ~]# mount /dev/cdrom /media/ #将系统盘挂载media目录下配置yum,以便安装所需的包
[root@racst ~]# cat /etc/yum.repos.d/rhel-source.repo |grep -v ^#|grep -v ^$ #配置repo文件如下即可
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///media
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@RACST ~]# mount /dev/cdrom /media/          #挂载光盘(yum源)
mount: block device /dev/sr0 is write-protected, mounting read-only

A.在racst上配置共享存储和crs的外部服务
1.配置共享存储
安装iscsi服务端
yum -y install iscsi-initiator-utils.x86_64 scsi-target-utils.x86_64
配置iscsi服务端
修改iscsi的配置文件/etc/tgt/targets.conf
在最后边加上如下行:
<target iqn.rac:san.sdb>  #iscsi的iqn标识
backing-store /dev/vdb #共享存储为vdb
</target>
最后启动iscsi服务
service tgtd start
然后查看iscsi服务状态和服务情况
[root@RACST ~]# tgtadm --mode target --op show
Target 1: iqn.rac:san.sdb             #检测到的iqn
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 118112 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/vdb  #共享的块设备路径
            Backing store flags:
    Account information:
    ACL information:
        ALL
添加开机启动tgtd服务
chkconfig tgtd on
至此共享存储配置完成

B.在racst上配置DHCP服务器
安装DHCP服务
yum -y install dhcp
配置DHCP服务
编辑DHCP服务的配置文件,在其中加入如下行:
ddns-update-style        none;
default-lease-time        259200;
max-lease-time            518400;
option broadcast-address    192.168.0.255; #广播地址
option domain-name-servers    192.168.0.20; #分配给客户端的DNS服务器
subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.40    192.168.0.49;    #按以上规划40~49的范围
    option subnet-mask    255.255.255.0; #子网掩码
    option nis-domain    "rac.com"; #所在的域
    option domain-name    "rac.com";
}
然后启动DHCP服务
service dhcpd start
添加开机启动DHCPD
chkconfig dhcpd on
至此DHCP服务配置完成

C.在racst上配置DNS服务
安装dns服务
yum -y install bind-libs bind.x86_64 bind-utils.x86_64 bind-chroot.x86_64
配置bind服务
编辑bind主配置文件/etc/named.conf(注意注释的地方和提示的地方,为需要修改的地方)
options {
    listen-on port 53 { any; };    #此处需要设置DNS所监听的本机IP,any是监听所有本机的IP地址
    listen-on-v6 port 53 { ::1; };
    directory     "/var/named";
    dump-file     "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query     { 192.168.0.0/24; };    #允许处理来自这段IP的DNS请求
    recursion yes;
    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;
    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
    type hint;
    file "named.ca";
};
################以下都是新添加的内容#################
zone "rac.com" IN {                  #正向区域解析文件
    type master;
    file "rac.com.zone";    #此处的文件名省去了路径,应该是/var/named/rac.com.zone,正向解析区域。
    allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {    #PTR反向指针文件
    type master;
    file "0.168.192.aptr";    #此处的文件名省去了路径,应该是/var/named/0.168.192.aptr,PTR方向解析区域。
    allow-update { none; };
};
创建并编辑正向解析文件/var/named/rac.com.zone
$TTL 1D
@       IN SOA  @ rname.invalid. (
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
    NS    @
    A    192.168.0.23
    AAAA    ::1
racst    A    192.168.0.20
rac1    A    192.168.0.21
rac2    A    192.168.0.22
cluster    IN    1H    A    192.168.0.21
    IN    1H    A    192.168.0.22
    IN    1H    A    192.168.0.23
创建并编辑PTR反向指针文件/var/named/0.168.192.aptr
$TTL 1D
@    IN SOA    @ rname.invalid. (
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
    NS    rac.com.
    A    192.168.0.23
    AAAA    ::1
20    PTR    racst.rac.com.
21    PTR    rac1.rac.com.
22    PTR    rac2.rac.com.
23    PTR    cluster.rac.com.
21      PTR     cluster.rac.com.
22      PTR     cluster.rac.com.
创剪ISC DLV key
rndc-confgen -r /dev/urandom -a
启动named服务
service named start
添加开机启动named服务
chkconfig named on
至此dns服务配置完成

下边进行通用节点配置(每个节点都要配置的)
每个节点先关闭iptables和selinux配置yum源
注意:每个节点的DNS指向DNS服务器

编辑hosts文件添加如下内容:
#public
192.168.0.20 racst #存储服务器
192.168.0.21 rac1  #255.255.255.0
192.168.0.22 rac2
#private
192.168.10.21 priv1 #255.255.255.0
192.168.10.22 priv2

安装依赖包
 yum -y install libXp.x86_64 libXp.i686 elfutils-libelf.x86_64 elfutils-libelf-devel.x86_64 compat-db.i686 compat-db.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64 openmotif22.i686 openmotif22.x86_64 libaio-devel.i686 libaio-devel.x86_64 control-center.x86_64 make.x86_64 gcc.x86_64 sysstat.x86_64 libaio.i686 gcc-c++.x86_64 compat-libf2c-34.x86_64 compat-libf2c-34.i686 unixODBC.i686 unixODBC.x86_64 unixODBC-devel.i686 unixODBC-devel.x86_64  libgomp.x86_64 compat-libstdc++-33.x86_64 compat-libstdc++-33.i686 glibc.i686 glibc.x86_64 glibc-common.x86_64 glibc-devel.i686 glibc-devel.x86_64 glibc-headers.x86_64 libXmu.i686 libXmu.x86_64 libgcc.i686 libgcc.x86_64 kernel-headers.x86_64 libstdc++.i686 binutils.x86_64 libstdc++.x86_64 compat-libcap1.x86_64 ompat-libcap1.i686 smartmontools iscsi-initiator-utils openssh-clients unzip libaio-0.3.107-10.el6.x86_64

挂载共享存储
iscsiadm --mode discovery -t sendtargets --portal 192.168.0.20   #这个ip指向共享存储服务器,iscsi服务器,发现共享磁盘
service iscsi restart    #重启iscsi挂载这个共享磁盘
然后fdisk -l查看已经有了/dev/sda: 118.1 GB这块盘
将共享的分区映射成raw磁盘文件
编辑/etc/udev/rules.d/60-raw.rules文件添加一下内容:
ACTION=="add",KERNEL=="sda5",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sda6",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sda7",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add",KERNEL=="sda8",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add",KERNEL=="sda9",RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add",KERNEL=="sda10",RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add",KERNEL=="sda11",RUN+="/bin/raw /dev/raw/raw7 %N"
ACTION=="add",KERNEL=="sda12",RUN+="/bin/raw /dev/raw/raw8 %N"
ACTION=="add",KERNEL=="sda13",RUN+="/bin/raw /dev/raw/raw9 %N"
ACTION=="add",KERNEL=="sda14",RUN+="/bin/raw /dev/raw/raw10 %N"
KERNEL=="raw1", OWNER=="oracle", GROUP="oinstall", MODE="664"
KERNEL=="raw2", OWNER=="oracle", GROUP="oinstall", MODE="664"
KERNEL=="raw3", OWNER=="oracle", GROUP="oinstall", MODE="660"
KERNEL=="raw4", OWNER=="oracle", GROUP="oinstall", MODE="660"
KERNEL=="raw5", OWNER=="oracle", GROUP="oinstall", MODE="660"
KERNEL=="raw6", OWNER=="oracle", GROUP="oinstall", MODE="660"
KERNEL=="raw7", OWNER=="oracle", GROUP="oinstall", MODE="660"
KERNEL=="raw8", OWNER=="oracle", GROUP="oinstall", MODE="660"
KERNEL=="raw9", OWNER=="oracle", GROUP="oinstall", MODE="660"
KERNEL=="raw10", OWNER=="oracle", GROUP="oinstall", MODE="660"
启动UDEV生成raw存储文件
start_udev
用ll查看/dev/raw/raw*可以看到raw1~10已经生成
至此共享存储挂载和配置成功了

创建用户,安装目录和环境变量
创建用户,用一下命令创建oracle用户,dba组和oinstall组,并切换到oracle用户
groupadd -g 1001 dba && groupadd -g 1002 oinstall && useradd -u 1001 -g oinstall -G dba oracle && passwd oracle && id nobody && su - oracle
配置oracle用户的环境变量,编辑oracle用户家目录下的.bash_profile文件添加一下内容:

export ORACLE_BASE=/oracle

export ORACLE_SID=+ASM1

export ORACLE_HOME=/grid/11.2.0/crs
export GRID_HOME=/grid/11.2.0/crs
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$GRID_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib:/lib64:/usr/lib64:/usr/local/lib64
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
退回root用户创建安装目录
mkdir /oracle && mkdir /grid && chown -R oracle.oinstall /oracle /grid && chmod -R 775 /oracle /grid && ll / |egrep "oracle"
配置系统参数
配置验证方式如果是32位系统则添加/lib/security/pam_limits.so到/etc/pam.d/login,64位系统如下:
echo "session  required   /lib64/security/pam_limits.so" >>/etc/pam.d/login
配置内核参数
cat >> /etc/sysctl.conf << EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
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
配置的内核参数生效
sysctl -p
修改用户打开文件的句柄数
cat >> /etc/security/limits.conf << EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
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
删除每个节点的ncp的开机启动和重命名ncp服务的配置文件,并保证每个节点的时区一样和时钟相差不太大,以确保CTSS的安装无误
service ntpd stop && mv /etc/ntp.conf /etc/ntp.conf.bak
然后在任意机器上解压grid包,在每个节点上安装rpms/cvuqdisk-1.0.7-1.rpm
至此系统通用的配置已完成
************************************************
注意:以上均属于通用配置(除了racst,在所有节点上),笔者
由于用的是KVM虚拟机,所有笔者先安装了一个节点,让和做完上
述操作后,将虚拟机关机,然后克隆其他一个节点,然后修改IP和
主机名。
************************************************

配置oracle的ssh互信,安装的时候就不必输入oracle用户的密码了,这样一气呵成(笔者的习惯)!
切换到oracle用户下(在每个节点运行)
su - oracle
然后创建的用户配置目录和生存公钥(在每个节点运行)
mkdir ~/.ssh && chmod 700 ~/.ssh && cd ~/.ssh && ssh-keygen -t rsa
收集公钥(在RAC1运行)
ssh rac1 cat ~/.ssh/id_rsa.pub >> authorized_keys #收集rac1的公钥
ssh rac2 cat ~/.ssh/id_rsa.pub >> authorized_keys #收集rac2的公钥
分发公钥集和known_hosts(在RAC1运行),rac1本身就已经有了,所有就不用分发了
scp authorized_keys known_hosts rac2:~/.ssh/

一下操作都在rac1完成
准备安装包
unzip linux.x64_11gR2_grid.zip
chown -R oracle.oinstall grid/
检测安装,接换回oracle用户
./runcluvfy.sh stage -pre crsinst -n rac1,rac2  -fixup -fixupdir /tmp
此处检测的有些包,在64位下检测到没有i386的包出错,这个可以忽略,ntp服务没有也可以忽略
安装完成后用root运行脚本,然后自动配置grid的时候出错的可以跳过,完了具体错误具体解决
在运行root脚本的时候ohasd会起不来,这是11gR2众所周知的bug
解决方法
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1

然后安装database软件
然后samca创建数据磁盘组
其他磁盘规划
cvuqdisk CVUQ磁盘组 raw1 raw2 raw3 (安装grid的时候以创建)
redodisk REDDATA磁盘组 raw10 raw4  #存放oracle实例的redo文件 冗余级别normal
arcdisk  ARCDATA磁盘组 raw5 raw6   #存放实例的归档日志文件 冗余级别normal
datadisk ORADATA磁盘组 raw7,raw8,raw9 #存放database的数据文件集 冗余级别high
然后mount all磁盘组
退出samca

最后dbca创建实例
所有的数据存放如上以上磁盘规划来部署
sga=200M pga=100M 最大连接数60,我的内存有限,怕创建实例过不去



#####################################

本文有笔者原创

作者:john

转载请注明出处

原创粉丝点击