在 RHEL 5.5 下应用 RHCS 实现 Oracle HA

news/2024/7/9 20:25:08 标签: oracle, service, 集群, 脚本, plugins, file

具体的网络配置过程我就不在这里罗嗦了,基本跟 Oracle RAC 相同,每个节点两个网卡其中一个做心跳线。两个节点的 /etc/hosts 配置文件内容一致,内容如下:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
10.10.6.203 testrac1
192.168.122.101 testrac1-priv

10.10.6.207 testrac2
192.168.122.102 testrac2-priv

10.10.6.208 testHA

2. 存储配置

在 MSA2312fc 控制界面下划分一个 150G 的空间给两个节点,然后解决多路径问题并进行分区和格式化操作。具体的操作请参见这篇文章。

3.安装和配置 RHCS

RHEL 5.5 的安装光盘镜像中包含了安装 RHCS 所有需要的安装包,配置 yum 安装源,然后进行安装。在每个节点上都执行如下操作:

[root@testrac1 ~]# vi /etc/yum.repos.d/aeon.repo
[Server]
name=Server
baseurl=file:///redhat/Server
enabled=1
gpgcheck=0
gpgkey=

[Cluster]
name=Cluster
baseurl=file:///redhat/Cluster
enabled=1
gpgcheck=0
gpgkey=

[ClusterStorage]
name=ClusterStorage
baseurl=file:///redhat/ClusterStorage
enabled=1
gpgcheck=0
gpgkey=

[VT]
name=VT
baseurl=file:///redhat/VT
enabled=1
gpgcheck=0
gpgkey=

[root@testrac1 ~]#

[root@testrac1 /]# cd media/
[root@testrac1 media]# mount -o loop RHEL_5.5_X86_64.iso /redhat

[root@testrac1 media]# yum clean all
Loaded plugins: rhnplugin, security
Cleaning up Everything
[root@testrac1 media]#

[root@testrac1 media]# yum groupinstall Clustering
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Group Process
Resolving Dependencies

... ...

Installed:
Cluster_Administration-en-US.noarch 0:5.2-1 cluster-cim.x86_64 0:0.12.1-2.el5 cluster-snmp.x86_64 0:0.12.1-2.el5
ipvsadm.x86_64 0:1.24-10 luci.x86_64 0:0.12.2-12.el5 modcluster.x86_64 0:0.12.1-2.el5
piranha.x86_64 0:0.8.4-16.el5 rgmanager.x86_64 0:2.0.52-6.el5 ricci.x86_64 0:0.12.2-12.el5
system-config-cluster.noarch 0:1.0.57-3

Dependency Installed:
cman.x86_64 0:2.0.115-34.el5 httpd.x86_64 0:2.2.3-43.el5 net-snmp.x86_64 1:5.3.2.2-9.el5
oddjob.x86_64 0:0.27-9.el5 oddjob-libs.x86_64 0:0.27-9.el5 openais.x86_64 0:0.80.6-16.el5
perl-Net-Telnet.noarch 0:3.03-5 perl-XML-LibXML.x86_64 0:1.58-6 perl-XML-LibXML-Common.x86_64 0:0.13-8.2.2
perl-XML-NamespaceSupport.noarch 0:1.09-1.2.1 perl-XML-SAX.noarch 0:0.14-8 pexpect.noarch 0:2.3-3.el5
php.x86_64 0:5.1.6-27.el5 php-cli.x86_64 0:5.1.6-27.el5 php-common.x86_64 0:5.1.6-27.el5
python-imaging.x86_64 0:1.1.5-5.el5 tix.x86_64 1:8.4.0-11.fc6 tkinter.x86_64 0:2.4.3-27.el5
tog-pegasus.x86_64 2:2.9.1-2.el5

Complete!
[root@testrac1 media]#

[root@testrac1 media]# chkconfig --add cman
[root@testrac1 media]# chkconfig --add rgmanager

[root@testrac1 media]# chkconfig cman on
[root@testrac1 media]# chkconfig rgmanager on

在节点1的图形界面下打开 system-config-cluster 工具进行相应的 RHCS 配置,依次执行如下操作:创建 cluster ,添加节点,配置 fence 设备(如果没有可以不设置),创建故障域,田间节点到故障域,添加三种资源,创建服务(通过服务把故障域和资源整合在一起),请注意添加资源顺序,首先是文件系统,然后是 IP 资源,最后是脚本资源。保存配置文件,并把该配置文件复制到节点2的相同目录下。具体的 /etc/cluster/cluster.conf 配置内容如下:

