RedHat6.7Enterprisex64环境下使用RHCS部署Oracle11gR2双。。。

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类型卷⼤⼩挂载点⽤途备注
内置硬盘标准500MB/boot启动分区
两块内置硬盘作RAID1 LVM
20GB/home⽤户分区
20GB/var⽇志分区
20GB/opt应⽤分区
32GB N/A SWAP分区
500GB/根分区
共享存储LUN500GB/oradata数据库数据区SAN存储分配⼀个500GB的LUN 主机名IP⽹⼝⽤途备注
ZHXYHDB0135.64.6.17bond0(eth0、eth2)业务IP
⼼跳IP和Fence IP应在同⼀⽹段;
通常业务IP和此⼆者不在同⼀⽹段;
此项⽬⼼跳和Fence不在同段但能互通。

50.3.1.200bond1(eth1、eth3)⼼跳IP
50.1.2.221MGMT Fence IP
ZHXYHDB0235.64.6.18bond0(eth0、eth2)业务IP 50.3.1.201bond1(eth1、eth3)⼼跳IP 50.1.2.222MGMT Fence IP 35.64.6.19集群VIP
RedHat6.7Enterprisex64环境下使⽤RHCS部署Oracle11gR2双。

环境
软硬件环境
硬件环境:
浪潮英信服务器NF570M3两台,华为OceanStor 18500存储⼀台,以太⽹交换机两台,光纤交换机两台。

软件环境:
操作系统:Redhat Enterprise Linux 6.7 x64
集群环境:RHCS
数据库:Oracle 11g R2
多路径软件:UltraPath for Linux
存储划分
⽹络规划
集群拓扑
系统预配置
系统安装(略)
存储识别
已在华为OceanStor存储上为本项⽬分配了500GB LUN,只需在两台服务器上分别安装华为OceanStor UltraPath多路径软件,重启后即可正确识别存储裸设备。

/dev/sdb即为识别到的共享存储,在两台服务器上均正确识别存储后,利⽤此共享存储空间创建LVM逻辑卷组和逻辑卷。

以下操作均在其中⼀台服务器上进⾏:
1、使⽤fdisk对/dev/sdb新建磁盘分区sdb1(使⽤全部500GB共享存储空间):
2、将其格式化为ext4⽂件系统格式:
 # mkfs.ext4 /dev/sdb1
在两台服务器上分别创建/oradata⽬录,⽤于挂载共享存储,作为数据库数据区,修改该⽬录权限:
# 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.64.6.17
NETMASK=255.255.255.0
GATEWAY=35.64.6.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 35.64.6.1⽹关、35.64.6.17、35.64.6.18、50.3.1.200、50.1.2.221等所有需要连通的地址。

最后在两台服务器上分别配置HOST⽂件,完成主机名与IP的映射(此步不是必须,如果主机名、⼼跳名⽆关紧要的话):
#/etc/hosts
35.64.6.17 ZHXYHDB01
35.64.6.18 ZHXYHDB02
35.64.6.19 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防⽕墙
关闭防⽕墙
在两台服务器上分别执⾏以下命令:
# service iptables stop
# chkconfig iptables off
关闭SELinux:
修改/etc/selinux/config ⽂件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
Oracle数据库安装
oracle数据库软件需要在两台服务器上分别安装,只安装数据库软件⽽不创建数据库实例。

各种Linux发⾏版上安装Oracle 11g R2的详细需求和过程可参见官⽅⽂档:
https:///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 ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。

⾄于导致系统下降的主要原因为在官⽅建议值:
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 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⽂件末尾。

调整tmpfs⼤⼩
如果内存较⼤,sga target不能超过tmpfs⼤⼩,因此需要将tmpfs调整到⼀个⼤于sga target的值。

