简要说明:
在主备机分别安装两个数据库,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/