ServuceGuard和Oracle安装过程手记

简要说明:
在主备机分别安装两个数据库,ora9i1和ora9i2;正常情况下,db1运行ora9i1,Db2运行ora9i2;当某一台机器出现异常时,该机所运行的instance通过serviceguard自动切换到另一台主机上运行,即同一台主机同时运行两个数据库.

环境说明:
hpux 11.11
oracle 9.2.0.7
ServiceGuard 11.16

操作系统补丁
安装最新补丁集 June 2007,包括Bundle、GoldQPK
安装补丁:HP ANSI C compiler 、HP C++ A.03.27
安装ServiceGuard软件

内核参数调整

Kernel Parameter

Setting

KSI_ALLOC_MAX

(NPROC * 8)

MAX_THREAD_PROC

3000

MAXDSIZ

2147483648 bytes(0x80000000)

MAXDSIZ_64

2147483648 bytes(0x80000000)

MAXFILES

2048

MAXFILES_LIM

2048

MAXSSIZ

134217728 bytes(0x8000000)

MAXSSIZ_64BIT

1073741824(0x40000000)

MAXSWAPCHUNKS

16384

MAXUPRC

4090

MAXUSERS

512

MSGMAP

(MSGTQL + 2)

MSGMAX

8192

MSGMNB

16384

MSGMNI

4096

MSGSEG

32767

MSGSSZ

8

MSGTQL

4096

NCALLOUT

(NKTHREAD+16)

NCSIZE

(NINODE+VX_NCSIZE)+(8*DNLC_HASH_LOCKS)

NFILE

30000

NFLOCKS

4096

NINODE

((NPROC+16+MAXUSERS)+32+(2*NPTY))

NKTHREAD

(((NPROC*7)/4)+16)

NPROC

(20+8*MAXUSERS)

SEMA

1

SEMAEM

16384

SEMMAP

(SEMMNI + 2)

SEMMNI

8192

SEMMNS

16384

SEMMNU

4092

SEMUME

256

SEMVMX

32768

SHMEM

1

SHMMAX

2147483648(0x80000000)

SHMMNI

1024

SHMSEG

1024

VPS_CEILING

64


注:表格中的红色部分不用手工调整,该部分的数值是由其他的参数决定的。

在db1创建共享磁盘
使用eva4000作为共享磁盘;vgora1供ora9i1存放共享磁盘;vgora2供ora9i2存放共享磁盘;vglock用于serviceguard;
--------
mkdir /dev/vgora1
mknod /dev/vgora1/group c 64 0x020000
pvcreate /dev/rsdk/c5t0d2
vgcreate -s 32 /dev/vgora1 /dev/dsk/c5t0d2  #每个PE为32M
vgextend vgora1 /dev/dsk/c6t0d2       #添加备用链路
vgextend vgora1 /dev/dsk/c8t0d2
vgextend vgora1 /dev/dsk/c9t0d2
lvcreate -L 30720 /dev/vgora1
lvextend -l 2239  /dev/vgora1/lvol2
newfs -o largefiles  /dev/vgora1/rlvol1
newfs -o largefiles  /dev/vgora1/rlvol2
mount /dev/vgora1/lvol1 /arch1
mount /dev/vgora1/lvol2 /oradata1
--------
mkdir /dev/vgora2
mknod /dev/vgora2/group c 64 0x030000
pvcreate /dev/rdsk/c5t0d3
vgcreate -s 32 /dev/vgora2 /dev/dsk/c5t0d3
vgextend vgora2 /dev/dsk/c6t0d3
vgextend vgora2 /dev/dsk/c8t0d3
vgextend vgora2 /dev/dsk/c9t0d3
lvcreate -L 30720 /dev/vgora2
lvcreate -l 2239  /dev/vgora2
newfs -o largefiles  /dev/vgora2/rlvol1
newfs -o largefiles  /dev/vgora2/rlvol2
mount /dev/vgora2/lvol1 /arch2
mount /dev/vgora2/lvol2 /oradata2
--------
vglock(略)

导出配置到db2