编辑/etc/fstab,修改tmpfs⾏:
tmpfs /dev/shm tmpfs defaults,size=25600m 0 0 #如服务器内存32GB,sga target为20GB,则可设置tmpfs为25GB
重新mount并查看tmpfs设置是否⽣效:
[root@cheastrac01:~]$mount -o remount /dev/shm
[root@cheastrac01:~]$df -h
配置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
pdksh-5.2.14(or 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
不勾选也不填邮箱,点下⼀步,弹出提⽰点是。

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

选单节点安装,下⼀步。

默认,下⼀步。

选企业版,下⼀步。

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

下⼀步。

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

监听器配置
切换到oracle账户下使⽤netca进⾏监听器的配置,具体步骤如下:
#oracle账户下操作
# export LANG=en_US #更改系统语⾔为英⽂,避免netca图像界⾯乱码
# netca
打开图形界⾯,⼀路Next即可完成⼀个默认监听器的配置。

配置完成后会⾃动启动监听器,如未⾃动启动请在oracle账户下⼿动启动:
#oracle账户下操作
# lsnrctl start
⾃动配置的监听器只能提供本机(localhost)连接。

这⾥先启⽤⾃动配置的监听器⽤于后续数据库实例的安装和配置。

数据库实例配置
注意:数据库实例需要创建在共享存储上,因此需要先进⾏后⽂中共享存储的挂载后才能开始配置!建议先完成RHCS集群中IP和存储资源的添加并启动集群后再进⾏数据库实例的配置。

在⼀台节点服务器上挂载共享存储,开启监听器,然后在该存储上创建数据库实例,关闭实例,关闭监听器,完成后卸载共享存储。

再将相应的实例配置信息复制到另外⼀台服务器上。

最后在两台节点服务器上分别配置对应于浮动IP的监听器。

这⾥我们在35.64.6.17节点上完成此操作。

具体步骤如下:
root账户下,挂载共享存储:
# mount /dev/oraclevg/oraclelv /oradata
开启oracle监听器(保证监听器已经按照上⽂配置完成):
# lsnrctl start
监听器启动后状态应如下图所⽰:
切换到oracle账户下,开始进⾏实例创建,这⾥使⽤dbca在图形化界⾯创建,以下数据库实例创建和配置均在oracle账户下进⾏:
#oracle账户下操作
# export LANG=en_US #更改系统语⾔为英⽂,避免netca图像界⾯乱码
# dbca
本项⽬需要在节点上创建两个实例,分别为orclcmis和orclebank,以下dbca建库向导需要做两次。

(以下关于数据库实例创建图为⽹上所找,实际配置以图下说明⽂字为准)
(本项⽬实例名应为orclcmis和orclebank)
(本项⽬不启⽤Enterprise Manager)
(本项⽬所有账户使⽤同⼀管理⼝令:Admin123)
(本项⽬数据⽂件的存储设备使⽤⽂件系统,采⽤Oracle管理数据⽂件的模式OMF,路径选择共享存储挂载的路径/oradata)
(本项⽬启⽤闪回区和归档,闪回区⼤⼩40GB,位置为共享存储挂载⽬录/oradata下的flash_recovery_area⽬录)
(本项⽬⼀个实例的内存⼤⼩为总内存的40%[两个实例共占⽤80%],使⽤⾃动内存管理,字符集为GBK)
(本项⽬不安装样本数据库)
完成创建
数据库实例创建完成后使⽤sysdba权限进⼊数据库,开启数据库:
# sqlplus / as sysdba
> startup #环境变量中已经指定了ORACLE_SID,会⾃动启动此实例
进⾏项⽬相关的数据库表空间的创建以及⽤户的创建和授权。

使⽤OMF策略的话,创建表空间的语句更简单:
# CREATE TABLESPACE shop_tb #创建名为shop_tb的表空间
创建⽤户并将其默认表空间设置为上述表空间:
# CREATE USER shop IDENTIFIED BY shop DEFAULT TABLESPACE shop_tb
为⽤户授权:
# grant connect,resource to shop;
# grant create any sequence to shop;
# grant create any table to shop;
# grant delete any table to shop;
# grant insert any table to shop;
# grant select any table to shop;
# grant unlimited tablespace to shop;
# grant execute any procedure to shop;
# grant update any table to shop;
# grant create any view to shop;
完成后关闭数据库和监听器:
> shutdown immediate
# lsnrctl stop
将相关密码⽂件和参数⽂件复制到另外⼀个节点:
# cd $ORACLE_HOME/dbs
# ls
hc_zxbank.dat init.ora lkZXBANK orapwzxbank spfilezxbank.ora
#scp orapwzxbank oracle@35.64.6.18:/opt/oracle/oracle11g/dbs/
#scp spfilezxbank.ora oracle@35.64.6.18:/opt/oracle/oracle11g/dbs/
登陆到另外⼀个节点上,跳转到$ORACLE_BASE⽬录的admin⽬录下实例⽬录下,本项⽬中创建了两个实例,admin⽬录下两实例完整路径为/opt/oracle/admin/orclcmis 和/opt/oracle/admin/orclebank。

在这两个⽬录下分别创建数据库实例启动所需的⽬录。

具体需要创建的⽬录可以对照之前创建数据库实例的节点的相同⽬录。

如:
#cd $ORACLE_BASE/admin/orclcmis
# mkdir {adump,bdump,cdump,dpdump,pfile,udump}
确保两节点的数据库实例和监听器都关闭后,移除/oradataa⽬录的挂载:
# umount /oradata
最后,分别确认⼀下两个节点相关⽬录的权限都是正确的:
# chown -R oracle:oinstall /opt/oracle #两节点分别执⾏
修改监听器配置
先确保两台节点监听器均处于关闭状态,然后在两台节点服务器上分别修改监听器配置⽂件,将远程连接IP设置为集群浮动IP。

本项⽬需要在⼀个监听器上配置两个数据库实例:
#oracle账户下操作
# lsnrctl stop
# vi $ORACLE_HOME/network/admin/listener.ora
# vi $ORACLE_HOME/network/admin/tnsnames.ora
监听器配置⽂件listener.ora修改如下:
# listener.ora Network Configuration File: /opt/oracle/oraclellg/network/admin/listener.ora
# Generated by Oracle configuration tools.
ORCLCMIS =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROCQC))
(ADDRESS = (PROTOCOL = TCP)(HOST = 35.64.6.19 )(PORT = 1521))
)
ORCLEBANK =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROCQC))
(ADDRESS = (PROTOCOL = TCP)(HOST = 35.64.6.19 )(PORT = 1521))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /opt/oracle/oraclellg)
(SID_NAME = ORCLCMIS)
)
(SID_DESC =
(ORACLE_HOME = /opt/oracle/oraclellg)
(SID_NAME = ORCLEBANK)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/oraclellg)
(PROGRAM = extproc)
)
)
监听器配置⽂件tnsnames.ora修改如下:
# tnsnames.ora Network Configuration File: /opt/oracle/oraclellg/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCLEBANK =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 35.64.6.19)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = ORCLEBANK)
)
)
ORCLCMIS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 35.64.6.19)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = ORCLCMIS)
)
)
完成后确保监听器处于关闭状态。