<?xml version="1.0"?>
<cluster alias="OracleHA" config_version="15" name="OracleHA">
<fence_daemon post_fail_delay="0" post_join_delay="3"/>
<clusternodes>
<clusternode name="testrac1-priv" nodeid="1" votes="1">
<fence/>
</clusternode>
<clusternode name="testrac2-priv" nodeid="2" votes="1">
<fence/>
</clusternode>
</clusternodes>
<cman expected_votes="1" two_node="1"/>
<fencedevices/>
<rm>
<failoverdomains>
<failoverdomain name="Failover_Oracle" ordered="0" restricted="1">
<failoverdomainnode name="testrac2-priv" priority="1"/>
<failoverdomainnode name="testrac1-priv" priority="1"/>
</failoverdomain>
</failoverdomains>
<resources>
<fs device="/dev/mapper/mpath0p1" force_fsck="0" force_unmount="1" fsid="15674" fstype="ext3" mountpoint="/oradata" name="oradata" options="" self_fence="0"/>
<ip address="10.10.6.208" monitor_link="1"/>
<script file="/etc/init.d/dbora" name="ora_script"/>
</resources>
<service autostart="1" domain="Failover_Oracle" name="OracleHA_Service" recovery="relocate">
<ip ref="10.10.6.208"/>
<fs ref="oradata"/>
<script ref="ora_script"/>
</service>
</rm>
</cluster>

4.安装 Oracle (无实例)

在两个节点上分别安装 Oracle 软件,具体的安装过程我请参考这篇文章。

两个节点上的 oracle 用户的 ORACLE 相关环境变量设置如下:

ORACLE_BASE=/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
ORACLE_SID=hatest

5.启动 RHCS 集群

首先我们需要启动 RHCS 集群,需要说明的是,RHCS 集群的启动顺序是在各个节点上依次启动 cman 和 rgmanager 服务,如果想关闭 RHCS 集群,那么请在各个节点上依次关闭 rgmanager 和 cman 服务,顺序是相反的。集群启动成功后,需要把资源转移到节点1上去。具体操作如下:

[root@testrac1 media]# service cman start
Starting cluster:
Loading modules... done
Mounting configfs... done
Starting ccsd... done
Starting cman... done
Starting daemons... done
Starting fencing... done
[ OK ]
[root@testrac1 media]# service rgmanager start
Starting Cluster Service Manager: [ OK ]
[root@testrac1 media]#

[root@testrac2 ~]# service cman start
Starting cluster:
Loading modules... done
Mounting configfs... done
Starting ccsd... done
Starting cman... done
Starting daemons... done
Starting fencing... done
[ OK ]
[root@testrac2 ~]# service rgmanager start
Starting Cluster Service Manager: [ OK ]
[root@testrac1 media]#

[root@testrac1 media]# clustat
Cluster Status for OracleHA @ Mon Oct 10 17:31:24 2011
Member Status: Quorate

Member Name ID Status
------ ---- ---- ------
testrac1-priv 1 Online, Local, rgmanager
testrac2-priv 2 Online, rgmanager

Service Name Owner (Last) State
------- ---- ----- ------ -----
service:OracleHA_Service testrac2-priv started
[root@testrac1 media]#
[root@testrac1 media]# clusvcadm -r OracleHA_Service -m testrac1-priv
Trying to relocate service:OracleHA_Service to testrac1-priv...Success
service:OracleHA_Service is now running on testrac1-priv
[root@testrac1 media]#
[root@testrac1 media]# clustat
Cluster Status for OracleHA @ Mon Oct 10 17:32:05 2011
Member Status: Quorate

Member Name ID Status
------ ---- ---- ------
testrac1-priv 1 Online, Local, rgmanager
testrac2-priv 2 Online, rgmanager

Service Name Owner (Last) State
------- ---- ----- ------ -----
service:OracleHA_Service testrac1-priv started
[root@testrac1 media]#

6.安装 Oracle 实例

由于我们把 Oracle HA 环境的实例安装到共享存储上,所以我们只需要在节点1上安装实例到共享存储上即可。首先,查看共享存储是否通过 RHCS 集群挂载到 /oradata 目录下:

