RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

环境   软硬件环境   硬件环境:

  浪潮英信服务器NF570M3两台,华为OceanStor 18500存储一台,以太网交换机两台,光纤交换机两台。

  软件环境:

  操作系统:RedHat Enterprise Linux 6.7 x64

  集群环境:RHCS

  数据库:Oracle 11g R2

  多路径软件:UltraPath for Linux

  存储划分 类型     大小   挂载点   用途   备注  
内置硬盘   标准   500MB   /boot   启动分区  

两块内置硬盘作RAID1

 
LVM   20GB   /home   用户分区  
20GB   /var   日志分区  
20GB   /opt   应用分区  
32GB   N/A   SWAP分区  
500GB   /   根分区  
共享存储   LUN   500GB   /oradata   数据库数据区   SAN存储分配一个500GB的LUN  

  

  网络规划 主机名   IP   网口   用途   备注  
ZHXYHDB01   35.1.1.250   bond0(eth0、eth2)   业务IP  

心跳IP和Fence IP应在同一网段;

通常业务IP和此二者不在同一网段;

 
50.3.1.200   bond1(eth1、eth3)   心跳IP  
50.3.1.202   MGMT   Fence IP  
ZHXYHDB02   35.1.1.251   bond0(eth0、eth2)   业务IP  
50.3.1.201   bond1(eth1、eth3)   心跳IP  
50.3.1.203   MGMT   Fence IP  
    35.1.1.245       集群VIP  
  集群拓扑

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

系统预配置   系统安装(略)   存储识别

  已在华为OceanStor存储上为本项目分配了500GB LUN,只需在两台服务器上分别安装华为OceanStor UltraPath多路径软件,重启后即可正确识别存储裸设备。

  

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  /dev/sdb即为识别到的共享存储,在两台服务器上均正确识别存储后,利用此共享存储空间创建LVM逻辑卷组和逻辑卷。以下操作均在其中一台服务器上进行

  1、使用fdisk对/dev/sdb新建磁盘分区sdb1(使用全部500GB共享存储空间):

  

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  2、将其格式化为ext4文件系统格式:

 # mkfs.ext4 /dev/sdb1

  3、新建LVM卷组oraclevg,将/dev/sdb1创建为物理卷并加入卷组中,在卷组中创建逻辑卷oraclelv:

# pvcreate /dev/sdb1 # vgcreate oraclevg /dev/sdb1 # lvcreate -n oraclelv -L +500G /dev/oraclevg #可通过vgdisplay查看vg全部剩余PE,然后使用‘-l PE数’参数将vg全部剩余空间加入lv中,而无须使用-L +xxGB的方式 # mkfs.ext4 /dev/oraclevg/oraclelv
# mkdir /oradata
#

  在两台服务器上分别创建/oradata目录,用于挂载oraclelv逻辑卷,作为数据库数据区,修改该目录权限:

# mkdir /oradata
# chown oracle:oinstall /oradata

  网络配置

  网络配置需按照网络规划表在两台服务器上分别配置,正式配置前先关闭NetworkManager服务:

# service networkmanager stop # chkconfig networkmanager off

  业务IP和心跳IP均作网卡绑定,业务IP配置网关,心跳IP不配网关。在/etc/sysconfig/network-scripts目录下新建ifcfg-bond0和ifcfg-bond1,以业务IP配置为例,网卡绑定配置如下:

  ifcfg-bond0:

 

DEVICE=bond0 NAME=bond0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet IPADDR=35.1.1.250 NETMASK=255.255.255.0 GATEWAY=35.1.1.1 #如果是心跳IP则不能配置此行 BONDING_OPTS="miimon=100 mode=1"

 

  ifcfg-eth0:

DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none SLAVE=yes MASTER=bond0

  ifcfg-eth2:

DEVICE=eth2 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none SLAVE=yes MASTER=bond0

  然后在/etc/modprobe.d/目录下新建bonding.conf文件,加入如下内容:

alias bond0 bonding alias bond1 bonding

  关闭NetworkManager服务,重启network服务:

# service NetworkManager stop # chkconfig NetworkManager off # service network restart

  HA集群所需的Fence设备在本项目中可以直接使用浪潮服务器自带的IPMI,即MGMT管理口的服务器管理系统。Fence IP���配置需要重启服务器,进入BIOS中的Advance选项的IPMI或者BMC项中配置,此处建议配置网关。同样需要在两台服务器上分别配置。

  检查网络是否调通,在两台服务器上分别ping 110.1.5.1网关、110.1.5.61--110.1.5.66的全部地址以及需要连通的其他网段地址。

  最后在两台服务器上分别配置HOST文件,完成主机名与IP的映射(此步不是必须,如果主机名、心跳名无关紧要的话):