RHCS集群安装与配置
RHCS集群介绍
1. RHCS简介
RHCS是Red Hat Cluster Suite的缩写,即红帽⼦集群套件,RHCS是⼀个能够提供⾼可⽤性、⾼可靠性、负载均衡、存储共享且经济廉价的集群⼯具集合,它将集群系统中三⼤集群架构融合⼀体,可以给web应⽤、数据库应⽤等提供安全、稳定的运2. RHCS集群组成介绍
RHCS是⼀个集群⼯具的集合,主要有下⾯⼏⼤部分组成:
A、分布式集群管理器(CMAN)
Cluster Manager,简称CMAN,是⼀个分布式集群管理⼯具,它运⾏在集群的各个节点上,为RHCS提供集群管理任务。

CMAN⽤于管理集群成员、消息和通知。

它通过监控每个节点的运⾏状态来了解节点成员之间的关系,当集群中某个节点出现故障,节点成员关系将发⽣改变,CMAN及时将这种改变通知底层,进⽽做出相应的调整。

B、锁管理(DLM)
Distributed Lock Manager,简称DLM,表⽰⼀个分布式锁管理器,它是RHCS的⼀个底层基础构件,同时也为集群提供了⼀个公⽤的锁运⾏机制,在RHCS集群系统中,DLM运⾏在集群的每个节点上,GFS通过锁管理器的锁机制来同步访问⽂件系统 DLM不需要设定锁管理服务器,它采⽤对等的锁管理⽅式,⼤⼤的提⾼了处理性能。

