一、软硬件配置检查
1、检查内存
#/usr/contrib/bin/machinfo
CPU info:
4 Intel(R) Itanium 2 9100 series processors (1.59 GHz, 18 MB)
532 MT/s bus, CPU version A1
8 logical processors (2 per socket)
Memory: 32737 MB (31.97 GB)
Firmware info:
Firmware revision: 04.11
FP SWA driver revision: 1.18
IPMI is supported on this system.
BMC firmware revision: 5.24
Platform info:
Model: "ia64 hp server rx6600"
Machine ID number: 85468ec4-4ed7-11de-b9fa-eb58278042cf
Machine serial number: SGH4917N5P
OS info:
Nodename: rx6600b
Release: HP-UX B.11.31
Version: U (unlimited-user license)
Machine: ia64
ID Number: 2235993796
vmunix _release_version:
@(#) $Revision: vmunix: B.11.31_LR FLAVOR=perf
2、检查交换空间
#/usr/sbin/swapinfo -a
Kb Kb Kb PCT START/ Kb
TYPE AVAIL USED FREE USED LIMIT RESERVE PRI NAME
dev 8388608 0 8388608 0% 0 - 1 /dev/vg00/lvol2
reserve - 579384 -579384
memory 31886172 4310692 27575480 14%
对于小于2g物理内存的系统,设置为物理内存的2倍。对应大于2g内存的系统,设置为跟物理内存同样大小。
3、检查临时空间
#bdf /tmp
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lvol4 2097152 548944 1536784 26% /tmp
保证至少400m,推荐1g
如果没有400M可以设置oracle用户的环境变量,增加临时空间
$ oracle用户执行 vi ~/.profile,增加
export TEMP=/directory
export TMPDIR=/directory
可以在线扩展文件系统
4、建立 oracle 安装目录,包括 crs (安装在共享存储上)
#lvcreate -L 15g -n lv_ora /dev/vg00
#newfs -F vxfs /dev/vg00/rlv_ora
#mkdir /oracle
#vi /etc/fstab 增加自动挂载
#mount /oracle
5、查看是否开启RAW设备的异步I/O
# swlist | grep -i -e extsw -e gold -e qpk
QPKBASE B.11.31.0903.334a Base Quality Pack Bundle for HP-UX 11i v3, March 2009
# ll /dev/async (默认是开启的)
crw-rw-rw- 1 bin bin 101 0x000000 Jun 9 09:38 /dev/async
没有开启可以通过一下方法开启
#创建/dev/async character device
/sbin/mknod /dev/async c 101 0x0
chown oracle:dba /dev/async
chmod 660 /dev/async
#用SAM在 kernel配置async driver
=> Kernel Configuration
=> Kernel
=> the driver is called ‘asyncdsk‘
Generate new kernel(生成新的kernel)
重启
# shutdown -r -y 0
#用sam设置HP-UX kernel参数
max_async_ports = init.ora参数中指定的processes值 + oracle后台进程的数量
aio_max_ops = 默认2048
6、检查系统时间是否同步
#date
查看每个节点的日期时间,尽可能的同步,如果不同步,用date MMDDHHMIYY ,比如2007/09/09 10:21,可以如下设置:date 0909102107进行同步
7、检查符合的连接是否存在
cd /usr/lib
ls libX*.sl
# 如果不存在需要创建
cd /usr/lib
ln -s libX11.3 libX11.sl
ln -s libXIE.2 libXIE.sl
ln -s libXext.3 libXext.sl
ln -s libXhp11.3 libXhp11.sl
ln -s libXi.3 libXi.sl
ln -s libXm.4 libXm.sl
ln -s libXp.2 libXp.sl
ln -s libXt.3 libXt.sl
ln -s libXtst.2 libXtst.sl
ls -al libX*.sl
8、查看网络接口
#查看各个接口
#lanscan
Hardware Station Crd Hdw Net-Interface NM MAC HP-DLPI DLPI
Path Address In# State NamePPA ID Type Support Mjr#
0/4/2/0 0x001A4B09924C 0 UP lan0 snap0 1 ETHER Yes 119
0/4/2/1 0x001A4B09924D 1 UP lan1 snap1 2 ETHER Yes 119
LinkAgg0 0x000000000000 900 DOWN lan900 snap900 4 ETHER Yes 119
LinkAgg1 0x000000000000 901 DOWN lan901 snap901 5 ETHER Yes 119
LinkAgg2 0x000000000000 902 DOWN lan902 snap902 6 ETHER Yes 119
LinkAgg3 0x000000000000 903 DOWN lan903 snap903 7 ETHER Yes 119
LinkAgg4 0x000000000000 904 DOWN lan904 snap904 8 ETHER Yes 119
#显示各个接口的ip和状态 (需要保证每台节点上使用的接口具有相同的名字)
#netstat -in
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lo0 32808 127.0.0.0 127.0.0.1 58845 0 58845 0 0
lan1 1500 192.168.1.0 192.168.1.3 91391 0 178583 0 0
lan0 1500 10.160.8.0 10.160.8.12 6760363 0 640706 0 0
# 显示指定接口的当前配置
#ifconfig lanX
保证一个接口比如lan0为外部连接用,一个接口如lan1为内部心跳线。vip的ip跟外部接口要在一个网段
9、编辑 /etc/hosts
#vi /etc/hosts
192.168.1.2 rx6600a-priv
192.168.1.3 rx6600b-priv
10.160.8.11 rx6600a
10.160.8.12 rx6600b
10.160.8.15 rx6600a-vip
10.160.8.16 rx6600b-vip
127.0.0.1 localhost loopback
//注意: hosts中必须存在127.0.0.1的条目,且只能对应localhost相关,不能对应hostname;如果不设置127.0.0.1,则无法正常启动数据库。
#vi .rhosts
rx6600a root
rx6600b root
rx6600a-priv root
rx6600b-priv root
rx6600a-vip root
rx6600b-vip root
# su - oracle
#vi .rhosts
rx6600a oracle
rx6600b oracle
rx6600a-priv oracle
rx6600b-priv oracle
rx6600a-vip oracle
rx6600b-vip oracle
10、查看hp-ux的具体patch 和pack
/usr/sbin/swlist -l bundle | grep xxxName
/usr/sbin/swlist -l patch
/usr/sbin/swlist -l patch <patch_number>
/usr/sbin/swlist -l product |grep Serviceguard
PHSS_38558 1.0 Serviceguard eRAC A.11.18.00
PHSS_39484 1.0 Serviceguard A.11.18.00
SG-NMAPI A.11.18.00 SG-NMAPI Serviceguard Extension for RAC SD product
SG-RAC-Tool A.11.18.00 Serviceguard Extension for RAC Toolkit SD Product
SGManagerPI B.01.01 HP Serviceguard Manager
SGWBEMProviders A.02.00.00 HP Serviceguard WBEM Providers SD Product
ServiceGuard A.11.18.00 Serviceguard SD Product
注:Hp-ux 11.31的默认安装过程,能够满足oracle 10.2.0.1的安装需求。
二、安装MC/SG
1、安装MC/SG
#mount /dev/cdrom /cdrom
#swinstall -s /cdrom
2、创建锁盘
#ioscan -m dsf //察看磁盘
#pvcreate -f /dev/disk/disk27
#mkdir /dev/vglock
#mknod /dev/vglock/group c 64 0x010000 (这里注意group不能重复)
#vgcreate /dev/vglock /dev/disk/disk27 (将物理磁盘disk23加给该卷组)
#strings /etc/lvmtab
/dev/vg00
/dev/disk/disk1_p2
/dev/vglock
/dev/disk/disk27
/dev/vgcrs
/dev/disk/disk33
/dev/vgdata2
/dev/disk/disk28
/dev/disk/disk34
/dev/vgdata1
/dev/disk/disk25
/dev/disk/disk26
#vgchange -a n /dev/vglock
#vgexport -s -p -v -m /tmp/vglock.map /dev/vglock
#rcp /tmp/vglock.map rx6600b:/tmp/
#vgimport -s -m /tmp/vglock.map
3、创建concurrent VG 及相关文件系统或 LV raw
#ioscan -m dsf
#pvcreate -f /dev/rdisk/disk12
#mkdir /dev/vg03
#mknod /dev/vg03/group c 64 0x030000
#vgcreate vg03 /dev/disk/disk12
#lvcreate -L 1000 -n mylv vg03
建立文件系统
#newfs -F vxfs /dev/vg03/mylv
#mkdir /oradata 建mount目录
#mount /dev/vg03/mylv /oradata mount文件系统
开机自动挂载文件系统
#vi /etc/fstab
如果是要共享的vg 则:
#vgchange -a n vg03 关闭卷组
#vgexport -p -s -m /tmp/map1 vg03 导出卷组配置信息(注:-p是保留卷组信息,-s是设为共享,-m /tmp/map1是生成map1卷组信息信息文件)
#rcp /tmp/map1 rx6600b:/tmp/map1 拷贝文件到主机B上
在 rx6600b 机器上
#mkdir /dev/vg03 创建设备卷目录
#mknod /dev/vg03/group c 64 0x030000 创建卷控制文件
(注:03是机器上唯一的,先用ls -l */group查看是否已存在,如已存在03,将改变此值,取值:00-16)
#vgimport -s -m /tmp/map1 vg03 导入vg03卷组信息
#strings /etc/lvmtab 查看导入的卷组配置
#vgchange -a y vg03 激活vg03卷组
#mkdir /oradata 建mount目录(与主机A相同)
#mount /dev/vg03/mylv /oradata mount文件系统
将VG设置为非自动激活
#vi /etc/lvmrc
其中
AUTO_VG_ACTIVATE=1 修改为0
4、MC/SG 配置
#cd /etc/cmcluster 进入cluster的默认目录
#cmquerycl -C cluster.ascii -n rx6600 -n rx6600 创建cluster文本文件
#vi cluster.ascii 编辑cluster ASCII 文件,更改cluste name、锁盘、节点心跳时间、包数量
CLUSTER_NAME cluster1
FIRST_CLUSTER_LOCK_VG /dev/vglock
NODE_NAME rx6600a
NETWORK_INTERFACE lan0
HEARTBEAT_IP 10.160.8.11
NETWORK_INTERFACE lan1
HEARTBEAT_IP 192.168.1.2
# CLUSTER_LOCK_LUN
FIRST_CLUSTER_LOCK_PV /dev/disk/disk27
NODE_NAME rx6600b
NETWORK_INTERFACE lan0
HEARTBEAT_IP 10.160.8.12
NETWORK_INTERFACE lan1
HEARTBEAT_IP 192.168.1.3
# CLUSTER_LOCK_LUN
FIRST_CLUSTER_LOCK_PV /dev/disk/disk32
HEARTBEAT_INTERVAL 1000000
NODE_TIMEOUT 2000000
AUTO_START_TIMEOUT 600000000
NETWORK_POLLING_INTERVAL 2000000
MAX_CONFIGURED_PACKAGES 4
///// VOLUME_GROUP /dev/vg02 热备双机时,设置
OPS_VOLUME_GROUP /dev/vglock //并发VG 的设置,用于 oracle RAC
OPS_VOLUME_GROUP /dev/vgcrs
OPS_VOLUME_GROUP /dev/vgdata2
OPS_VOLUME_GROUP /dev/vgdata1
#cmcheckconf -C cluster.ascii 检查cluster、节点配置情况
#cmapplyconf -C cluster.ascii 创建cluster
#cmruncl -v
#cmviewcl -v
5.配置服务包运行脚本、环境
主机A(rx660a):
#mkdir /etc/cmcluster/pkg1
#cd /etc/cmcluster/pkg1 创建和进入一目录
#cmmakepkg -p clustercrs.conf 创建包配置文件,可修改包名、节点、服务和包属性
#vi clustercrs.conf 编辑包配置文件
PACKAGE_NAME pkg1 //包名字
PACKAGE_TYPE FAILOVER //发生错误时进行切换。
NODE_NAME rx6600a //first 优先级节点1
//NODE_NAME rx6600b //second优先级节点1,当热备时用
AUTO_RUN YES //cmruncl 时,自启动。
NODE_FAIL_FAST_ENABLED NO //当pkg 发生问题时,节点是否也宕。
RUN_SCRIPT /etc/cmcluster/pkg1/clustercrs.cntl 包运行脚本
RUN_SCRIPT_TIMEOUT NO_TIMEOUT
HALT_SCRIPT /etc/cmcluster/pkg1/clustercrs.cntl 包停止脚本
HALT_SCRIPT_TIMEOUT NO_TIMEOUT
#CONFIGURED_NODE, MIN_PACKAGE_NODE, SITE_PREFERRED. //当pkg fail 时,切换到的节点规则
FAILOVER_POLICY CONFIGURED_NODE //切换到已配置的优先级高的节点。
FAILBACK_POLICY MANUAL //是自动AUTOMATIC ,还是 手动 切换回来。
MONITORED_SUBNET 10.160.8.0
#cmmakepkg -s clustercrs.cntl 创建包控制脚本
#vi clustercrs.cntl 编辑包控制脚本
clustercrs.cntl配置例子:
PATH=/usr/bin:/usr/sbin:/etc:/bin:/usr/lbin:/etc/cmcluster/pkg1 ///加入包文件目录的路径
VGCHANGE="vgchange -a s" //MC接管激活卷组的参数,默认是vgchange -a e ,RAC 用vgchange -a s
VG[0]=vg03 //切换接管的卷组名,可同时有多个,顺序是0、1、2、3
VG[1]="vgdata1"
VG[2]="vgdata2"
VG[3]="vgcrs"
/// LV[2]=/dev/vg03/mylv; FS[2]=/oradata; FS_MOUNT_OPT[2]="" // 逻辑卷的mount 目录,需要挂载的文件系统
//IP[0]=192.168.168.20 应用包的IP地址
//SUBNET[0]=192.168.168.0 应用包的监听网段
//SERVICE_NAME[0]="demo"
//SERVICE_CMD[0]="/usr/bin/X11/xclock -display 192.168.168.23:0"(或设置一个脚本,内容见附录)
//SERVICE_RESTART[0]="-R"
function customer_defined_run_cmds
{ (在此加入应用启动的命令)
test_return 51
}
function customer_defined_halt_cmds
{ (在此加入应用关闭的命令)
test_return 52
}
(注: SERVICE_NAME[0]="demo"是服务名,必须与demo.conf里的SERVICE_NAME相同名。SERVICE_CMD[0]= "..."是启动服务时运行的命令,现在用的命令是"/usr/bin/X11/xclock -display 192.168.168.23:0"表示运行xclock并在192.168.168.23的工作站上显示出来。SERVICE_RESTART[0] =""是服务重启的次数,“-r 2”是重启两次,“-R”是不断重启。)
4.在集群内添加服务包,配置各节点接管包环境
#rcp clustercrs.cntl rx6600b:/etc/cmcluster/pkg1 拷贝控制脚本,将demo.cntl控制脚本拷到主机B上,使其环境同步)
#cmcheckconf -v -P clustercrs.conf 检查包配置,检验以上对包的配置是否有误,在脚本目录里会有与脚本名相同的log文件,如:demo.cntl.log 。如果一切无误将接着做下一步,否则要做相应的修改,直至无误。)
#cmapplyconf -v -P clustercrs.conf 将包加入集群cluster
执行配置检查
#cmcheckconf -v -C /etc/cmcluster/cmcluster.ascii -P /etc/cmcluster/informix/informix.cntl
重新分发cluster.ascii文件
#cmapplyconf -v -C /etc/cmcluster/cluster.ascii -P /etc/cmcluster/informix/informix.cntl
#cmrunpkg cluster 运行demo包
#cmviewcl -v 查看cluster和cluster里节点的信息
CLUSTER、NODE、INTERFACE、PACKAGE的状态都是up和running ,PKG_SWITCH、NODE_TYPE SWITCHING都是enabled,)
5.启动和管理、集群、节点、服务包
#cmruncl 启动集群cluster
#cmhaltcl 关闭集群cluster
#cmrunnode node_name 启动一个或多个节点
#cmhaltnode -f node_name 关闭一个或多个节点
#cmrunpkg pkg_name 启动应用包
#cmhaltpkg pkg_name 关闭应用包
#cmviewcl -v 查看cluster和cluster里节点的信息
#cmmodpkg -e pkg_name 使应用包可被接管、切换
#cmmonpkg -e -n node_name pkg_name 使节点可接管应用包
附录:
mc的监控脚本可以写一个无实质的循环指令,目的在于让命令不执行不间断。可以起一个名为monitor的脚本,在脚本内写入简单的,如:
while [ 1 ]
do
sleep 30
done
安装 oracle clusterware
采取文件系统形式或 LV raw 方式,则需要OPSVG 解决concurrent VG的问题。
#groupadd -g 201 dba
#groupadd -g 200 oinstall
#useradd -u 200 -g oinstall -G dba,oinstall oracle //如果没有创建oracle的默认目录,创建默认目录 /home/oracle
#id oracle //检查是否存在nobody用户
#id nobody
编辑oracle用户$HOME目录下的.rhosts
#vi /home/oracle/.rhosts
rx6600a oracle
rx6600a_vip oracle
rx6600a_priv oracle
rx6600b oracle
rx6600b_vip oracle
rx6600b_priv oracle
配置 profile 文件
#vi /home/oracle/.profile
ORACLE_HOME=/oracle/product/10.2.0
export ORACLE_HOME
ORACLE_BASE=/oracle
export ORACLE_BASE
ORACLE_SID=gzga1
export ORACLE_SID
export ORA_CRS_HOME=/oracrs
JAVA_HOME=/opt/java1.5
export JAVA_HOME
TNS_ADMIN=$ORACLE_HOME/network/admin
export TNS_ADMIN
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG
NLS_LANGUAGE=$NLS_LANG
export NLS_LANGUAGE
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data export ORA_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/rdbms/lib32
export LD_LIBRARY_PATH
export SHLIB_PATH
stty erase
PATH=$PATH:/opt/java1.5/bin:/bin:/usr/bin:/usr/sbin:/etc:/opt/bin:/usr/ccs/bin:/usr/local/bin:$ORACLE_HOME/bin:.
export PATH
TMP=/tmp export TMP
TMPDIR=/tmp export TMPDIR
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/jdbc/lib/classes12.zip
export CLASSPATH
ORACLE_BASE=/oracle/app/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db;export ORACLE_HOME
export ORA_CRS_HOME=/oracrs
ORACLE_SID=gzga1;export ORACLE_SID
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data;export ORA_NLS33
ORACLE_TERM=vt100;export ORACLE_TERM
TMPDIR=/oracle/tmp;export TMPDIR
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib;export LD_LIBRARY_PATH
PATH=/usr/ccs/bin:$ORACLE_HOME/bin:/usr/bin:/usr/opt/networker/bin:$PATH;export PATH
DISPLAY=10.160.8.191:0.0;export DISPLAY
NLS_LANG=american_america.zhs16gbk;export NLS_LANG
TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
TERM=vt100;export TERM
EDITOR=vi; export EDITOR
TMP=/tmp;export TMP
CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/plsql/jlib:$ORACLE_HOME/assistants/jlib:$ORACLE_HOME/assistants/dbca/jlib;export CLASSPATH
DBCA_RAW_CONFIG=/oracle/dbca_raw_config.txt;export DBCA_RAW_CONFIG
export PS1=`hostname`@`whoami`‘[$PWD]‘$
创建clusterWare和oracle的安装目录
mkdir -p /oracle/product/CRS
mkdir -p /oracle/product/RAC10g
chown -R oracle:oinstall /oracle
chmod -R 775 /oracle
# 设置OCR使用的raw设备:
chown root:oinstall /dev/rdisk/disk140
chmod 640 /dev/rdisk/disk140
如果数据库采用 ASM 方式,则不需要 MC/SG 双机软件
需要修改 磁盘的属性
chown oracle:dba /dev/rdisk/disk137
chown oracle:dba /dev/rdisk/disk138
chown oracle:dba /dev/rdisk/disk139
chmod 660 /dev/rdisk/disk137
chmod 660 /dev/rdisk/disk138
chmod 660 /dev/rdisk/disk139
安装oracle 数据库
#/cdrom/database/runInstaller -ignoresysprereqs