HP-UX oracle RAC 双机实践 (转载)

一、软硬件配置检查
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

HP-UX oracle RAC 双机实践 (转载)

上一篇:mysql


下一篇:【wordpress】 $wpdb 应用实例