同时,DLM避免了当单个节点失败需要整体恢复的性能瓶颈,另外,DLM的请求都是本地的,不需要⽹络请求,因⽽请求会⽴即⽣效。

最后,DLM通过分层机制,可C、配置⽂件管理(CCS)
Cluster Configuration System,简称CCS,主要⽤于集群配置⽂件管理和配置⽂件在节点之间的同步。

CCS运⾏在集群的每个节点上,监控每个集群节点上的单⼀配置⽂件/etc/cluster/cluster.conf的状态,当这个⽂件发⽣任何变化时,都将此变化更 rhcs的配置⽂件是cluster.conf,它是⼀个xml⽂件,具体包含集群名称、集群节点信息、集群资源和服务信息、fence设备等,这个会在后⾯讲述。

D、栅设备(FENCE)
FENCE设备是RHCS集群中必不可少的⼀个组成部分,通过FENCE设备可以避免因出现不可预知的情况⽽造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本⾝的硬件管理接⼝,或者外部电 FENCE的⼯作原理是:当意外原因导致主机异常或者宕机时,备机会⾸先调⽤FENCE设备,然后通过FENCE设备将异常主机重启或者从⽹络隔离,当FENCE操作成功执⾏后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服 RHCS的FENCE设备可以分为两种:内部FENCE和外部FENCE,常⽤的内部FENCE有IBM RSAII卡,HP的iLO卡,还有IPMI的设备等,外部fence设备有UPS、SAN SWITCH、NETWORK SWITCH等
E、⾼可⽤服务管理器
⾼可⽤性服务管理主要⽤来监督、启动和停⽌集群的应⽤、服务和资源。

它提供了⼀种对集群服务的管理能⼒,当⼀个节点的服务失败时,⾼可⽤性集群服务管理进程可以将服务从这个失败节点转移到其它健康节点上来,并且这种服务转移能⼒是⾃ RHCS通过rgmanager来管理集群服务,rgmanager运⾏在每个集群节点上,在服务器上对应的进程为clurgmgrd。

在⼀个RHCS集群中,⾼可⽤性服务包含集群服务和集群资源两个⽅⾯,集群服务其实就是应⽤服务,例如apache、mysql等,集群资源有很多种,例如⼀个IP地址、⼀个运⾏脚本、ext3/GFS⽂件系统等。

在RHCS集群中,⾼可⽤性服务是和⼀个失败转移域结合在⼀起的,所谓失败转移域是⼀个运⾏特定服务的集群节点的集合。

在失败转移域中,可以给每个节点设置相应的优先级,通过优先级的⾼低来决定节点失败时服务转移的先后顺序,如果没有F、集群配置管理⼯具
RHCS提供了多种集群配置和管理⼯具,常⽤的有基于GUI的system-config-cluster、Conga等,也提供了基于命令⾏的管理⼯具。

system-config-cluster是⼀个⽤于创建集群和配置集群节点的图形化管理⼯具,它有集群节点配置和集群管理两个部分组成,分别⽤于创建集群节点配置⽂件和维护节点运⾏状态。

⼀般⽤在RHCS早期的版本中。

Conga是⼀种新的基于⽹络的集群配置⼯具,与system-config-cluster不同的是,Conga是通过web⽅式来配置和管理集群节点的。

Conga有两部分组成,分别是luci和ricci,luci安装在⼀台独⽴的计算机上,⽤于配置和管理集群,ricci安装在每个集群 RHCS也提供了⼀些功能强⼤的集群命令⾏管理⼯具,常⽤的有clustat、cman_tool、ccs_tool、fence_tool、clusvcadm等,这些命令的⽤法将在下⾯讲述。