[root@testrac1 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
/media/RHEL_5.5_X86_64.iso on /redhat type iso9660 (rw,loop=/dev/loop0)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/mpath0p1 on /oradata type ext3 (rw)

修改目录 /oradata 的权限:

[root@testrac1 ~]# chown oracle:oinstall /oradata

在节点1的图形界面下使用 dbca 安装实例到 /oradata 目录下,其中需要说明的是在 Step 8 中,请勾选 “Enable Archiving” 选项,并把归档日志的默认目录设置为共享存储下,比如 “/oradata/archs” 目录。在Step 11和12中请把 Controlfile,Datafiles 和 Redolog 的默认路径都设置到共享存储的 /oradata 的相关目录下。

7.创建监听器

在两个节点上的图形界面下分别运行 netca 创建监听器,如下内容是节点1上的监听器配置文件 listener.ora 的文件内容:

[root@testrac1 oracle]# cat /oracle/product/10.2.0/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = testrac1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)

[root@testrac1 oracle]#

8.同步相关配置文件

首先,复制密码文件和参数文件到节点2,过程如下:

[oracle@testrac1 ~]$ cd /oracle/product/10.2.0/db_1/dbs/
[oracle@testrac1 dbs]$ ls
hc_hatest.dat initdw.ora init.ora lkHATEST orapwhatest spfilehatest.ora
[oracle@testrac1 dbs]$ scp orapwhatest oracle@10.10.6.207:/oracle/product/10.2.0/db_1/dbs/
oracle@10.10.6.207's password:
orapwhatest 100% 1536 1.5KB/s 00:00
[oracle@testrac1 dbs]$ scp spfilehatest.ora oracle@10.10.6.207:/oracle/product/10.2.0/db_1/dbs/
oracle@10.10.6.207's password:
spfilehatest.ora 100% 2560 2.5KB/s 00:00
[oracle@testrac1 dbs]$

其次,创建 Oracle 在节点2启动需要的目录,过程如下:

[oracle@testrac2 ~]$ mkdir -p /oracle/admin/hatest/{adump,bdump,cdump,dpdump,pfile,udump}
[oracle@testrac2 ~]$

最后,确保相关目录的权限是正确的,过程如下:

[root@testrac2 ~]# chown -R oracle:oinstall /oracle

9.编写 Oracle 相关的 RHCS 脚本

这里需要说明一下,之前在 system-config-cluter 里配置添加的脚本资源,请先不要添加到 OracleHA_Service 服务中,因为该脚本资源我们还没有编写和安装。也就是说刚安装 Oracle 实例时启动的 RHCS 集群提供服务中的不包括脚本脚本。现在,我们编写 RHCS 脚本,由于具体的内容,请参考这篇文章。编写完成后,拷贝该脚本文件 dbora 到两个节点的 /etc/init.d/ 目录中去。最后,我们需要添加该脚本资源到 OracleHA_Service 服务中,保存配置文件 cluster.conf ,并发送到 RHCS 集群的所有节点中去,重启 RHCS 集群。至此,配置完毕。

10.测试

由于篇幅的问题,我就不在这里把详细的测试过程贴出来了,说说测试思路吧,主要是针对 RHCS 集群提供三种资源进行测试,IP 资源你在其他机器上 ping 一下就好,文件系统资源需要在各个节点上运行 mount 命令看看是否挂载成功,而 Oracle 数据库则需要用 sqlplus 连接看是否正常访问。如果这些都成功的话,则进行节点服务的切换,再进行测试。注意:文件系统资源只能在生效的节点上挂载,而 Oracle 实例和监听器也只能在生效的节点上运行。如果对 RHCS 集群的管理不是很熟悉,请参考这篇文章。


http://www.niftyadmin.cn/n/1552400.html

相关文章

dbms_stats.gather_table_stats与analyze table 的区别

转自https://www.cnblogs.com/laoyangHJ/articles/gather_table_stats-analyze-table.html Analyze Statement The ANALYZE statement can be used to gather statistics for a specific table, index or cluster. The statistics can be computed exactly, or estimated based…

在 RHEL 5.5 下安装 Oracle RAC

1. 创建用户和用户组分别在 rac1 和 rac2 两个节点上执行以下命令&#xff1a; # groupadd -g 500 oinstall # groupadd -g 501 dba # useradd -u 504 -g oinstall -G dba -d /home/oracle -m oracle # passwd oracle 2. 配置 Secure Shell 的等效性 在 rac1节点上执行&#xf…

【Verilog HDL】FPGA-testbench基础知识

&#x1f389;欢迎来到FPGA专栏~testbench基础知识 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能…

故障排除:enq: TX - index contention (文档 ID 2331575.1)

适用于: Oracle Database - Enterprise Edition - 版本 10.2.0.1 到 11.2.0.4 [发行版 10.2 到 11.2]本文档所含信息适用于所有平台目标 本文档的目的是帮助诊断" enq: TX - index contention"问题 解决方案 当运行 OLTP 系统时&#xff0c;当应用程序并发很高时&…

Oracle 中的 DUAL 表详解

1. DUAL 表的用途DUAL 是 Oracle 中的一个实际存在的表&#xff0c;任何用户均可读取&#xff0c;常用在没有目标表的 select 语句块中: –查看当前连接用户 SQL> select user from dual; USER —————————— SYSTEM –查看当前日期、时间 SQL> select sysdate fr…

Oracle RAC/Clusterware 多种心跳heartbeat机制介绍 RAC超时机制分析

转自https://blog.csdn.net/cscscscsc/article/details/55853121ORACLE RAC中最主要存在2种clusterware集群件心跳 & RAC超时机制分析&#xff1a; 1、Network Heartbeat 网络心跳 每秒发生一次&#xff1b; 10.2.0.4以后网络心跳超时misscount为60s,&#xff1b;11.2以后…

VCS维护手册

1 常用命令介绍 对VCS的常用命令进行介绍&#xff0c;便于工程师进行日常维护。本手册描述的命令仅供参考&#xff0c;具体描述请以Veritas公司提供的相关资料为准。 VCS的安装和命令都在下列目录下&#xff1a;sbin, /usr/sbin, /opt/VRTS/bin,和/opt/VRTSvcs/bin …

便捷的日志收集和分析工具TFA

转自https://blogs.oracle.com/database4cn/tfa 1. 便捷的日志收集和分析工具Trace File Analyzer 客户在和技术支持的工程师解决GI&#xff08;RAC&#xff09;问题的时候&#xff0c;一个最大的问题就是及时的收集各个节点上和问题相关的日志和诊断数据&#xff0c;特别是收集…