Oracle Real Application Clusters(RAC)提供了用于在Oracle中创建集群的软件。 本教程说明了如何使用GPFS 3.5配置Oracle RAC,并介绍了概念,先决条件以及硬件和软件配置以及屏幕截图。
我们将本教程分为五个步骤。
第1部分:系统准备 第2部分:GPFS安装 第3部分:Oracle集群件(网格)配置 第4部分:数据库安装 第5部分:创建数据库实例在此设置中,我们将使用三个逻辑分区(LPAR):zag02,zag03和zag04。
安装文件集后,开始配置系统。
确保系统之间的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_keysSSH需要适当的所有权,并且没有组和其他人的读/写权限。
# 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 0sys0选项:
ncargs: should be >= 128系统配置部分完成后,下一步是设置文件系统。 我们将在环境中使用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=gfsocr3Oracle Clusterware使服务器之间可以相互通信,从而使它们在功能上看起来像一个集体单元。 服务器的这种组合通常称为群集。 尽管这些服务器是独立服务器,但是每个服务器都有与其他服务器通信的其他进程。 这样,单独的服务器对于应用程序和最终用户而言就好像它们是一个系统。 Oracle Clusterware提供了运行Oracle RAC所需的基础结构。
我们已经从集中式服务器上安装了Oracle映像(11.2.0.3)。 并且,它们位于/ images。 以下屏幕截图提供了有关如何安装网格软件的分步过程。
从zag02的vnc会话中以Oracle用户身份运行以下命令。 /images/Oracle/11.2.0.3/grid/ ./runInstaller我们已将en1用于我们的公共IP,并将en2和en3用于我们的私有IP,如图5所示。
以下屏幕截图提供了有关如何安装数据库软件的分步过程。
从zag02的vnc会话中以Oracle用户身份运行以下命令。 再次,我们使用从集中式服务器装载的Oracle映像。 /images/Oracle/11.2.0.3/database ./runInstaller数据库安装完成后,下一步是创建数据库实例。
在此示例中,选择了“ 通用”或“事务处理”选项,如图17所示。
选择Policy-Managed ,如图18所示。
以下屏幕截图显示了内存,大小,字符集和连接模式的配置。 我们选择保留默认值。
成功创建数据库实例后,我们可以使用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
相关资源:大牛之作AIX-HACMP-gpfs-Oracle 11g RAC安装部署