G、 Redhat GFS
GFS是RHCS为集群系统提供的⼀个存储解决⽅案,它允许集群多个节点在块级别上共享存储,每个节点通过共享⼀个存储空间,保证了访问数据的⼀致性,更切实的说,GFS是RHCS提供的⼀个集群⽂件系统,多个节点同时挂载⼀个⽂件系统分区为了实现多个节点对于⼀个⽂件系统同时读写操作,GFS使⽤锁管理器来管理I/O操作,当⼀个写进程操作⼀个⽂件时,这个⽂件就被锁定�%@C�此时不允许其它进程进⾏读写操作,直到这个写进程正常完成才释放锁,只有当锁被释放后,其它读在搭建RHCS集群时,GFS⼀般作为共享存储,运⾏在每个节点上,并且可以通过RHCS管理⼯具对GFS进⾏配置和管理。

这些需要说明的是RHCS和GFS之间的关系,⼀般初学者很容易混淆这个概念:运⾏RHCS,GFS不是必须的,只有在需要共享 RHCS集群安装
在两台服务器上分别按照RHCS集群:
查询是否存在RHCS相关组件的yum源:
# yum grouplist
#是否存在High Availability和High Availability Management
#中⽂环境下则为‘⾼可⽤性’和‘⾼可⽤性管理’
如成功,则安装RHCS HA组件:
# yum –y groupinstall "High Availability Management" "High Availability"
#中⽂环境下为:# yum –y groupinstall "⾼可⽤性" "⾼可⽤性管理"
安装完成后,如果集群需要使⽤共享存储,则需要额外安装配置lvm2-cluster:
# yum -y install lvm2-cluster
配置lvm2-cluster:
编辑/etc/lvm/lvm.conf⽂件,修改:locking_type = 3
RHCS集群配置
luci是RHCS默认的集群管理⼯具,可以完成集群的创建及管理⼯作。

集群启动:
在两台服务器上分别启动集群软件:
# service ricci start #启动集群软件,会⾃动启动cman和rgmanager
# service cman start #如果已启动ricci,可⽆需执⾏此语句
# service rgmanager start #如果已启动ricci,可⽆需执⾏此语句
# chkconfig cman on
# chkconfig rgmanager on
# chkconfig ricci on #设置集群软件开机⾃动启动
# passwd ricci #设置集群节点密码
在其中⼀台服务器上安装luci集群管理⼯具并启动:
# service luci start #启动集群管理⼯具
# chkconfig luci on #设置luci开机启动
共享存储挂载
此步骤需要在集群节点配置完成后(添加集群资源前)再执⾏。

以下操作在两台服务器上分别执⾏,:
1、创建挂载共享存储的⽬录:
# mkdir /oradata #创建⽬录⽤于存储的挂载
2、启动lvm2-cluster服务:
# service clvmd start #需先启动上述集群服务后才可启动clvmd服务
# chkconfig clvmd on
以下操作在其中⼀台服务器上执⾏:
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
4、查看卷组和逻辑卷状态,如果显⽰为不可⽤(NOT Available),则需要激活卷组:
# vgdisplay
# lvdisplay
# vgchange -a y oraclevg #只在⼀台服务器上执⾏,如果vg或者lv状态为不可⽤,均激活vg即可,如果重启后状态⼜不可⽤,则需要将此命令写⼊/etc/rc.local中开机启动 
5、查看lvm2-cluster是否识别到共享存储的卷组(注意:必须在clvmd服务启动后才能进⾏vg和lv的创建,否则lvm2-cluster将⽆法识别,vg和lv将⽆法添加到集群资源组
中):
# vgdisplay
# lvdisplay
# vgchange -a y oraclevg #如果vg或者lv状态为不可⽤,均激活vg即可,如果重启后状态⼜不可⽤,则需要将此命令写⼊/etc/rc.local中开机启动
# service clvmd status #clvmd服务的状态必须如下才表⽰正确识别了⽤于集群的vg和lv
clvmd (pid 7978)正在运⾏...
 Clustered Volume Groups: oraclevg
Active clustered Logical Volumes: oraclelv
此步骤完成后可以开始数据库实例的创建和配置,然后再进⾏集群的脚本资源的添加,将数据库加⼊资源组中。

集群配置:
1、集群创建(节点添加)
启动luci服务后即可使⽤浏览器打开luci进⾏集群创建和管理了。