#/etc/hosts 35.1.1.250 ZHXYHDB01 35.1.1.251 ZHXYHDB02 35.1.1.245 ZHXYHDB 50.3.1.200 ZHXYHDB01-PRIV 50.3.1.201 ZHXYHDB02-PRIV

  YUM本地源配置

  本地源用于方便后续的RHCS集群软件以及oracle所需软件包的安装。需要在两台服务器上分别配置

  两台服务器上分别挂载RedHat 6.7系统镜像:

# mount -o loop redhat6.7.iso /mnt/iso

  在/etc/yum.repos.d目录下新建rhel6.7.repo文件,写入如下内容:

#rhel6.7.repo
[Server] name
=RHELServer baseurl=file:///mnt/iso/Server enabled=1 gpgcheck=0 [ResilientStorage] name=RHELResilientStorage baseurl=file:///mnt/iso/ResilientStorage enabled=1 gpgcheck=0 [ScalableFileSystem] name=RHELScalableFileSystem baseurl=file:///mnt/iso/ScalableFileSystem enabled=1 gpgcheck=0 [HighAvailability] name=RHELHighAvailability baseurl=file:///mnt/iso/HighAvailability enabled=1 gpgcheck=0 [LoadBalancer] name=RHELLoadBalancer baseurl=file:///mnt/iso/LoadBalancer enabled=1 gpgcheck=0

 

# yum clean all #终端输入此命令更新源

  关闭SELinux和iptables防火墙

  1、关闭防火墙

  在两台服务器上分别执行以下命令:

# service iptables stop # chkconfig iptables off

  2、关闭SELinux:

修改/etc/selinux/config 文件 将SELINUX=enforcing改为SELINUX=disabled 重启机器即可

Oracle数据库安装

  oracle数据库软件需要在两台服务器上分别安装,只安装数据库软件而不创建数据库实例。各种Linux发行版上安装Oracle 11g R2的详细需求和过程可参见官方文档:

https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm

  下面是本项目的Oracle数据库完整安装过程。

  数据库安装前配置   新建oracle用户和组

# groupadd oinstall # groupadd dba # useradd -g oinstall -G dba oracle # passwd oracle

  配置oracle内核参数

  内核参数配置在/etc/sysctl.conf文件中,配置参数说明:

在安装Oracle的时候需要调整linux的内核参数,但是各参数代表什么含义呢,下面做详细解析。 Linux安装文档中给出的最小值: fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4294967295 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 各参数详解: kernel.shmmax: 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。 官方建议值: 32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。32位系统对SGA大小有限制,所以SGA肯定可以包含在单个共享内存段中。 64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,如果为12GB物理内存,可取12*1024*1024*1024-1=12884901887,SGA肯定会包含在单个共享内存段中。 kernel.shmall: 该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)。这时可以将shmmax参数调整到16G了,同时可以修改SGA_MAX_SIZE和SGA_TARGET为12G(您想设置的SGA最大大小,当然也可以是2G~14G等,还要协调PGA参数及OS等其他内存使用,不能设置太满,比如16G) kernel.shmmni: 该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。 fs.file-max: 该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。 fs.aio-max-nr: 此参数限制并发未完成的请求,应该设置避免I/O子系统故障。 推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个。 kernel.sem: 以kernel.sem = 250 32000 100 128为例: 250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。 32000是参数semmns的值,表示系统内可允许的信号量最大数目。 100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。 128是参数semmni的值,表示系统信号量集合总数。 net.ipv4.ip_local_port_range: 表示应用程序可使用的IPv4端口范围。 net.core.rmem_default: 表示套接字接收缓冲区大小的缺省值。 net.core.rmem_max: 表示套接字接收缓冲区大小的最大值。 net.core.wmem_default: 表示套接字发送缓冲区大小的缺省值。 net.core.wmem_max: 表示套接字发送缓冲区大小的最大值。

 

  其中kernel.shmmax关系到Oracle数据库的系统全局区SGA的最大大小,kernel.shmmax值不能小于SGA的大小,否则后面设置SGA时会因为kernel.shmmax太小而出错。kernel.shmmax的大小需要根据当前系统环境的内存大小和Oracle数据库的SGA所期望的大小进行设定。SGA和PGA大小的设定原则为:

 

Oracle官方文档推荐: MEMORY_TARGET=物理内存 x 80% MEMORY_MAX_SIZE=物理内存 x 80% 对于OLTP系统: SGA_TARGET=(物理内存 x 80%) x 80% SGA_MAX_SIZE=(物理内存 x 80%) x 80% PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 20% 对于DSS系统: SGA_TARGET=(物理内存 x 80%) x 50% SGA_MAX_SIZE=(物理内存 x 80%) x 50% PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 50%

  本项目中服务器内存为32G,为SGA设置最大值为20G,因此将Oralce数据库内核参数配置为:

#oracle fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 5242880 kernel.shmmax = 21474836480 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

  将以上代码加入/etc/sysctl.conf文件的末尾,并在终端输入sysctl -p 命令使配置立即生效。

  配置Oracle系统资源限制

  系统资源限制文件为/etc/security/limits.conf,该文件说明如下:

