第 6 页 共 10 页
fi
sync
# 卸载共享盘, 这里用到的是ROSEHA通过的大小的UMOUNT命令, 其后跟两个参数: # 一个是 设备名称, 另一个是 该设备对应的mount 点目录
#
/opt/roseha/bin/UMOUNT $DISKDEV $MOUNTPOINT
# 判断是否卸载共享盘成功, 如果不能卸载共享盘, 则强行reboot本机, # 以确保对方主机能够接管成功
#
grep $DISKDEV on $MOUNTPOINT >/dev/null 2>&1 if test $? -eq 0 then
${out} \ARNING] Cannot umount ${DISKDEV}.\ FatalExit fi
# 报告脚本执行完成
#
${out} \
ora_stop.sh 脚本文件实例 中调用到的 oracle停止命令文件 oraclestop.cmd (本文件缺省没有,
# 补充说明:
# 在连接到 Oracle 数据库时, # 在 Oracle 8i 中使用命令 # svrmgrl
# 在 Oracle 9i 中使用命令
# sqlplus “ / as sysdba “
需要现场手工编写, 内容如下)
connect internal shutdown abort exit
第 7 页 共 10 页
关于手工测试ora_start.sh 和 ora_stop.sh 脚本的方法步骤
通常情况下, 在ROSEHA中的配置步骤为: 1. 安装ROSEHA, 准备基本环境
2. 在ROSEHA中配置服务, 点击create完成. 3. 修改启动/停止脚本. 4. 手工测试脚本
5. 在RSOEHA中执行操作及测试
在这里需要说明的是, 在create了一个服务之后, 该服务处于灰色bring out状态,也就是未启动状态. 这时选中该服务, 再点击bing in 按钮,则可以调用ora_start.sh 启动oracle数据库.但是,在刚刚创建好ora这个服务(JOB)的情况下,通常不要先在GUI中执行BringIn的动作,这时应该先单独测试ora_start.sh 和 ora_stop.sh.
1. 在完成JOB的创建后, 离开GUI, 回到终端窗口, 首先确保每台主机的ora_start.sh 和 ora_stop.sh已经编写修改完成.
2. 单独手工测试ora_start.sh 和 ora_stop.sh脚本. 具体方法如下:
a) 确保本机和另外一台主机都没有启动oracle数据库, 没有使用共享卷(没有mount), 没
有挂上 Ative IP地址
b) 在本地先挂上Active IP地址. 因为Oracle 需要的Active IP地址在实际使用时是通过
ROSEHA来挂上的, 而不是通过OS来自动挂上. 因此在手工试验脚本时,需要先手工挂上Active IP地址. 启动oracle的listener需要该Active IP地址.如果Active IP地址是 192.200.200.99, 则可以使用命令: # ifconfig net0 alias 192.200.200.99 up
第 8 页 共 10 页
c) 然后进入到目录/opt/roseha/bin, 可以手工执行 ora_start.sh 来启动oracle数据库, 命令
格式为: # ./<脚本文件名> <参数一: test> <参数二: 该脚本文件对应的服务(在ROSEHA中的JOB)的名称> 例如:
# ./ora_start.sh test ora
其中 ora 是oracle这个服务在ROSEHA中的JOB名称, 出现在服务齿轮图标的下方. 判断ora_start.sh的执行是否正常, 共享盘是否正常mount, oracle数据库是否正常启动, listener是否正常启动. 如果发现有问题则可以及时修改脚本文件 d) 执行 ora_stop.sh 来停oracle数据库, 命令使用方法及格式同上:
# ./ora_stop.sh test ora
其中 ora 是oracle这个服务在ROSEHA中的JOB名称, 出现在服务齿轮的下方 判断 ora_stop.sh 是否执行正常. 如有必要则进行修改
e) 最后手工释放Active IP地址, 即执行ifconfig将Active IP地址down掉 f) 在另外一台主机上 执行 a) 到 e)
g) 当脚本手工测试没有问题后, 先让系统处于a) 状态, 然后则可以继续在ROSEHA中执
行BingIn和BingOut等动作,以及其它的测试项目
在上述的手工测试中,对于发现脚本中的错误,比较有帮助.在实际操作中一定要特别小心仔细.
Oracle数据库配合ROSEHA双机容错的注意事项
在双机中安装oracle数据库, 至少数据库部分需要创建(安装)在共享磁盘阵列上,至于Oracle的应用程序部分则可以安装在两台主机各自的本地硬盘上,也可以安装在共享磁盘阵列上, 但是两台主机的 oracle 用户 以及相应的 dba 组的 ID号均应该保持相同, oracle的安装路径, profile文件的配置, mount 点以及权限等等,均应该相同
listener.ora 和 tnsname.ora 中的HOST一项要设置成虚拟IP地址,这个地址是客户端访问Oracle数据库时用到的IP地址,也就是在ROSEHA中配置的Active IP Address, 此IP地址与两台主机本地的IP地址不同.
listener.ora
# LISTENER.ORA
File:/u01/oracle/app/oracle/product/8.1.6/network/admin/listener.ora # Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
Configuration
第 9 页 共 10 页
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.9.10.211)(PORT = 1521)) ) )
(DESCRIPTION = (PROTOCOL_STACK = (PRESENTATION = GIOP) (SESSION = RAW)
)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.9.10.211)(PORT = 2481)) ) )
SID_LIST_LISTENER = (SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/oracle/app/oracle/product/8.1.6) (PROGRAM = extproc) )
(SID_DESC =
(GLOBAL_DBNAME = jitong)
(ORACLE_HOME = /u01/oracle/app/oracle/product/8.1.6) (SID_NAME = ora8) ) )
tnsnames.ora #
TNSNAMES.ORA
Configuration
File:/u01/oracle/app/oracle/product/8.1.6/network/admin/tnsnames.ora # Generated by Oracle configuration tools.
JITONG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.9.10.211)(PORT = 1521)) )
(CONNECT_DATA =
(SERVICE_NAME = jitong)
)
)
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) )
(CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
hosts #
# Internet host table #
127.0.0.1 localhost
192.9.10.209 dbe4501 loghost 192.9.10.210 dbe4502
# oracle active IP address 192.9.10.211 oracle
第 10 页 共 10 页