Oracle Real Application Clusters(RAC)提供了用于在Oracle中创建集群的软件。 本教程说明了如何使用GPFS 3.5配置Oracle RAC,并介绍了概念,先决条件以及硬件和软件配置以及屏幕截图。
我们将本教程分为五个步骤。
在此设置中,我们将使用三个逻辑分区(LPAR):zag02,zag03和zag04。
第1部分:系统准备
- 文件集安装:在节点上安装IBMAIX®(我们正在使用AIX 7.1)之后,在所有三个LPAR上安装以下文件集。
表1.文件集安装文件集 功能性 Dsm.core
Dsm.dsh这是分布式外壳程序(dsh)正常运行所必需的。 openssh.base.client
openssh.base.server
openssl.base
openssl.man.en_US
openssh.base.client
openssh.base.server
openssl.base这是安全Shell(SSH)正常工作所必需的。 vnc-3.3.3r2-5.aix5.1.ppc.rpm
这是打开与节点的vnc会话所必需的。 rsct.basic.rte
rsct.compat.clients.rte
bos.adt.base bos.adt.lib
bos.adt.libm bos.perf.libperfstat
bos.perf.proctools其他必需的文件集。 安装文件集后,开始配置系统。
- 确保系统之间的dsh正常运行。
分布式外壳程序(dsh)用于促进在所有群集节点上运行命令。 为了使dsh正常工作,您只需要在要运行命令的节点(通常是第一个集群节点)上安装dsm文件集。 您可能不必将其安装在其余节点上。
执行以下步骤:
# cat /.wcoll Zag02 Zag03 Zag03 # echo 'export WCOLL=/.wcoll >> /.profile' # export WCOLL=/.wcoll
使用
date
命令测试dsh
功能。# dsh date Zag02: Mon Dec 9 02:28:14 CST 2013 Zag03: Mon Dec 9 02:28:14 CST 2013 Zag04: Mon Dec 9 02:28:14 CST 2013
- 确保节点之间的远程外壳程序(rsh)正常运行。 Oracle使用rsh和rcp将文件从一个节点复制到另一个节点。
# dsh 'echo "+ +" > /.rhosts' # dsh chmod 600 /.rhosts
- 确保节点之间的SSH正常运行。
登录到每个节点以生成公共密钥文件(id_rsa.pub):将node2和node3的Oracle用户授权密钥写入本地节点Oracle用户的授权密钥。
以Oracle用户身份,运行以下命令:
# ssh-keygen –t rsa · As root user, run # ssh-keygen –t rsa
在第一个节点(zag02)上:
将root用户的公共密钥写入root用户和Oracle用户的授权密钥。
# dsh cat /.ssh/id_rsa.pub >> /.ssh/authorized_keys # dsh cat /.ssh/id_rsa.pub >> ~oracle/.ssh/authorized_keys # dsh cat ~oracle/.ssh/id_rsa.pub >> /.ssh/authorized_keys # dsh cat ~oracle/.ssh/id_rsa.pub >> ~oracle/.ssh/authorized_keys
将节点2和节点3的root用户授权密钥写入本地节点的root用户授权密钥。
# rsh node2 cat /.ssh/authorized_keys >> /.ssh/authorized_keys # rsh node3 cat /.ssh/authorized_keys >> /.ssh/authorized_keys # rsh node2 cat /home/oracle/.ssh/authorized_keys >> /home/oracle/.ssh/authorized_keys # rsh node3 cat /home/oracle/.ssh/authorized_keys >> /home/oracle/.ssh/authorized_keys
现在,在第一个节点上,root用户和Oracle用户在其授权的_keys文件中具有公钥的所有组合。 将文件写入node2和node3。
# rcp /.ssh/authorized_keys node2:/.ssh/authorized_keys # rcp /.ssh/authorized_keys node3:/.ssh/authorized_keys # rcp /home/oracle./.ssh/authorized_keys node2:/home/oracle./.ssh/authorized_keys # rcp /home/oracle./.ssh/authorized_keys node3:/home/oracle./.ssh/authorized_keys
SSH需要适当的所有权,并且没有组和其他人的读/写权限。
# dsh chown root /.ssh/authorized_keys # dsh chmod 600 /.ssh/authorized_keys # dsh chown oracle:dba /home/.ssh/authorized_keys # dsh chmod 600 /home/.ssh/authorized_keys
- 修改/ etc / hosts文件。
如下所示,在/ etc / hosts文件中添加设置中使用的计算机名称详细信息。 使用
chinet
命令在各个适配器上配置IP。 我们使用ent0来配置公用IP,使用ent1和ent2来配置专用IP。9.3.66.106 zag02.upt.austin.ibm.com zag02 9.3.66.107 zag03.upt.austin.ibm.com zag03 9.3.66.108 zag04.upt.austin.ibm.com zag04 9.3.66.109 ha-vip.upt.austin.ibm.com ha-vip 9.3.66.110 ha-vip1.upt.austin.ibm.com ha-vip1 9.3.66.111 ha-vip2.upt.austin.ibm.com ha-vip2 10.33.1.1 zag02e2 zag02e2 10.33.1.2 zag02e3 zag02e3 10.33.1.3 zag03e2 zag03e2 10.33.1.4 zag03e3 zag03e3 10.33.1.5 zag04e2 zag04e2 10.33.1.6 zag04e3 zag04e3 9.3.66.112 hacl.upt.austin.ibm.com
首先,在使用BIND / DNS进行名称解析之前,请先使用本地/ etc / hosts:
# dsh 'echo "hosts=local, bind">>/etc/netsvc.conf'
- 完成此操作后,您需要创建Oracle用户和相关组。
# dsh 'mkgroup -A id=1000 dba' # dsh 'mkgroup -A id=1001 oinstall' # dsh 'mkuser id="1000" pgrp="dba" groups="dba ,oinstall, staff" oracle' # dsh chuser capabilities="CAP_PROPAGATE,CAP_BYPASS_RAC_VMM,CAP_NUMA_ATTACH" root # dsh chuser capabilities="CAP_PROPAGATE,CAP_BYPASS_RAC_VMM,CAP_NUMA_ATTACH" oracle # dsh cp -p /.rhosts /home/oracle/.rhosts # dsh chown oracle.dba /home/oracle/.rhosts # dsh chmod 600 /home/oracle/.rhosts # dsh chmod 600 /.rhosts
在每个节点上,以root用户身份将Oracle密码设置为'oracle'。 首次登录时,由于密码过期,系统会提示用户设置新密码。 确保以Oracle用户身份登录(而不是从root用户登录su-oracle)并更改密码。
- 设置ulimit。
在/ etc / security / limits中为Oracle和root用户添加以下代码。
core = 2097151 cpu = -1 data = -1 rss = -1 stack = -1 nofiles = -1 stack_hard = -1 # dsh rcp –p zag03:/etc/security/limits /etc/security/limits # dsh rcp –p zag04:/etc/security/limits /etc/security/limits
- 指定调页空间大小。 根据IBM Power Systems™(64位)E17162-03上针对IBM AIX的Oracle数据库安装指南11g第2版(11.2),PDF第40页,表2中显示的规范是调页空间要求。
表2.分页空间建议内存 分页空间建议 4 GB至8 GB 内存大小的2倍 8 GB至32 GB RAM大小的1.5倍 > 32 GB 32 GB - 然后,配置一些AIX可调参数。
# dsh chdev -l sys0 -a maxuproc=4096
可以使用
no
和vmo
命令设置以下可调参数。 交叉检查它们是否具有所需的值。ipqmaxlen: should be 512. rfc1323: should be 1. sb_max: should be 1310720. tcp_recvspace: should be 65536 tcp_sendspace: should be 65536 udp_recvspace: should be 655360 udp_sendspace: should be 65536
虚拟内存管理器(VMM)选项:
minperm%: should be 3 maxperm%: should be 90 maxclient%: should be 90 lru_file_repage: should be 0 strict_maxclient: should be 1 strict_maxperm: should be 0
sys0选项:
ncargs: should be >= 128
系统配置部分完成后,下一步是设置文件系统。 我们将在环境中使用GPFS 。
第2部分:GPFS安装
IBM GPFS群集设置过程可以分为以下几节:安装GPFS软件,创建GPFS群集,创建网络共享磁盘(NSD),最后在这些NSD上创建GPFS文件系统。
安装GPFS软件
- 确保root用户在群集节点之间具有rsh或SSH(为了安全起见)等效。 作为默认行为,GPFS使用
rsh
和rcp
命令来运行远程命令和复制目的。 - 使GPFS软件文件集在所有群集节点均可访问的网络文件系统(NFS)挂载点上可用,并且NFS在所有群集节点上挂载此目录。 我们在此设置中使用GPFS 3.5。
- 使用
installp
在每个节点上安装GPFS。 以下示例显示了命令输出。 / mnt挂载了GPFS的所有文件集。#dsh installp -a -d /mnt -X -Y ALL At the end, you should have the GPFS filesets successfully installed and an output similar to below should be available for all the nodes. gpfs.docs.data 3.5.0.0 SHARE APPLY SUCCESS gpfs.docs.data 3.5.0.1 SHARE APPLY SUCCESS gpfs.base 3.5.0.0 USR APPLY SUCCESS gpfs.base 3.5.0.0 ROOT APPLY SUCCESS gpfs.msg.en_US 3.5.0.0 USR APPLY SUCCESS gpfs.msg.en_US 3.5.0.1 USR APPLY SUCCESS gpfs.base 3.5.0.1 USR APPLY SUCCESS gpfs.base 3.5.0.1 ROOT APPLY SUCCESS
- 使用以下命令验证每个节点上的GPFS软件安装。
#lslpp -l gpfs*
创建GPFS集群:
- 设置PATH环境变量以包含GPFS命令。
#export PATH=$PATH:/usr/lpp/mmfs/bin
- 创建一个文件,列出节点描述符,每个群集节点每行一个,格式如下。
NodeName:NodeDesignations:AdminNodeName #cat nodefile Zag02:quorum Zag03:quorum Zag04:quorum
- 使用
mmcrcluster
命令创建GPFS群集定义,该定义提供在上一步中创建的节点文件的名称。 另外,定义将要维护GPFS配置的主要和辅助群集节点。#mmcrcluster -N nodefile -p zag02 -s zag03 -A Thu Jun 23 17:46:54 PDT 2011: mmcrcluster: Processing node zag02 Thu Jun 23 17:46:55 PDT 2011: mmcrcluster: Processing node zag03 Thu Jun 23 17:46:55 PDT 2011: mmcrcluster: Processing node zag04 mmcrcluster: Command successfully completed mmcrcluster: Warning: Not all nodes have proper GPFS license designations. Use the mmchlicense command to designate licenses as needed. mmcrcluster: Propagating the cluster configuration data to all affected nodes. This is an asynchronous process.
- 使用
mmchlicense
命令为每个群集节点指定正确的许可证。#mmchlicense server --accept -N zag02,zag03,zag04 The following nodes will be designated as possessing GPFS server licenses: Zag02 Zag03 Zag04 mmchlicense: Command successfully completed mmchlicense: Propagating the cluster configuration data to all affected nodes. This is an asynchronous process.
- 当我们将GPFS与Oracle一起使用时,请设置以下调整参数。
#mmchconfig prefetchThreads=100 mmchconfig: Command successfully completed mmchconfig: Propagating the cluster configuration data to all affected nodes. This is an asynchronous process. #mmchconfig worker1Threads=450 mmchconfig: Command successfully completed mmchconfig: Propagating the cluster configuration data to all affected nodes. This is an asynchronous process.
- 启用
usePersistentReserve
选项可以使GPFS在发生故障时更快地恢复节点。 参与NSD的磁盘需要支持GPFS的SCSI-3永久保留选项才能使用此功能。#mmchconfig usePersistentReserve=yes Verifying GPFS is stopped on all nodes ... mmchconfig: Command successfully completed mmchconfig: Propagating the cluster configuration data to all affected nodes. This is an asynchronous process. #mmchconfig failureDetectionTime=10 Verifying GPFS is stopped on all nodes ... mmchconfig: Command successfully completed mmchconfig: Propagating the cluster configuration data to all affected nodes. This is an asynchronous process.
创建NSD和GPFS文件系统
必须使用mmcrnsd
命令将计划与GPFS一起使用的每个物理或虚拟磁盘准备为NSD。 对于每个要作为NSD处理的磁盘,该命令期望(作为输入文件)磁盘描述符,每行一个。 磁盘描述符具有以下格式:
DiskName:ServerList::DiskUsage:FailureGroup:DesiredName:StoragePool
'DiskName' - block device name under /dev for the device to be used.
'ServerList' - comma separated list of NSD servers. If all nodes have direct
access to disk this field could be left empty.
If all cluster nodes don't have direct access to the disk,
a server list has to be specified.
在我们的环境中,所有群集节点都可以直接访问NSD。 因此,我们将“ ServerList”字段保留为空白。
#cat diskfile
hdisk2:::::gfsdb:
hdisk3:::::gfsvote1:
hdisk4:::::gfsvote2:
hdisk5:::::gfsvote3:
hdisk6:::::gfsocr1:
hdisk7:::::gfsocr2:
hdisk8:::::gfsocr3:
使用mmcrnsd
命令创建NSD。
#mmcrnsd -F diskfile
mmcrnsd: Processing disk hdisk2
mmcrnsd: Processing disk hdisk3
mmcrnsd: Processing disk hdisk4
mmcrnsd: Processing disk hdisk5
mmcrnsd: Processing disk hdisk6
mmcrnsd: Processing disk hdisk7
mmcrnsd: Processing disk hdisk8
ummcrnsd: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.
#>mmlsnsd
File system Disk name NSD servers
---------------------------------------------------------------------------
(free disk) gfsdb (directly attached)
(free disk) gfsvote1 (directly attached)
(free disk) gfsvote2 (directly attached)
(free disk) gfsvote3 (directly attached)
(free disk) gfsocr1 (directly attached)
(free disk) gfsocr2 (directly attached)
(free disk) gfsocr3 (directly attached)
mmcrnsd
命令以可以用作mmcrfs.
的输入文件的方式mmcrfs.
文件mmcrfs.
#cat diskfile
# hdisk2:::::gfsdb:
gfsdb:::dataAndMetadata:-1::
# hdisk3:::::gfsvote1:
Gfsvote1:::dataAndMetadata:-1::
# hdisk4:::::gfsvote2:
Gfsvote2:::dataAndMetadata:-1::
# hdisk5:::::gfsvote3:
Gfsvote3:::dataAndMetadata:-1::
# hdisk6:::::gfsocr1:
Gfsocr1:::dataAndMetadata:-1::
# hdisk7:::::gfsocr2:
Gfsocr2:::dataAndMetadata:-1::
# hdisk8:::::gfsocr3:
Gfsocr3:::dataAndMetadata:-1::
tiebreakerDisks
选项允许在只有一个仲裁节点的情况下运行GPFS群集,该节点可以访问大多数tiebreaker NSD。
#mmchconfig tiebreakerdisks="gfsdb;gfsvote1"
Verifying GPFS is stopped on all nodes ...
mmchconfig: Command successfully completed
mmchconfig: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.
在使用mmcrnsd
命令创建GPFS文件系统之前,需要启动并运行GPFS集群守护程序。
#mmstartup -a
Thu Jun 23 17:52:13 PDT 2011: mmstartup: Starting GPFS ...
#mmgetstate -a
Node number Node name GPFS state
------------------------------------------
1 zag02 active
2 zag03 active
3 zag04 active
使用mmcrfs
命令在先前创建的NSD上创建GPFS文件系统。
此命令期望NSD描述符作为输入,可以从
上一步中的“ mmcrnsd”重写了磁盘描述符文件。
#mmcrfs gfsdb "gfsdb:::dataAndMetadata:-1::" -A yes -T /gfsdb
The following disks of gfsdb will be formatted on node zag02:
gfsdb: size 524288000 KB
Formatting file system ...
Disks up to size 4.5 TB can be added to storage pool 'system'.
Creating Inode File
Creating Allocation Maps
Clearing Inode Allocation Map
Clearing Block Allocation Map
Formatting Allocation Map for storage pool 'system'
Completed creation of file system /dev/gfsdb.
mmcrfs: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.
同样,创建另一个文件系统。
因为文件系统是使用automount yes
选项创建的,所以在重新启动时或在运行mmstartup
命令时随后启动GPFS守护程序,所有GPFS文件系统都将自动挂载。
#dsh /usr/lpp/mmfs/bin/mmmount all
Zag02: Thu Jun 23 18:39:09 PDT 2011: mmmount: Mounting file systems ...
Zag03: Thu Jun 23 18:39:09 PDT 2011: mmmount: Mounting file systems ...
Zag04: Thu Jun 23 18:39:09 PDT 2011: mmmount: Mounting file systems ...
#dsh "mount | grep mmfs; echo"
Zag02: /dev/gfsdb /gfsdb mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsdb
zag02: /dev/gfsvote1 /gfsvote1 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsvote1
zag02: /dev/gfsvote2 /gfsvote2 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsvote2
zag02: /dev/gfsvote3 /gfsvote3 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsvote3
zag02: /dev/gfsocr1 /gfsocr1 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsocr1
zag02: /dev/gfsocr2 /gfsocr2 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsocr2
zag02: /dev/gfsocr3 /gfsocr3 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsocr3
Zag03: /dev/gfsdb /gfsdb mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsdb
zag03: /dev/gfsvote1 /gfsvote1 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsvote1
zag03: /dev/gfsvote2 /gfsvote2 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsvote2
zag03: /dev/gfsvote3 /gfsvote3 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsvote3
zag03: /dev/gfsocr1 /gfsocr1 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsocr1
zag03: /dev/gfsocr2 /gfsocr2 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsocr2
zag03: /dev/gfsocr3 /gfsocr3 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsocr3
Zag04: /dev/gfsdb /gfsdb mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsdb
zag04: /dev/gfsvote1 /gfsvote1 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsvote1
zag04: /dev/gfsvote2 /gfsvote2 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsvote2
zag04: /dev/gfsvote3 /gfsvote3 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsvote3
zag04: /dev/gfsocr1 /gfsocr1 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsocr1
zag04: /dev/gfsocr2 /gfsocr2 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsocr2
zag04: /dev/gfsocr3 /gfsocr3 mmfs Aug 29 13:05 rw,mtime,atime,dev=gfsocr3
第3部分:Oracle Clusterware(网格)安装
Oracle Clusterware使服务器之间可以相互通信,从而使它们在功能上看起来像一个集体单元。 服务器的这种组合通常称为群集。 尽管这些服务器是独立服务器,但是每个服务器都有与其他服务器通信的其他进程。 这样,单独的服务器对于应用程序和最终用户而言就好像它们是一个系统。 Oracle Clusterware提供了运行Oracle RAC所需的基础结构。
我们已经从集中式服务器上安装了Oracle映像(11.2.0.3)。 并且,它们位于/ images。 以下屏幕截图提供了有关如何安装网格软件的分步过程。
- 从zag02的vnc会话中以Oracle用户身份运行以下命令。
/images/Oracle/11.2.0.3/grid/ ./runInstaller
图1.下载软件更新
图2.安装选项
图3.安装类型
图4.集群节点信息
- 提及群集名称,扫描名称和端口号。 扫描名称和相关IP必须存在于/ etc / hosts中。
图5.适配器信息
我们已将en1用于我们的公共IP,并将en2和en3用于我们的私有IP,如图5所示。
图6.存储选项
- 选择共享文件系统,因为我们在配置中使用GPFS。
图7. OCR存储
- 提及OCR的路径,如图7所示。
图8.选择操作系统组
- 在每个LPAR上创建一个名为/ grid的本地增强日志文件系统(JFS2),具有20 GB大小,777权限和chmod oracle:dba / grid。 挂载它并验证Oracle用户的所有权和权限。
图9. Oracle基本路径和软件位置路径
- 提及Oracle基础的路径,如图9所示。
图10.最低安装和配置检查
- 完成后,使用以下命令验证网格是否已成功安装。
# /grid/bin/crsctl check cluster –all *************************************** Zag02: CRS-4537:Cluster Ready Services is online CRS-4529:Cluster Synchronistaion Services is online CRS-4533:Event Manager is online *************************************** Zag03: CRS-4537:Cluster Ready Services is online CRS-4529:Cluster Synchronistaion Services is online CRS-4533:Event Manager is online *************************************** Zag04: CRS-4537:Cluster Ready Services is online CRS-4529:Cluster Synchronistaion Services is online CRS-4533:Event Manager is online *************************************** # ./srvctl status nodeapps VIP zag02vip is enabled VIP zag02vip is running on node: zag02 VIP zag03vip is enabled VIP zag03vip is running on node: zag03 VIP zag04vip is enabled VIP zag04vip is running on node: zag04 Network is enabled Network is running on node: zag02 Network is running on node: zag03 Network is running on node: zag04 GSD is disabled GSD is not running on node: zag02 GSD is not running on node: zag03 GSD is not running on node: zag04 ONS is enabled ONS daemon is running on node: zag02 ONS daemon is running on node: zag03 ONS daemon is running on node: zag04
第4部分:数据库安装
以下屏幕截图提供了有关如何安装数据库软件的分步过程。
- 从zag02的vnc会话中以Oracle用户身份运行以下命令。 再次,我们使用从集中式服务器装载的Oracle映像。
/images/Oracle/11.2.0.3/database ./runInstaller
图11.安装选项
- 选择“ 仅安装数据库软件”作为安装选项(如图11所示)。
图12.数据库安装类型
- 选择Oracle Real AApplication Clusters数据库安装作为数据库安装类型(如图12所示)。
图13.数据库版本
- 选择Enterprise Edition作为数据库版本(如图13所示)。
图14. Oracle基础和软件位置
- 指定Oracle数据库和软件位置的路径(如图14所示)。
图15.检查
- 系统执行检查并报告错误(如果找到)。 修复所有错误,然后重新运行检查。 确保它没有报告任何错误。
第5部分:数据库创建
数据库安装完成后,下一步是创建数据库实例。
图16.选择创建数据库的选项
图17.指定数据库的类型
在此示例中,选择了“ 通用”或“事务处理”选项,如图17所示。
图18.选择数据库配置类型
选择Policy-Managed ,如图18所示。
图19.选择密码
图20.指定存储类型和数据库文件位置
图21.选择数据库的恢复选项
以下屏幕截图显示了内存,大小,字符集和连接模式的配置。 我们选择保留默认值。
图22.内存和大小调整配置
图23.字符集配置
图24.连接模式配置
图25.选择数据库创建选项
图26.数据库创建过程
图27.数据库创建成功完成
成功创建数据库实例后,我们可以使用srvctl
命令来验证数据库实例的状态。
#export ORACLE_HOME=/oradb/db
#srvctl status database –d uptdb
Instance uptdb_1 is running on node zag02
Instance uptdb_2 is running on node zag03
Instance uptdb_3 is running on node zag04
翻译自: https://www.ibm.com/developerworks/aix/tutorials/au-aix-configuration-of-oracle-rac/index.html