limits.conf的格式如下:   username|@groupname type resource limit   username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。   type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。   resource:   core - 限制内核文件的大小   date - 最大数据大小   fsize - 最大文件大小   memlock - 最大锁定内存地址空间   nofile - 打开文件的最大数目   rss - 最大持久设置大小   stack - 最大栈大小   cpu - 以分钟为单位的最多 CPU 时间   noproc - 进程的最大数目   as - 地址空间限制   maxlogins - 此用户允许登录的最大数目   要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:   session required /lib/security/pam_limits.so

  本项目的Oracle资源限制设置为:

oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536

  将以上代码加入/etc/security/limits.conf文件末尾。

  配置Oracle环境变量

  1、创建Oracle相关目录并更改相关权限:

# mkdir -p /opt/oracle/oracle11g # mkdir -p /opt/oraInventory # chown -R oracle:oinstall /opt/oracle # chmod -R 775 /opt/oracle # chown -R oracle:oinstall /opt/oraInventory # chmod -R 775 /opt/oraInventory

  2、配置Oracle环境变量:

  在/etc/profile文件末尾加入如下内容:

#Oracle export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/oracle11g export ORACLE_SID=zxbank #本项目的oracle实例名 export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

  终端输入如下命令使配置生效:

# . /etc/profile

  安装相关软件包

  Oracle数据库软件的安装和运行需要依赖部分第三方软件包,安装Oracle数据库前需要先安装这些软件包,根据Oracle官方安装文档,RedHat 6.7环境需要安装的软件包有:

binutils-2.20.51.0.2-5.11.el6 (x86_64) compat-libcap1-1.10-1 (x86_64) compat-libstdc++-33-3.2.3-69.el6 (x86_64) compat-libstdc++-33-3.2.3-69.el6.i686 elfutils-libelf-0.161-3.el6(x86_64) elfutils-0.161-3.el6(x86_64) elfutils-devel-0.161-3.el6(x86_64) elfutils-libs-0.161-3.el6(x86_64) elfutils-libelf-devel-0.161-3(el6.x86_64) gcc-4.4.4-13.el6 (x86_64) gcc-c++-4.4.4-13.el6 (x86_64) glibc-2.12-1.7.el6 (i686) glibc-2.12-1.7.el6 (x86_64) glibc-devel-2.12-1.7.el6 (x86_64) glibc-devel-2.12-1.7.el6.i686 ksh libgcc-4.4.4-13.el6 (i686) libgcc-4.4.4-13.el6 (x86_64) libstdc++-4.4.4-13.el6 (x86_64) libstdc++-4.4.4-13.el6.i686 libstdc++-devel-4.4.4-13.el6 (x86_64) libstdc++-devel-4.4.4-13.el6.i686 libaio-0.3.107-10.el6 (x86_64) libaio-0.3.107-10.el6.i686 libaio-devel-0.3.107-10.el6 (x86_64) libaio-devel-0.3.107-10.el6.i686 make-3.81-19.el6 sysstat-9.0.4-11.el6 (x86_64) unixODBC-2.2.14-11.el6 (x86_64) or later unixODBC-2.2.14-11.el6.i686 or later unixODBC-devel-2.2.14-11.el6 (x86_64) or later unixODBC-devel-2.2.14-11.el6.i686 or later

  以上包均可通过使用yum命令从之前配置好的本地源中安装。

  【注】:安装软件包技巧:软件包版本号无须完全一致,也无须一个个安装,只需利用通配符进行批量安装即可,如安装unixODBC的相关包,可直接使用

# yum -y install unixODBC*

  命令一步到位,不会产生软件包漏装的问题。正式安装Oracle数据库时会有一个检查系统环境是否满足需求的过程,如果提示部分软件包没有安装,则在root账户下使用yum进行安装即可,如果只是软件包版本不对则可直接忽略。

  Oracle数据库正式安装

  切换到oracle用户下:

# su - oracle

  将系统变量LANG暂时设置为英文,以免安装界面出现中文字符无法显示:

# export LANG=en_US

  解压Oracle安装包,执行runInstaller进行图文界面安装。

# cd database # ./runInstaller

  

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  不勾选也不填邮箱,点下一步,弹出提示点是。

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  选只安装数据库软件,下一步。

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  选单节点安装,下一步。

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  默认,下一步。

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  选企业版,下一步。

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  之前预安装配置没问题的话,这里会自动填上安装路径,直接下一步。

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  下一步。

RedHat Enterprise Linux 6.7 x64环境下使用RHCS部署Oracl

  确定告警的这些包是否已经安装,如果都只是依赖包的版本问题,直接勾选‘Ingore all’,然后点Finish即可完成安装,完成后按要求使用root账号运行两个脚本。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/05a5d550faac9e478b1f476933971e8c.html