目的
此文档向读者提供如何安装一个群集,安装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> * Cluster Name [cluster1]
“Cluster> 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> 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> 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> 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> 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> 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> 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> * 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]
“Resource Group Name”是任意字符,用于在配置卷组时选择,因为我们正在配置一个共享资源,“Node> 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> 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> 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'> ●在每个节点上创建一个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> 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
然后,执行如下命令来初始化此裸卷(注意:当gsd正在运行时,不能运行它,对于9i> $ 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> · 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> · 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.