(1) rp4440-1:
vgexport -s -p -m /tmp/vgora1.map vgora1
vgexport -s -p -m /tmp/vgora2.map vgora2
vgexport -s -p -m /tmp/map vglock
(2) 将*.map ftp到rp4440-2
(3) rp4440-2:
mkdir /dev/vglock
mknod /dev/vglock/group c 64 0x010000
mkdir /dev/vgora1
mknod /dev/vgora1/group c 64 0x020000
mkdir /dev/vgora2
mknod /dev/vgora2/group c 64 0x030000
vgimport -s  -m /tmp/vgora1.map vgora1
vgimport -s  -m /tmp/vgora2.map vgora2
vgimport -s  -m /tmp/vglock.map vglock


安装并配置xmanager
(略)

安装Oracle

创建用户、组,设定用户环境
     创建组dba
     创建用户oracle,属于dba,用户目录为/u01/ora920,使/u01的权限均属于oracle:dba 
     在oracle用户的.profile文件中增加以下几行
        export ORACLE_HOME=/u01/ora920/products
        export ORACLE_BASE=/u01/ora920/
        export NLS_LANG=american_america.UTF8
        export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
        export ORACLE_SID=ora9i1
        export PATH=$ORACLE_HOME/bin:$PATH
在ORACLE920安装介质的目录中运行runInstaller。执行安装。
在安装过程中根据提示以root身份在提示位置下执行脚本,安装即可顺利完成。
在安装即将结束的时候会出现一个ORA-29807: SPECIFIED OPERATOR DOES NOT EXIST错误,这是oracle的Bug,可忽略。在安装完成后以sys身份执行一下$ORACLE_HOME/rdbms/admin/utlrp.sql.
安装过程中不要创建数据库。
安装结束后,以oracle身份停掉所有与oracle相关的进程,安装SP7补丁。
执行/u02/oracle/bin/dbca创建两个数据库ora9i1和ora9i2。 
注:如果是用光盘安装,需采用pfs_mount的方式,否则文件格式有可能不对。

配置listner.ora

将oracle软件目录复制到rp4440-2
tar cvf ora920.tar /u01/oracle920
ftp到db2后解包到相应位置 tar xvf
更改.profile和listner.ora

ServiceGuard的配置

建立/.rhosts
-------------------------------
rp4440-1        root
rp4440-2        root
* 两台机器都需要配置

网卡准备
-------------------------------
netstat -i
lan0 心跳
lan3 业务
配置/etc/rc.config.d/netconf
  INTERFACE_NAME[1]="lan3"
  IP_ADDRESS[1]="10.10.10.1"
  SUBNET_MASK[1]="255.255.255.0"
  BROADCAST_ADDRESS[1]=10.10.10.255
  INTERFACE_STATE[1]=up
  DHCP_ENABLE[1]=0


配置cluster
----------------------------------
生成群集配置文件模板
cmquerycl -v -C /etc/cmcluster/cmcluster.ascii -n rp4440-1 -n rp4440-2
vi /etc/cmcluster/cmcluster.ascii
  CLUSTER_NAME cluster1
  FIRST_CLUSTER_LOCK_VG /dev/vglock
  NODE_NAME rp4440-1
   NETWORK_INTERFACE lan3 #心跳网络
   HEARTBEAT_IP   ...
   NETWORK_INTERFACE lan0 #备用网络
   HEARTBEAT_IP   ...
   FIRST_CLUSTER_LOCK_PV /dev/dsk/c?t?d?
  node_name rp4440-2
   ....
  node_timeout 5000000  ##(5s)
   ....
  VOLUME_GROUP /dev/vgora1
  VOLUMN_GROUP /dev/vgora2
  VOLUMN_GROUP /dev/vglock
  max_configured_packages 2
验证配置文件内容
cmcheckconf -k -v -C /etc/cmcluster/cmcluster.ascii
  !!貌似不需要
  分发二进制配置文件
  vgchange -a y /dev/vglock
  cmapplyconf -k -v -C /etc/cmcluster/cmcluster.ascii  --分发二进制文件到所有节点,但是不分发ascii文件
  vgchange -a n /dev/vglock

如果希望cluster在开机时自动启动,则编辑/etc/rc.config.d/cmcluster,将参数autostart_cmcld设为1