地址为:
https://35.64.6.17:8084 #⽤户名和密码与系统root账号相同
点击create创建集群:
配置说明:
cluster name:给集群添加⼀个命名即可。

然后分别添加两个节点:
Use the Same Password for All Nodes:所有节点使⽤相同的节点管理密码,建议勾选。

Node Name:节点名,与/etc/hosts⽂件中⼼跳IP的对应命名相同即可。

也可以直接填写⼼跳IP。

(两节点分别填写)
Password:节点管理密码,随便设置,建议与系统root密码相同。

Ricci Hostname:ricci主机名,默认与节点名相同,不⽤更改。

Ricci Port:ricci端⼝,默认11111即可。

节点添加完成后继续配置:
Download Packages:使⽤⽹络下载所需的相关包。

Use Locally Installed Packages:使⽤本地已安装的包,选择此项。

Reboot Nodes Before Joining Cluster:主机节点加⼊集群前先重启,建议不勾选。

Enable Shared Storage Support:共享存储⽀持,如果需要使⽤共享存储,需要勾选此项。

(此项需要系统安装lvm2-cluster并启动clvmd服务)
点击Create Cluster创建集群,ricci会⾃动启动添加的节点服务器上的集群软件(cman和rgmanager),成功后即可完成集群的创建和节点的添加。

集群创建完成后如图:
2、Fence设备添加
Fence设备可以防⽌集群资源(例如⽂件系统)同时被多个节点占有,保护了共享数据的安全性和⼀致性节,同时也可以防⽌节点间脑裂的发⽣。

(Fence设备并⾮不可缺少,通常也可以使⽤仲裁盘代替Fence设备,本项⽬使⽤Fence⽅案)
切换到“Fence Devices”选项,“Add”添加两个Fence设备,对于华为浪潮等国产服务器,服务器本⾝的IPMI管理系统(MGMT管理⼝)即可充当Fence设备。

以添加其中⼀个Fence设备为例:
选择IPMI Lan:
Fence Type:Fence类型,本项⽬使⽤IPMI;
Name:给Fence设备取个名字;
IP Address or Hostname:Fence设备IP地址或者设备名,这⾥直接填IP地址,即服务器管理⼝IP;
Login:Fence设备登陆账号,华为服务器通常是root/Huawei12#$,浪潮服务器可能是admin/admin,或者root/superuser等等。

Password:Fence设备登陆密码,如上;
Password Script:密码脚本,⽆视;
Authentication Type:认证类型,选择密码认证或者None;
Use Lanplus:部分服务器机型需要勾选此项Fence才可正常⼯作,建议做切换测试时根据测试结果选择是否勾选;
Privilege Level:需要操作权限在Opretor以上,⼀般default即可。

其他的可以不⽤管了,“submit”提交即可。

两个Fence均创建完成后如图:
【注意】部分服务器IPMI⼝系统未⾃动启⽤ssh服务,需要登录到IPMI管理系统启⽤服务,否则fence配置⽆⽤!
Fence设备配置完成后,需要在Nodes页⾯为每个node指定相对应的Fence Device,如图:
最后可以通过以下命令验证Fence是否可⽤:
# fence_ipmilan -v -P -a 50.1.2.221 -l admin -p admin -o status #通过fence设备查看主机状态, -o reboot可重启。

3、Failover Domains失败转移域创建
Failover Domains是配置集群的失败转移域,通过失败转移域可以将服务和资源的切换限制在指定的节点间。

切换到“Failover Domains”选项,点击“add”,配置如下:
Name:给失败转移域策略取⼀个名字;
prioritized: 是否启⽤域成员节点优先级设置,这⾥启⽤;
Restricted:是否只允许资源在指定的节点间切换,这⾥只有两个节点互相切换,是否启⽤都⾏;
No Failback:是否启⽤故障回切功能,即当⾼优先级节点失效,资源切换到其他节点,⽽⾼优先级节点重新恢复正常时,资源是否再次切换回⾼优先级节点,这⾥选择不回切,即启⽤No Failback;
Member:选择失败转移域的成员,本项⽬只有两个节点,均勾选;
Priority:成员节点优先级,值越低优先级越⾼。

