目的
此文档向读者提供如何安装一个群集,安装RAC,并在IBM AIX HACMP/ES (CRM) 4.4.x上启动一个群集数据库的手把手指导手册,对于关于任何这些步骤的其它解释或信息,请参考文档结尾列出的参考手册。
1. 配置群集硬件
1.1 最小硬件列表/系统要求
1.1.1 硬件
1.1.2 软件
1.1.3 补丁
1.2 安装磁盘阵列
1.3 安装群集内联和外联的网络硬件
2. 创建一个群集
2.1 HACMP/ES 软件安装
2.2 配置群集拓扑
2.3 同步群集拓扑
2.4 配置群集资源
2.4.1 在一个节点上创建并行共享的卷组
2.4.2 创建共享的RAW逻辑卷
2.4.3 在其它节点上导入卷组
2.4.4 添加并行群集资源组
2.4.5 配置并行群集资源组
2.4.6 创建平行文件系统 (GPFS)
2.5 同步群集资源
2.6 添加节点到群集里
2.7 基本的群集管理
3. 准备安装RAC
3.1 配置共享磁盘和UNIX预安装任务
3.2.1 配置共享磁盘
3.2.2 UNIX预安装任务
3.2 使用OUI安装RAC
3.3 使用ODCA创建一个RAC数据库
4. 管理RAC实例
5. 参考手册
1. 配置群集硬件
1.1 最小硬件列表/系统要求
对于一个两节点的群集,下面是推荐的最小硬件列表。检查RAC/IBM AIX 认证矩阵,获取当前支持RAC的最新硬件/软件。
1.1.1 硬件
●IBM服务器 – 两个可以运行AIX 4.3.3 或5L 64位的IBM服务器
●对于IBM或第三方存储产品,群集内联,外联网络,交换机选件,内存,交换分区&CPU的要求,参考操作系统供应商和硬件供应商。
●内存,交换分区&CPU要求
●每个服务器必须有至少512M内存,至少1G交换分区或两倍于物理内存或更多。
要确定使用的系统内存: $ /usr/sbin/lsattr -E -l sys0 -a realmem
要确定使用的交换分区: $ /usr/sbin/lsps -a
●需要64位的处理器。
1.1.2 软件
●当使用IBM AIX 4.3.3时:
◆HACMP/ES CRM 4.4.x
◆只有裸逻辑卷支持数据库文件
◆Oracle服务器企业版 9.0.1 或 9.2.0
●当使用IBM AIX 5.1 (5L)时:
对于驻留在裸逻辑卷的数据库文件:
◆HACMP/ES CRM 4.4.x
对于驻留在 GPFS上的数据库文件:
◆HACMP/ES 4.4.x (不需要HACMP/CRM )
◆GPFS 1.5
◆IBM补丁PTF12和IBM补丁IY34917或 IBM 补丁 PTF13
◆Oracle服务器企业版9.2.0
◆Oracle Server Enterprise Edition 9i for AIX 4.3.3 和5L在单独的CD包里,并且包括RAC。
1.1.3 补丁
IBM群集节点可能需要以下方面的补丁:
●IBM AIX操作系统环境补丁
●存储固件补丁或微码升级
补丁注意事项:
●确保所有的群集节点有相同的补丁级别
●不要在没有资格人员的帮助时,安装任何跟固件相关的补丁
●总是获取最新的补丁信息
●仔细阅读所有补丁的README版本说明
●对于需要的操作系统补丁列表,检查Note:211537.1 ,并联系IBM公司,获取额外的补丁要求。
使用以下命令查看当前已安装的补丁:
% /usr/sbin/instfix -i
验证一个特定补丁的安装:
% /usr/sbin/instfix -ivk
例如:
% /usr/sbin/instfix -ivk IY30927
1.2 安装磁盘阵列
在安装IBM AIX操作系统环境和HACMP软件之前,结合HACMP for AIX安装手册和服务器硬件安装手册,初始化安装磁盘箱或阵列。
1.3安装群集互连和公共网络硬件
群集互连和公共网络接口不需要在安装HACMP之前配置,但必须在配置群集之前被配置并可用。
●如果还没有被安装,那么先安装主机适配卡HBA到群集节点上,安装过程,参考相关文档。
●多于2个节点的群集需要2个群集传输连接器,这些传输连接器是基于以太网的交换机,在你安装了其它硬件之后,你可以安装群集软件和配置互连网络。
2. 创建一个群集
2.1 IBM HACMP/ES软件安装
HACMP/ES 4.X.X安装和配置过程通过几个主要步骤完成。一般过程为:
●安装硬件
●安装IBM AIX操作系统软件
●安装最新的IBM AIX维护级别和需要的补丁
●在每个节点上安装HACMP/ES 4.X.X
●安装HACMP/ES需要的补丁
●配置群集拓扑
●同步群集拓扑
●配置群集资源
●同步群集资源
根据HACMP for AIX 4.X.X 安装指南获取安装需要的HACMP包的详细的指导说明。需要的/建议的软件包,包括下面这些:
●cluster.adt.es.client.demos
●cluster.adt.es.client.include
●cluster.adt.es.server.demos
●cluster.clvm.rte HACMP for AIX Concurrent
●cluster.cspoc.cmds HACMP CSPOC commands
●cluster.cspoc.dsh HACMP CSPOC dsh and perl
●cluster.cspoc.rte HACMP CSPOC Runtime Commands
●cluster.es.client.lib ES Client Libraries
●cluster.es.client.rte ES Client Runtime
●cluster.es.client.utils ES Client Utilities
●cluster.es.clvm.rte ES for AIX Concurrent Access
●cluster.es.cspoc.cmds ES CSPOC Commands>
●cluster.es.cspoc.dsh ES CSPOC dsh and perl
●cluster.es.cspoc.rte ES CSPOC Runtime Commands
●cluster.es.hc.rte ES HC Daemon
●cluster.es.server.diag ES Server Diags
●cluster.es.server.events ES Server Events
●cluster.es.server.rte ES Base Server Runtime
●cluster.es.server.utils ES Server Utilities
●cluster.hc.rte HACMP HC Daemon
●cluster.msg.En_US.cspoc HACMP CSPOC Messages - U.S.
●cluster.msg.en_US.cspoc HACMP CSPOC Messages - U.S.
●cluster.msg.en_US.es.client
●cluster.msg.en_US.es.server
●cluster.msg.en_US.haview HACMP HAView Messages - U.S.
●cluster.vsm.es ES VSM Configuration Utility
●cluster.clvm.rte HACMP for AIX Concurrent
●cluster.es.client.rte ES Client Runtime
●cluster.es.clvm.rte ES for AIX Concurrent Access
●cluster.es.hc.rte ES HC Daemon
●cluster.es.server.events ES Server Events
●cluster.es.server.rte ES Base Server Runtime
●cluster.es.server.utils ES Server Utilities
●cluster.hc.rte HACMP HC Daemon
●cluster.man.en_US.client.data
●cluster.man.en_US.cspoc.data
●cluster.man.en_US.es.data ES Man Pages - U.S. English
●cluster.man.en_US.server.data
●rsct.basic.hacmp RS/6000 Cluster Technology
●rsct.basic.rte RS/6000 Cluster Technology
●rsct.basic.sp RS/6000 Cluster Technology
●rsct.clients.hacmp RS/6000 Cluster Technology
●rsct.clients.rte RS/6000 Cluster Technology
●rsct.clients.sp RS/6000 Cluster Technology
●rsct.basic.rte RS/6000 Cluster Technology
你可以使用clverify命令来验证安装的HACMP软件。
# /usr/sbin/cluster/diag/clverify
在 clverify> 提示符下,输入 software
然后在 clverify.software> 提示符下,输入 lpp
你应该看到类似于如下的信息:
Checking AIX files for HACMP for AIX-specific modifications...
*/etc/inittab not configured for HACMP for AIX.
If IP Address Takeover is configured, or the Cluster Manager is to be started on boot, then /etc/inittab must contain the proper HACMP for AIX entries.
Command completed.
--------- Hit Return To Continue ---------
2.2 配置群集拓扑
使用如下命令:
# smit hacmp
注意:下面只是一个通用的HACMP配置的例子,参看HACMP安装和规划文档获取特定例子,此配置不包括 IP takeover network的例子, smit 快速路径正被用于导航到 smit hacmp 配置菜单,每一个配置屏幕都从 smit hacmp 获取,所有的配置从一个节点进行,然后同步到参与群集的其它节点。
2.2.1添加群集定义:
Smit HACMP -> Cluster Configuration -> Cluster Topology -> Configure Cluster -> Add a Cluster Definintion
快速路径:
# smit cm_config_cluster.add
Add a Cluster Definition
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
**NOTE: Cluster Manager MUST BE RESTARTED in order for changes to be acknowledged.**
* Cluster ID [0]
* Cluster Name [cluster1]
“Cluster ID” 和“Cluster Name”可以是任意的,“Cluster ID”必须是0-9999之间的有效数字,“Cluster Name”可以是任何最多32个字母的字符串。
2.2.2配置节点:
Smit HACMP -> Cluster Configuration -> Cluster Topology -> Configure Nodes -> Add Cluster Nodes
快速路径:
# smit cm_config_nodes.add
Add Cluster Nodes
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
*Node Names [node1 node2]
“Node Names”应该是节点的主机名,它们必须是字母数字,且不多于32个字符。所有参与的节点必须在此输入,并用空格隔开 。
2.2.3添加网络适配器
此例在每个节点上使用2个以太网卡,并用一个RS232串口作为心跳连接:
节点名称 | IP地址 | IP标签 | 类型 |
node1 | 192.168.0.1 | node1srvc | service |
192.168.1.1 | node1stby | standby | |
/dev/tty0 | serial | 心跳 | |
node2 | 192.168.0.2 | node2srvc | service |
192.168.1.2 | node2stby | standby | |
/dev/tty0 | serial |
配置网络适配器:
Smit HACMP -> Cluster Configuration -> Cluster Topology -> Configure Nodes -> Add an Adapter
快速路径:
# smit cm_confg_adapters.add
Add an Adapter
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* Adapter IP Label [node1srvc]
* Network Type [ether] +
* Network Name [ipa] +
* Network Attribute public +
* Adapter Function service +
Adapter Identifier []
Adapter Hardware Address []
Node Name [node1] +
注意“Adapter IP Label” 必须匹配“/etc/hosts”文件,否则适配卡不能映射到有效的IP地址,群集不能被同步,“Network Name”是网络配置的任意名称,在此配置里的适配卡必须有相同的 “Network Name”,此名称被用于在适配卡失败时,决定哪些适配卡被使用。
Add an Adapter
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* Adapter IP Label [node1stby]
* Network Type [ether] +
* Network Name [ipa] +
* Network Attribute public +
* Adapter Function standby +
Adapter Identifier []
Adapter Hardware Address []
Node Name [node1] +
Add an Adapter
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* Adapter IP Label [node2srvc]
* Network Type [ether] +
* Network Name [ipa] +
* Network Attribute public +
* Adapter Function service +
Adapter Identifier []
Adapter Hardware Address []
Node Name [node2] +
Add an Adapter
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* Adapter IP Label [node2stby]
* Network Type [ether] +
* Network Name [ipa] +
* Network Attribute public +
* Adapter Function standby +
Adapter Identifier []
Adapter Hardware Address []
Node Name [node2] +
下面是串口配置:
Add an Adapter
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* Adapter IP Label [node1_tty]
* Network Type [rs232] +
* Network Name [serial] +
* Network Attribute serial +
* Adapter Function service +
Adapter Identifier [/dev/tty0]
Adapter Hardware Address []
Node Name [node1] +
Add an Adapter
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* Adapter IP Label [node2_tty]
* Network Type [rs232] +
* Network Name [serial] +
* Network Attribute serial +
* Adapter Function service +
Adapter Identifier [/dev/tty0]
Adapter Hardware Address []
Node Name [node2] +
因为这跟以太网卡不同,所以 “Network Name”也不同。
使用“smit mktty” 配置RS232适配器:
# smit mktty
Add a TTY
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
TTY type tty
TTY interface rs232
Description Asynchronous
Terminal Parent adapter sa0
* PORT number [0] +
Enable LOGIN disable +
BAUD rate [9600] +
PARITY [none] +
BITS per character [8] +
Number of STOP BITS [1] +
TIME before advancing to next port setting [0] +#
TERMINAL type [dumb]
FLOW CONTROL to be used [xon] +
[MORE...31]
确保“Enable LOGIN”被设置为默认的“disable”,“PORT number” 是在 /dev/tt# 里使用的“#” ,因此,如果你定义为“0” ,那么将是“/dev/tty0”设备。
2.3 同步群集拓扑
群集拓扑在配置之后,需要被同步,同步执行拓扑的完整性检查,然后被推送到群集配置里的每个节点,配置同步,需要是root用户,有几个方法可以做到:
其中一个方法就是在每个节点的根目录创建一个.rhosts 文件。
一个.rhosts的例子文件:
node1 root
node2 root
确保/.rhosts文件的权限为600。
# chmod 600 /.rhosts
使用远程命令rcp等来测试配置是否正确:
从节点1:
# rcp /etc/group node2:/tmp
从节点2:
# rcp /etc/group node1:/tmp
同步群集拓扑:
Smit HACMP -> Cluster Configuration -> Cluster Topology -> Synchronize Cluster Topology
快速路径:
# smit configchk.dialog
Synchronize Cluster Topology
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
Ignore Cluster Verification Errors? [No] +
* Emulate or Actual? [Actual] +
注意:只有本地节点的默认配置文件保留你的更改,用于拓扑仿真,当你运行仿真之后,要还原到原始配置,运行SMIT命令,“Restore System Default Configuration from Active Configuration”,我们推荐你在运行仿真之前,做一个快照。 只是为了防止在仿真过程中发生不能控制的群集事件,如果在此节点上激活了群集管理器,同步群集拓扑将引起在同步成功完成之后,群集管理器的任何更改将立即生效。
2.4 配置群集资源
在一个RAC配置里,只需要一个资源组。此资源组是一个用于共享卷组的并行资源组,下面是为共享卷组添加一个并行资源组的过程:
首先需要一个在节点间共享的卷组,相同群集数据库的两个实例并行访问相同的外部磁盘,这是真正的并行访问,与VSD环境里的共享不一样。因为几个实例同时访问相同的文件和数据,locks必须被管理,这些locks在CLVM层,由HACMP管理。
1) 检查目标磁盘是否物理连接到群集的节点,并可以被节点所看到。在两个节点上输入lspv命令。
注意:hdisk号码可以不一样,依赖于其它节点的磁盘配置,使用lspv的第二个输出字段(Pvid),确保从两个主机处理相同的物理磁盘。尽管hdisk号码不连续可能不是问题,但IBM建议使用“鬼”盘来确保在节点间匹配hdisk号码。
2.4.1 在一个节点上创建要共享的并行卷组
# smit vg
选择 Add a Volume Group
Add a Volume Group
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
VOLUME GROUP name [oracle_vg]
Physical partition SIZE in megabytes 32 +
* PHYSICAL VOLUME names [hdisk5] +
Activate volume group AUTOMATICALLY at system restart? no +
Volume Group MAJOR NUMBER [57] +
Create VG Concurrent Capable? yes +
Auto-varyon in Concurrent Mode? no +
“PHYSICAL VOLUME names”必须是在节点间共享的物理磁盘,我们不要在系统启动时,自动激活卷组,因为由HACMP来激活。并且“Auto-varyon in Concurrent Mode?” 应该被设置为“no” ,因为由HACMP 以并行模式加载它。你必须选择 “major number”,确保卷组在所有节点有相同的“major number”(注意:在选择此号码之前,你必须确保它在所有节点都是空闲的)。检查所有定义的major number,输入:
% ls ?al /dev/*
crw-rw---- 1 root system 57, 0 Aug 02 13:39 /dev/oracle_vg
oracle_vg卷组的major number是57。
确保57在所有其它节点上可用,并且没有被其它设备使用。
在此卷组上,创建你需要的所有逻辑卷和文件系统。
2.4.2 如果没有使用GPFS那么创建共享的裸逻辑卷:
mklv -y'db_name_cntrl1_110m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
mklv -y'db_name_cntrl2_110m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
mklv -y'db_name_system_400m' -w'n' -s'n' -r'n' usupport_vg 13 hdisk5
mklv -y'db_name_users_120m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
mklv -y'db_name_drsys_90m' -w'n' -s'n' -r'n' usupport_vg 3 hdisk5
mklv -y'db_name_tools_12m' -w'n' -s'n' -r'n' usupport_vg 1 hdisk5
mklv -y'db_name_temp_100m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
mklv -y'db_name_undotbs1_312m' -w'n' -s'n' -r'n' usupport_vg 10 hdisk5
mklv -y'db_name_undotbs2_312m' -w'n' -s'n' -r'n' usupport_vg 10 hdisk5
mklv -y'db_name_log11_120m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
mklv -y'db_name_log12_120m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
mklv -y'db_name_log21_120m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
mklv -y'db_name_log22_120m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
mklv -y'db_name_indx_70m' -w'n' -s'n' -r'n' usupport_vg 3 hdisk5
mklv -y'db_name_cwmlite_100m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
mklv -y'db_name_example_160m' -w'n' -s'n' -r'n' usupport_vg 5 hdisk5
mklv -y'db_name_oemrepo_20m' -w'n' -s'n' -r'n' usupport_vg 1 hdisk5
mklv -y'db_name_spfile_5m' -w'n' -s'n' -r'n' usupport_vg 1 hdisk5
mklv -y'db_name_srvmconf_100m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5
用你实际的数据库名来替换“db_name” ,当卷组创建时使用32兆字节的分区时,那么第7个字段是构成文件的分区数量,因此例如:如果“db_name_cntrl1_110m”需要110兆字节,那么我们需要4个分区。
裸分区被创建在“/dev”目录里,它被作为字符设备使用,
“mklv -y'db_name_cntrl1_110m' -w'n' -s'n' -r'n' usupport_vg 4 hdisk5” 创建2个文件:
/dev/db_name_cntrl1_110m
/dev/rdb_name_cntrl1_110m
更改字符设备的权限,使得软件属主拥有它们,这里为oracle用户:
# chown oracle:dba /dev/rdb_name*
2.4.3 在其它节点上导入(import)卷组
使用importvg在所有其它节点上导入oracle_vg 卷组。
在第一个机器上,输入:
% varyoffvg oracle_vg
在其它节点上导入卷组,使用smit vg,并选择Import a Volume Group 。
Import a Volume Group
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
VOLUME GROUP name [oracle_vg]
* PHYSICAL VOLUME name [hdisk5] +
Volume Group MAJOR NUMBER [57] +#
Make this VG Concurrent Capable? no +
Make default varyon of VG Concurrent? no +
物理卷名称(hdisk)在每个节点上可能不同,使用lspv检查磁盘的PVID,并确保选择跟在第一个节点上创建卷组的磁盘的PVID相同的磁盘,并且保证使用相同的major number,此数字必须在所有节点上没被定义,“Make default varyon of VG Concurrent?”选项应该被设置为“no”;因为卷组创建为并行方式,因此 “Make this VG Concurrent Capable?”可以保留为“no”。在原始创建卷组的节点varyoff卷组后,在命令行下导入卷组:
% importvg -V -y h disk#
% chvg -an
% varyoffvg
在每个节点导入卷组之后,确保更改字符设备的属主,这里为oracle:
# chown oracle:dba /dev/rdb_name*
2.4.4 添加一个并行群集资源组
此例中共享的资源为 oracle_vg,创建管理此资源的并行资源组:
Smit HACMP -> Cluster Configuration -> Cluster Resources -> Define Resource Groups -> Add a Resource Group
快速路径:
# smit cm_add_grp
Add a Resource Group
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* Resource Group Name [shared_vg]
* Node Relationship concurrent +
* Participating Node Names [node1 node2] +
“Resource Group Name”是任意字符,用于在配置卷组时选择,因为我们正在配置一个共享资源,“Node Relationship”为“concurrent”意味一组节点将并行共享此资源,“Participating Node Names”是以空格分隔的将共享此资源的节点列表。
2.4.5 配置并行群集资源组
当资源组被添加之后,可以被配置:
Smit HACMP -> Cluster Configuration -> Cluster Resources -> Change/Show Resources for a Resource Group
快速路径:
# smit cm_cfg_res.select
Configure Resources for a Resource Group
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
Resource Group Name concurrent_group
Node Relationship concurrent
Participating Node Names opcbaix1 opcbaix2
Service IP label [] +
Filesystems [] +
Filesystems Consistency Check fsck +
Filesystems Recovery Method sequential +
Filesystems to Export [] +
Filesystems to NFS mount [] +
Volume Groups [] +
Concurrent Volume groups [oracle_vg] +
Raw Disk PVIDs [00041486eb90ebb7] +
AIX Connections Service [] +
AIX Fast Connect Services [] +
Application Servers [] +
Highly Available Communication Links [] +
Miscellaneous Data []
Inactive Takeover Activated false +
9333 Disk Fencing Activated false +
SSA Disk Fencing Activated false +
Filesystems mounted before IP configured false +
注意:“Resource Group Name”,“Node Relationship”和“Participating Node Names”的设置来自前面菜单里输入的数据,“Concurrent Volume groups”是需要在共享存储设备上预创建的卷组,“Raw Disk PVIDs”是组成“Concurrent Volume groups”的每个磁盘的物理卷Ids。要注意一个卷组管理多个并行资源,在这种情况下,用空格分隔每个卷组,并且“Raw Disk PVIDs”也要用空格来分隔。
2.4.6 创建平行文件系统(GPFS)
对于AIX 5.1 (5L),你也可以把文件放到GPFS (GPFS不需要裸逻辑卷),在这种情况下,创建可以容纳数据库文件,控制文件和日志文件的GPFS。
2.5 同步群集资源
在配置了资源组之后,需要同步资源:
Smit HACMP -> Cluster Configuration -> Cluster Resources -> Synchronize Cluster Resources
快速路径:
# smit clsyncnode.dialog
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
Ignore Cluster Verification Errors? [No] +
Un/Configure Cluster Resources? [Yes] +
* Emulate or Actual? [Actual] +
2.6 加入节点到群集
当配置了群集拓扑和资源之后,节点可以加入群集,同时只启动一个节点非常重要,除非使用群集单点控制功能C-SPOC (Cluster-Single Pointing of Control)。
启动群集服务:
Smit HACMP -> Cluster Services -> Start Cluster Services
快速路径:
# smit clstart.dialog
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* Start now, on system restart or both now +
BROADCAST message at startup? false +
Startup Cluster Lock Services? false +
Startup Cluster Information Daemon? true +
设置 “Start now, on system restart or both” 为“now” 将立即启动HACMP进程, “restart” 将更新 “/etc/inittab” ,添加一个启动HACMP的条目, “both” 在更新“/etc/inittab” 之后,立即启动HACMP进程。 “BROADCAST message at startup? ” 可以是 “true” 或“false”,如果设置为 “true” ,那么当节点正在加入群集时,将显示wall信息。“Startup Cluster Lock Services?” 对于RAC配置,应该被设置为“false” 。设置此参数为 “true” 将阻止群集工作,如果“clstat”被用于监视群集,那么 “Startup Cluster Information Daemon?” 必须被设置为“true“。
查看“/etc/hacmp.out” 获取启动信息,当你看到类似如下的信息,那么你可以安全地启动其它节点的群集服务:
May 23 09:31:43 EVENT COMPLETED: node_up_complete node1
当正在添加节点到群集时,其它节点将在它们的"/tmp/hacmp.out"文件里报告一个成功加入的消息:
May 23 09:34:11 EVENT COMPLETED: node_up_complete node1
2.7 基本的群集管理
“/tmp/hacmp.out”是查看群集信息的最好地方,“clstat” 也可以被用于验证群集的健康状态,“clstat” 程序有时可以更新最新的群集信息,但有时根本不能工作。而且你必须在启动群集服务时,设置了“Startup Cluster Information Daemon?”为“true”,输入以下命令来启动“clstat”:
# /usr/es/sbin/cluster/clstat
clstat - HACMP for AIX Cluster Status Monitor ---------------------------------------------Cluster: cluster1 (0) Tue Jul 2 08:38:06 EDT 2002 State: UP Nodes: 2 SubState: STABLE Node: node1 State: UP Interface: node1 (0) Address: 192.168.0.1 State: UP Node: node2 State: UP Interface: node2 (0) Address: 192.168.0.2 State: UP
检查群集状态的另一个办法是使用snmpinfo来查询snmpd进程:
# /usr/sbin/snmpinfo -m get -o /usr/es/sbin/cluster/hacmp.defs -v ClusterSubstate.0
应该返回"32":
clusterSubState.0 = 32
如果返回了其它值,请查找错误。
你可以快速查看HACMP的特定进程:
Smit HACMP -> Cluster Services -> Show Cluster Services
COMMAND STATUS
Command: OK stdout: yes stderr: no
Before command completion, additional instructions may appear below.Subsystem Group PID Status clstrmgrES cluster 22000 active clinfoES cluster 21394 active clsmuxpdES cluster 14342 active cllockdES lock inoperative clresmgrdES 29720 active
Starting & Stopping Cluster Nodes
从群集加入节点,使用:
Smit HACMP -> Cluster Services -> Start Cluster Services
从群集退出节点,使用:
Smit HACMP -> Cluster Services -> Stop Cluster Services
快速路径:
# smit clstop.dialog
Stop Cluster Services
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* Stop now, on system restart or both now +
BROADCAST cluster shutdown? true +
* Shutdown mode graceful + (graceful or graceful with takeover, forced)
“Shutdown mode”决定在关闭发生时,资源是否在节点之间移动。
“forced” 是HACMP 4.4.1的新特性,当停止时,应用程序将由HACMP事件来控制运行。
“graceful” 将停止任何东西,但cascading和rotating资源不会被切换。
“graceful with takeover”在停止时,资源将被切换。
HACMP/ES日志文件:
在群集启动和停止时,所有的群集配置信息都被记录到“/tmp/hacmp.out”。
3.0 准备安装RAC
RAC群集安装过程包括4个主要任务。
3.1. 配置共享磁盘和UNIX预安装任务。
3.2. 运行OUI安装Oracle9i Enterprise Edition和Oracle9i RAC软件。
3.3. 创建和配置数据库。
3.1配置共享磁盘和UNIX预安装任务
3.1.1 配置共享磁盘
如果没有使用GPFS,那么RACE需要每个实例可以访问一个共享磁盘系统上的一系列未格式化的设备。这些共享磁盘也被称为裸设备,如果你的系统平台支持Oracle认证的群集文件系统,那么你可以直接保存RAC需要的文件到群集文件系统里。
如果你正在使用GPFS,那么你也可以直接保存RAC需要的文件到群集文件系统里。
RAC配置中的Oracle实例把数据写入到裸设备,更新控制文件,服务器参数文件,每个数据文件和每个重做日志文件,群集中的所有实例共享这些文件。
RAC配置中的Oracle实例把信息写到以下定义的裸设备:
●控制文件
●spfile.ora
●每个数据文件
●每个联机重做日志文件
●Server Manager (SRVM)配置信息
所以有必要为每个文件类别定义裸设备,Oracle数据库配置助手 (DBCA)将创建一个种子数据库,需要下列配置:
裸卷 | 文件 | 大小 | 样本文件名 |
SYSTEM | tablespace | 400 Mb | db_name_raw_system_400m |
USERS | tablespace | 120 Mb | db_name_raw_users_120m |
TEMP | tablespace | 100 Mb | db_name_raw_temp_100m |
UNDO TBS | tablespace | per instance 312 Mb | db_name_raw_undotbsx_312m |
CWMLITE | tablespace | 100 Mb | db_name_raw_cwmlite_100m |
EXAMPLE | 160 Mb | db_name_raw_example_160m | |
OEMREPO | 20 Mb | db_name_raw_oemrepo_20m | |
INDX | tablespace | 70 Mb | db_name_raw_indx_70m |
TOOLS | tablespace | 12 Mb | db_name_raw_tools_12m |
DRYSYS | tablespace | 90 Mb | db_name_raw_drsys_90m |
First control file | 110 Mb | db_name_raw_controlfile1_110m | |
Second control file | 110 Mb | db_name_raw_controlfile2_110m | |
Two ONLINE redo log files | per instance 120 Mb x 2 | db_name_thread_lognumber_120m | |
spfile.ora | 5 Mb | db_name_raw_spfile_5m | |
srvmconfig | 100 Mb | db_name_raw_srvmconf_100m |
注意:自动重做管理需要每个实例一个重做表空间,因此你需要最少2个上面描述的表空间。使用上表里的命名约定,裸分区被标识为数据库和裸卷类型。裸卷大小也使用此方式。样本文件名中的字符串db_name应该用实际的数据库名替换,thread是实例的线程号,log number是一个线程里的日志号。在你运行Oracle Universal Installer的节点上,创建一个ASCII文件来标识上面所示的裸卷对象,DBCA在安装和创建数据库中,需要这些裸卷对象存在。使
用如下格式命名裸卷对象:
database_object=raw_device_file_path
举例如下:
system1=/dev/rdb_name_system_400m
spfile1=/dev/rdb_name_spfile_5m
users1=/dev/rdb_name_users_120m
temp1=/dev/rdb_name_emp_100m
undotbs1=/dev/rdb_name_undotbs1_312m
undotbs2=/dev/rdb_name_undotbs2_312m
example1=/dev/rdb_name_example_160m
cwmlite1=/dev/rdb_name_cwmlite_100m
indx1=/dev/rdb_name_indx_70m
tools1=/dev/rdb_name_tools_12m
drsys1=/dev/rdb_name_drsys_90m
control1=/dev/rdb_name_cntrl1_110m
control2=/dev/rdb_name_cntrl2_110m
redo1_1=/dev/rdb_name_log11_120m
redo1_2=/dev/rdb_name_log12_120m
redo2_1=/dev/rdb_name_log21_120m
redo2_2=/dev/rdb_name_log22_120m
你必须通过设置下面的环境变量来指定Oracle使用此文件来决定裸设备卷,其中filename就是上面创建的ASCII文件:
csh:
setenv DBCA_RAW_CONFIG filename
ksh, bash or sh:
DBCA_RAW_CONFIG=filename; export DBCA_RAW_CONFIG
3.1.2 UNIX预安装步骤
注意:另外,你可以运行Note:189256.1里提供的installPrep.sh脚本,处理很多的UNIX环境问题。
配置了裸卷之后,在安装之前以root用户执行下面的步骤:
●添加Oracle用户
●确信在群集的所有节点上的/etc/group文件里定义了osdba组,在安装过程中要指派osdba组,组号和osoper组 ,这些组名称必须在群集的所有节点上唯一,并作为Real Application Clusters database的一部分。 默认的osdba和osoper组名为dba,并且也需要一个oinstall组,作为软件属主的primary组,典型的条目看起来如下:
dba::101:oracle
oinstall::102:root,oracle
下面是一个例子命令,用于创建dba组,组号为101:
# mkgroup -'A' id='101' users='oracle' dba
●在每个节点上创建一个Oracle帐号,使得:
◆它是osdba组(如dba)的一个成员
◆它的primary group是oinstall
◆它只用于安装和升级Oracle软件
◆在远程目录上有写权限
下面是一个例子命令,用于创建oracle用户:
Smit -> Security & Users -> Users -> Add a User
快速路径:
# smit mkuser
Add a User
Type or select values in entry fields.Press Enter AFTER making all desired changes.
[Entry Fields]
* User NAME [oracle]
User ID [101] #
ADMINISTRATIVE USER? false +
Primary GROUP [oinstall] +
Group SET [] +
ADMINISTRATIVE GROUPS [] +
ROLES [] +
Another user can SU TO USER? true +
SU GROUPS [ALL] +
HOME directory [/home/oracle]
Initial PROGRAM [/bin/ksh]
User INFORMATION []
EXPIRATION date (MMDDhhmmyy) [0]
Is this user ACCOUNT LOCKED? +
[MORE...36]
注意primary group 不是“dba”,使用oinstall是可选的,但推荐使用。
●在每个节点上创建一个挂载点目录,作为Oracle软件目录的最上层,使得:
◆在每个节点上的挂载点名称是唯一的,并和第一个节点相同。
◆oracle账号对此挂载点有读,写和执行权限。
●从运行Oracle Universal Installer的节点上,建立用户信任,通过添加条目到oracle账号的.rhosts或/etc/hosts.equiv文件里。
●用oracle账号检测信任关系。
●作为oracle账号,如果提示你输入密码,那么你在所有节点上为oracle账号设置的密码不一样。你必须纠正这个问题,否则Oracle Universal Installer不能使用rcp命令拷贝文件到远程节点。
建立系统环境变量:
●在用户路径里设置一个本地bin目录,如/usr/local/bin或 /opt/bin,这在此目录上拥有执行权限是必需的。
●设置DISPLAY变量指向系统(你运行OUI的机器)的 IP地址,名称,X服务器和屏幕。
●设置至少有20Mb空间的临时目录TMPDIR,并且OUI有写权限。
建立Oracle 环境变量:
ORACLE_BASE eg /u01/app/oracle
ORACLE_HOME eg /u01/app/oracle/product/901
ORACLE_TERM xterm
NLS_LANG AMERICAN-AMERICA.UTF8 for example
ORA_NLS33 $ORACLE_HOME/ocommon/nls/admin/data
PATH Should contain $ORACLE_HOME/bin
CLASSPATH $ORACLE_HOME/JRE:$ORACLE_HOME/jlib \$ORACLE_HOME/rdbms/jlib: \$ORACLE_HOME/network/jlib
●创建 /var/opt/oracle目录,并设置属主为oracle用户。
●验证存在 /opt/SUNWcluster/bin/lkmgr文件,被OUI使用以指明此安装在一个群集上执行。
注意:有一个可以下载的验证脚本InstallPrep.sh,在安装 Oracle Real Application Clusters之前运行,此脚本根据安装手册,验证系统是否配置正确,此脚本的输出将报告任何更多的任务需要在成功安装Oracle 9.x DataServer (RDBMS)之前完成。此脚本执行下列验证:
●ORACLE_HOME目录验证
●UNIX User/umask验证
●UNIX Group验证
●Memory/Swap验证
●TMP空间验证
●Real Application Cluster Option 验证
●Unix Kernel 验证
./InstallPrep.sh
You are currently logged on as oracle
Is oracle the unix user that will be installing Oracle Software? y or n
y
Enter the unix group that will be used during the installation
Default: dba
dba
Enter Location where you will be installing Oracle
Default: /u01/app/oracle/product/oracle9i
/u01/app/oracle/product/9.2.0.1
Your Operating System is AIX
Gathering information... Please wait
Checking unix user ...
user test passed
Checking unix umask ...
umask test passed
Checking unix group ...
Unix Group test passed
Checking Memory & Swap...
Memory test passed
/tmp test passed
Checking for a cluster...
AIX Cluster test
Cluster has been detected
You have 2 cluster members configured and 2 are curently up
No cluster warnings detected
Processing kernel parameters... Please wait
Running Kernel Parameter Report...
Check the report for Kernel parameter verification
Completed.
/tmp/Oracle_InstallPrep_Report has been generated
Please review this report and resolve all issues before attempting to install the Oracle Database Software
3.2 使用OUI安装RAC
根据这些步骤,使用Oracle Universal Installer来安装Oracle企业版和Real Application Clusters软件,Oracle9i由多个光盘提供,在安装过程中,需要更换光盘,OUI管理光盘的更换。
要安装Oracle软件,执行如下命令:
如果从光盘安装,那么以root用户登录,并加载第一个Oracle光盘:
# mount -rv cdrfs /dev/cd0 /cdrom
在光盘加载点,或从磁盘安装时,从Disk1位置,执行 "rootpre.sh" 脚本,参看Oracle9i Installation Guide Release 2 (9.X.X.X.0) for UNIX Systems: AIX-Based Systems, Compaq Tru64 UNIX, HP 9000 Series HP-UX, Linux Intel and Sun SPARC Solaris ,获取更多信息。
# //rootpre.sh
以oracle用户登录,并运行"runInstaller"。
$ //runInstaller
●在OUI欢迎界面,点击 Next。
●将出现Inventory Location的提示(如果这是第一次在此系统上运行OUI),这是OUI将安装文件的基础目录,Oracle Inventory定义可以在/etc/oraInst.loc文件里找到,点击OK。
●验证控制Oracle9i软件安装的用户的组,如果出现运行/tmp/orainstRoot.sh的指导说明,那么预安装步骤没有成功完成,典型地, /var/opt/oracle目录不存在或不能被oracle写入。运行/tmp/orainstRoot.sh以纠正此问题, Oracle Inventory files和其它部分被强制写入到ORACLE_HOME目录,点击Next。
●将显示File Location窗口,不要更改源字段,目标字段默认为ORACLE_HOME环境变量,点击Next。
●选择要安装的产品,在此例中,选择Oracle9i Server,然后点击Next。
●选择安装类型,选择Enterprise Edition,此屏幕上的选择是指安装方式,不是数据库配置,下一屏幕允许你选择自定义数据库配置,点击Next。
●选择配置类型,在此例中,你选择Advanced Configuration,自定义配置数据库和配置选择的服务器产品,选择Customized,并点击Next。
●选择要安装Oracle RDBMS软件的其它节点,不需要选择正在运行OUI的节点,点击Next。
●标识写入Oracle9i RAC配置信息要的裸分区,推荐此裸分区容量最小为100Mb。
●显示Upgrade or Migrate an existing database的选项,不要选择此按钮,Oracle移植工具不能升级一个RAC数据库,如果选择了此按钮,将发生一个错误。
●显示摘要屏幕,确认将要安装的RAC数据库软件,然后点击Install, OUI将安装Oracle9i到本地节点,然后拷贝此信息到选择的其它节点。
●当选择了Install之后,OUI将安装Oracle RAC软件到本地节点,然后拷贝软件到前面选择的其它节点,这将花费一些时间,在安装过程中,OUI不会显示信息,表明组件正被安装到其它节点-I/O活动可能是唯一表明过程正在继续。
3.3 使用ODCA创建一个RAC数据库
DBCA将为你创建一个数据库,DBCA使用优化的结构来创建你的数据库,这意味DBCA创建你的数据库文件,包括默认的服务器参数文件,使用标准文件命名和文件位置,DBCA的主要步骤为:
●验证你是否为每个表空间正确配置了共享磁盘(针对非群集文件系统)
●创建数据库
●配置Oracle网络服务
●启动数据库实例和监听
Oracle公司推荐你使用DBCA来创建你的数据库,这是因为DBCA预配置数据库以优化环境,获取Oracle9i优势特性,如服务器参数文件和自动重做管理。DBCA也使你可以定义任意的表空间,甚至是你需要跟DBCA模板里指定的不同的数据文件,你也可以执行用户指定的脚本。
DBCA和Oracle Net Configuration Assistant也为各类Oracle高可用性特性和群集管理工具准确配置你的RAC环境。
●DBCA将作为安装过程的一部分启动,但可以通过从$ORACLE_HOME/bin目录执行dbca命令来手动运行,显示RAC Welcome页面,选择Oracle Cluster Database选项,并点击Next。
●显示Operations页面,选择Create a Database选项,并点击Next。
●显示Node Selection页面,选择你想配置为RAC数据库部分的节点,并点击Next,如果节点从Node Selection丢失,那么执行$ORACLE_HOME/bin/lsnodes –v命令进行群集软件诊断,并分析输出信息,如果群集软件没有被正确安装,那么解决问题,然后重新启动DBCA。
●显示Database Templates页面,不同于新的数据库,模板包括数据文件,选择New Database,然后点击Next。
●Show Details按钮提供所选数据库模板的信息。
●现在,DBCA 显示Database Identification页面,输入Global Database Name和Oracle System Identifier (SID),Global Database Name 典型的格式为name.domain,例如mydb.us.oracle.com,SID被用于唯一标识一个实例,在RAC环境里,指定的SID被作用实例号的一个前缀,例如:MYDB, 将用MYDB1, MYDB2作为实例1和实例2。
●显示Database Options页面,选择你想配置的选项,然后点击Next, 注意:如果你没有从Database Template页面选择New Database,那么你不会看到此屏幕。
●Additional database Configurations按钮显示额外的数据库特性,确保选择了这两个按钮,点击OK。
●从Database Connection Options页面选择你要使用的connection options,点击Next。注意:如果你没有从Database Template页面选择New Database,那么你不会看到此屏幕。
●现在,DBCA显示Initialization Parameters页面,此页面由一系列选项字段组成,修改内存设置,然后选择File Locations选项,更新初始化参数文件名和位置,然后点击Next。
●Create persistent initialization parameter file选项默认被选择,如果你有一个群集文件系统,那么输入一个文件系统名,否则输入一个裸设备名,然后点击Next。
●File Location Variables?按钮显示变量信息,点击OK。
●All Initialization Parameters? 按钮显示初始化参数对话框,此对话框显示所有初始化参数的值,并使用包括Y/N的选择框来显示它们是否被创建包含到spfile里,实例特定参数在instance栏里有一个实例值。完成All Initialization Parameters页面里的所有条目,点击Close。注意:有一些参数不能通过此屏幕更改。点击Next。
●DBCA立即显示Database Storage窗口,此页允许你为数据库的每个表空间输入文件名。
●文件名被显示在Datafiles文件夹里,但通过选择Tablespaces图标,然后从扩展树选择表空间对象来输入,任何在这里显示的名称都可以被更改,可以使用一个配置文件,参看3.2.1,由环境变量DBCA_RAW_CONFIG指定。完成database storage information,并点击 Next。
●显示数据库创建选项页面,确保选择了创建数据库的选项,并点击Finish。
●显示DBCA摘要窗口,回顾此信息,然后点击OK。
●当使用OK选项时,摘要屏幕被关闭,DBCA根据指定的值,开始创建数据库。
现在,新的数据库已存在,它可以通过Oracle SQL*PLUS来访问或指派其它程序跟Oracle RAC数据库一起工作。
4.0 管理RAC实例
Oracle公司推荐你使用SRVCTL来管理你的RAC数据库环境,SRVCTL管理被几个Oracle工具所使用的配置信息 ,例如:Oracle Enterprise Manager和Intelligent Agent 使用SRVCTL产生的配置信息来发现和监视群集中的节点。在使用SRVCTL之前,确信在配置了数据库之后,Global Services Daemon (GSD)正在运行,要使用SRVCTL,你必须已经为你要管理的数据库创建了配置信息,你必须已经使用DBCA或SRVCTL add命令完成了配置信息。
如果这是群集上创建的第一个Oracle9i数据库,那么你必须初始化clusterwide SRVM 配置,首先,创建或编辑 /var/opt/oracle/srvConfig.loc文件,并添加srvconfig_loc=path_name条目,其中path_name是一个小的群集共享的裸卷,例如:
$ vi /var/opt/oracle/srvConfig.loc
srvconfig_loc=/dev/rrac_srvconfig_100m
然后,执行如下命令来初始化此裸卷(注意:当gsd正在运行时,不能运行它,对于9i Release 2之前的版本,你需要杀死 .../jre/1.1.8/bin/...进程来停止gsd,对于9i Release 2,使用gsdctl停止命令):
$ srvconfig -init
在你第一次使用SRVCTL工具来创建配置时,在所有节点上启动 Global Services Daemon (GSD) ,使得SRVCTL能够访问你的群集信息,然后执行srvctl添加命令,使得 Real Application Clusters知道哪些实例属于群集,语法如下:
对于Oracle RAC v9.0.1:
$ gsd
Successfully started the daemon on the local node.
$ srvctl add db -p db_name -o oracle_home
然后,从每个节点为每个实例输入命令:
$ srvctl add instance -p db_name -i sid -n node
要显示详细的配置信息,运行:
$ srvctl config
racdb1
racdb2
$ srvctl config -p racdb1
racnode1 racinst1
racnode2 racinst2
$ srvctl config -p racdb1 -n racnode1
racnode1 racinst1
按如下启动和停止RAC:
$ srvctl start -p racdb1
Instance successfully started on node: racnode2
Listeners successfully started on node: racnode2
Instance successfully started on node: racnode1
Listeners successfully started on node: racnode1
$ srvctl stop -p racdb2
Instance successfully stopped on node: racnode2
Instance successfully stopped on node: racnode1
Listener successfully stopped on node: racnode2
Listener successfully stopped on node: racnode1
$ srvctl stop -p racdb1 -i racinst2 -s inst
Instance successfully stopped on node: racnode2
$ srvctl stop -p racdb1 -s inst
PRKO-2035 : Instance is already stopped on node: racnode2
Instance successfully stopped on node: racnode1
对于Oracle RAC v9.2.0+:
$ gsdctl start
Successfully started the daemon on the local node.
$ srvctl add database -d db_name -o oracle_home [-m domain_name] [-s spfile]
然后为每个实例输入命令:
$ srvctl add instance -d db_name -i sid -n node
要显示详细的配置信息,运行:
$ srvctl config
racdb1
racdb2
$ srvctl config -p racdb1 -n racnode1
racnode1 racinst1 /u01/app/oracle/product/9.2.0.1
$ srvctl status database -d racdb1
Instance racinst1 is running on node racnode1
Instance racinst2 is running on node racnode2
按如下启动和停止RAC:
$ srvctl start database -d racdb2
$ srvctl stop database -d racdb2
$ srvctl stop instance -d racdb1 -i racinst2
$ srvctl start instance -d racdb1 -i racinst2
$ gsdctl stat
GSD is running on local node
$ gsdctl stop
关于srvctl和gsdctl的更多信息,参看Oracle9i Real Application Clusters administration手册。
5.0 参考手册
· Note: 182037.1 - AIX: Quick Start Guide - 9.0.1 RDBMS Installation
· Note: 201019.1 - AIX: Quick Start Guide - 9.2.0 RDBMS Installation
· Note: 77346.1 - Overview of HACMP Classic and / or HACMP/ES
· Note:137288.1 - Database Creation in Oracle9i RAC
· Note:183408.1 - Raw Devices and Cluster Filesystems With Real Application Clusters
· RAC/IBM AIX certification matrix
· Oracle9i Real Application Clusters Installation and Configuration Release 1 (9.0.1)
· Oracle9i Real Application Clusters Concepts
· Oracle9i Real Application Clusters Administration
· Oracle9i Real Application Clusters Deployment and Performance
· Oracle9i Installation Guide for Compaq Tru64, Hewlett-Packard HPUX, IBM-AIX, Linux, and Sun Solaris-based systems.
· Oracle9i Release Notes