配置程序包
mkdir /etc/cmcluster/pkg_ora9i1
为程序包生成配置模板
cmmakepkg -p /etc/cmcluster/pkg_ora9i1/pkg_ora9i1.ascii
cmmakepkg -p /etc/cmcluster/pkg_ora9i2/pkg_ora9i2.ascii
  PACKAGE_NAME pkg_ora9i1
  PACKAGE_TYPE FAILOVER
  FAILOVER_POLICY CONFIGURED_NODE
  FAILBACK_POLICY MANUAL
  NODE_NAME rp4440-1 #如为rac则无需配置两个node,只需要本机的node即可;该包默认跑的那个node放在前面。
  NODE_NAME rp4440-2
  AUTO_RUN YES
  LOCAL_LAN_FAILOVER_ALLOWED YES
  NODE_FAIL_FAST_ENABLED NO
  RUN_SCRIPT. /etc/cmcluster/pkg_ora9i1/pkg_ora9i1.cntl
  RUN_SCRIPT_TIMEOUT NO_TIMEOUT
  HALT_SCRIPT. /etc/cmcluster/pkg_ora9i1/pkg_ora9i1.cntl
  HALT_SCRIPT_TIMEOUT NO_TIMEOUT
  SERVICE_NAME ora9i1
  SERVICE_FAIL_FAST_ENABLED NO
  SERVICE_HALT_TIMEOUT 10
  #SUBNET 10.12.5.0 ????  --package对应的子网
为程序包生成control file:
cmmakepkg -v -s /etc/cmcluster/pkg_ora9i1/pkg_ora9i1.cntl
chmod +x /etc/cmcluster/pkg_ora9i1/pkg_ora9i1.cntl
vi /etc/cmcluster/pkg_ora9i1/pkg_ora9i1.cntl
  VG[0]="vgora1"
  LV[0]="/dev/vgora1/lvol2"; FS[0]="/oradata1"; FS_MOUNT_OPT[0]="-o rw"
  LV[1]="/dev/vgora1/lvol1"; FS[1]="/arch1"; FS_MOUNT_OPT[1]="-o rw"
  
  IP[0]="10.12.5.19"  #虚地址
  SUBNET[0]="10.12.5.0" 
  
  SERVICE_NAME[0]="ora9i1"
  SERVICE_CMD[0]="/etc/cmcluster/pkg_ora9i1/oracle9i.sh monitor"
  SERVICE_RESTART[0]=""
  
  function customer_defined_run_cmds
  {
  # ADD customer defined run commands.
  : # do nothing instruction, because a function must contain some command.
  /etc/cmcluster/pkg_ora9i1/oracle9i.sh start
  test_return 51
  }
  function customer_defined_halt_cmds
  {
  # ADD customer defined halt commands.
  : # do nothing instruction, because a function must contain some command.
  /etc/cmcluster/pkg_ora9i1/oracle9i.sh shutdown
  test_return 52
  }

vi /etc/cmcluster/pkg_ora9i1/oracle9i.sh
  SID_NAME=ora9i1
  ORACLE_HOME=/u01/ora920/products
  LISTENER_NAME=LISTENER1
  LISTENER_PASS=
  MONITOR_INTERVAL=30
  PACKAGE_NAME=pkg_ora9i1
  pfile路径

创建package2,同package1

验证配置文件
cmcheckconf -C /etc/cmcluster/cmcluster.ascii \
-P /etc/cmcluster/pkg_ora9i1/pkg_ora9i1.ascii  \
-P /etc/cmcluster/pkg_ora9i2/pkg_ora9i2.ascii

登陆到rp4440-2,同步shell脚本和包控制文件:
rcp -r rp4440-1:/etc/cmcluster/pkg_ora9i1 .

rp4440-1
vgchange -a y vglock
cmapplyconf -v -C /etc/cmcluster/cmcluster.ascii \
-P /etc/cmcluster/pkg_ora9i1/pkg_ora9i1.ascii \
-P /etc/cmcluster/pkg_ora9i2/pkg_ora9i2.ascii
???vgchange -a n vglock

验证Cluster

cmruncl -v          #启动cluster
cmviewcl           #察看cluster运行状况
完成以下测试
(1) 在rp4440-1杀oracle后台进程, pkg_ora9i1自动切换到rp4440-2
(2) 在rp4440-1执行cmhaltnode, pkg_ora9i1自动切换到rp4440-2
(3) rp4440-2 reboot,pkg_ora9i2自动切换到rp4440-1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/55472/viewspace-331030/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/55472/viewspace-331030/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值