⾼优先级通常作为主节点。

点击“Create”完成失败转移域创建,完成后如图:
4、添加资源
Resources是集群的核⼼,主要包含服务脚本、IP地址、⽂件系统等,本项⽬只涉及IP地址、⽂件系统和脚本的添加。

IP地址添加
“Add”选择添加IP Address:
IP Address:IP地址,通常作为集群浮动IP;
Netmask Bits:⼦⽹掩码,本项⽬中是255.255.255.0,即24;
其他默认即可。

点击“Submit”提交。

⽂件系统添加
由于之前我们将使⽤的共享存储做成了lvm逻辑卷系统,因此在添加⽂件系统时需要先添加HA LVM,注意启⽤HA LVM需要确保lvm2-cluster服务启动。

之前创建的逻辑卷组为oraclevg,逻辑卷为oraclelv,因此添加HA LVM如下:
Name:给HA LVM取个名字;
Volume Group Name:共享存储的卷组名,这⾥为oraclevg;
Logical Volume Name:需要添加的逻辑卷名,这⾥为oraclelv;
Fence the Node if It is Unable to Clean Up LVM Tags:当节点LVM标记⽆法清除时认为节点脑裂,这⾥不启⽤。

点击“Submit”提交。

然后再添加⽂件系统:
Name:给⽂件系统取个名字;
Filesystem Type:指定⽂件系统类型,之前创建逻辑卷时将其格式化为ext4格式了,可以选择ext4,也可以选Autodetect⾃动检测;
Mount Point:设备挂载位置。

选择之前创建好的⽬录/oradata,逻辑卷将⾃动挂载在当前主节点的该⽬录上;
Device,FS Label, or UUID:需要挂载的设备,本项⽬使⽤的是LVM逻辑卷,所以这⾥填写逻辑卷路径即可:/dev/oraclevg/oraclelv;
Mount Options和Filesystem ID⽆视即可。

Force Unmount:是否强制卸载,集群切换时挂载的设备有时候会因为资源占⽤等问题⽆法卸载,导致集群切换失败,这⾥启⽤强制卸载,可以防⽌此问题发⽣;
Force fsck:是否强制⽂件系统检查,⽂件系统检查会拖慢集群切换时间,这⾥不启⽤;
Enable NFS daemon and lockd workaround:启⽤NFS守护进程和上锁的解决⽅法,⽆视;
Use Quick Status Checks:使⽤快速状态检查,⽆视;
Reboot Host Node if Unmount Fails:设备卸载失败时是否重启该节点,同样可以防⽌设备卸载失败导致集群切换失败的问题,可以勾选,这⾥⽆视。

点击“Submit”提交。

脚本添加
本项⽬添加的脚本主要⽤于控制集群切换时oracle数据库监听器和实例的起停。

RHCS集群对于脚本有专门的格式要求,通常需要有start、stop等函数进⾏⾃动调⽤。

脚本应当先分别保存在两节点的/etc/init.d⽬录下并赋予可执⾏权限,如本项⽬脚本名为dbora,使⽤root账户创建并授权:
# chmod 755 /etc/init.d/dbora
dbora脚本内容如下(针对双实例的脚本),脚本可以在加⼊集群资源组之前单独运⾏进⾏测试,如/etc/init.d/dbora start:
#!/bin/bash
export ORACLE_HOME=/opt/oracle/oraclellg
start() {
echo"Starting Listener...."
$ORACLE_HOME/bin/lsnrctl start
su - oracle<<EOF
export ORACLE_SID=orclcmis
echo"Starting Oraclellg Server INSTANCE ORCLCMIS... "
sqlplus / as sysdba
startup
exit;
EOF
su - oracle<<EOF
export ORACLE_SID=orclebank
echo"Starting Oraclellg Server INSTANCE ORCLEBANK... "
sqlplus / as sysdba
startup
exit;
EOF
}
stop() {
su - oracle<<EOF
export ORACLE_SID=orclcmis
echo"Shutting down Oraclellg Server ORCLCMIS..."
sqlplus / as sysdba
shutdown immediate;
exit
EOF
su - oracle<<EOF。

相关文档
最新文档