五、总结 - 及其他说明/TIPS/文中提到的有用脚本:
从上面的配置及测试我们可以看到,只要掌握了应用程序的启动、关闭、检查的方法,我们就完全可以
利用Oracle CRS来搭建一般应用程序的高可用集群,从而保证了业务的连续性。
1.简单错误处理:如果在实施或测试过程中命令失败,或者有错误需要回退状态,
或者删除资源及相关信息,可以使用下面的几个命令:
crs_stop -f db
crs_unregister db
crs_profile -delete db
错误二:我在上面启动虚拟IP资源的时候报错:
root@rac01 # crs_start –all
….
Attempting to start `havip` on member `rac01`
`havip` on member `rac01` has experienced an unrecoverable failure.
Human intervention required to resume its availability.
…..
查看crs日志:
这时候发现在输入网卡时候不小心输入了错误的网卡名称,公共网卡名称应该是e1000g0,
结果使用的bge0,使用下面命令修改
root@rac01 # crs_profile -update havip -o oi=e1000g0
再次启动资源成功。
2.文中的sysdba命令是我习惯用的alias,需要在oracle的.bash_profile或者.profile中添加:
alias sysdba="sqlplus '/as sysdba'"
文中的命令crs_start/crs_stop/crs_profile/crs_register等命令位于$CRS_HOME/bin/目录下,
为了使用方面,一般需要手工将该PATH添加到root和oracle的PATH环境变量中去。
3.磁盘组的启动、关闭、监测脚本db.sh
4.文件系统的启动、关闭、监测脚本fs.sh
#!/bin/sh
# *****************************************************************
# shahand 2008-1-3
SCRIPT=$0
ACTION=$1 # Action (start, stop or check)
DG_NAME=oradata12
VOL_NAME=oradata
case $1 in
'start')
mount -F vxfs /dev/vx/dsk/$DG_NAME/$VOL_NAME /oradata
echo "Resource STARTED"
;;
'stop')
umount /oradata
echo "Resource STOPPED"
;;
'check')
if [[ `mount |grep $VOL_NAME |wc -c` -eq 0 ]]
then
exit 1
else
exit 0
fi
echo "Resource CHECKED"
;;
*)
echo "usage: $0 {start stop check}"
;;
esac
exit 0
5. 数据库的启动、关闭、监测脚本db.sh
#!/bin/sh
# *****************************************************************
# ## shahand 2008-1-3
# *****************************************************************
# /oracle/crs/crs/public/db.sh
SCRIPT=$0
ACTION=$1 # Action (start, stop or check)
CRS_HOME=/oracle/crs/
case $1 in
'start')
su - oracle -c "export ORACLE_SID=orcl;
sqlplus /nolog <<EOF
connect /as sysdba;
startup;
exit;
EOF"
exit $?
;;
'stop')
su - oracle -c "export ORACLE_SID=orcl;
sqlplus /nolog <<EOF1
connect /as sysdba;
alter system checkpoint;
shutdown immediate;
exit;
EOF1"
exit $?
;;
'check')
if [ ! -f $CRS_HOME/crs/public/db.sql ]
then
echo "connect /as sysdba;" > $CRS_HOME/crs/public/db.sql;
echo "spool /tmp/db_check.out;" >>$CRS_HOME/crs/public/db.sql;
echo "select status from v/$instance ;" >> $CRS_HOME/crs/public/db.sql;
echo "exit;" >> $CRS_HOME/crs/public/db.sql;
fi
su - oracle -c "export ORACLE_SID=orcl;sqlplus /nolog @$CRS_HOME/crs/public/db.sql";
if [ `cat /tmp/db_check.out|grep OPEN|wc -c` -eq 0 ]
then
exit 1
else
exit 0
fi
;;
*)
echo "usage: $0 {start stop check}"
;;
esac
exit 0
5. 监听的启动、关闭、监测脚本lsnr.sh
7.Oracle集群软件的安装响应文件crs.rsp ,其中在####之前需要修改
从上面的配置及测试我们可以看到,只要掌握了应用程序的启动、关闭、检查的方法,我们就完全可以
利用Oracle CRS来搭建一般应用程序的高可用集群,从而保证了业务的连续性。
1.简单错误处理:如果在实施或测试过程中命令失败,或者有错误需要回退状态,
或者删除资源及相关信息,可以使用下面的几个命令:
crs_stop -f db
crs_unregister db
crs_profile -delete db
错误二:我在上面启动虚拟IP资源的时候报错:
root@rac01 # crs_start –all
….
Attempting to start `havip` on member `rac01`
`havip` on member `rac01` has experienced an unrecoverable failure.
Human intervention required to resume its availability.
…..
查看crs日志:
2008-01-10 17:30:22.526: [ CRSRES][1580] startRunnable: setting CLI values
2008-01-10 17:30:22.527: [ CRSRES][1580] Attempting to start `dg` on member `rac01`
2008-01-10 17:30:22.589: [ CRSRES][1581] startRunnable: setting CLI values
2008-01-10 17:30:22.629: [ CRSRES][1581] Attempting to start `havip` on member `rac01`
2008-01-10 17:30:22.688: [ CRSAPP][1581] StartResource error for havip error code = 1
2008-01-10 17:30:22.749: [ CRSAPP][1581] StopResource error for havip error code = 1
2008-01-10 17:30:22.757: [ CRSRES][1581] X_OP_StopResourceFailed : Stop Resource failed
(File: rti.cpp, line: 1796
![]()
2008-01-10 17:30:22.758: [ CRSRES][1581][ALERT] `havip` on member `rac01` has experienced an ...
2008-01-10 17:30:22.758: [ CRSRES][1581] Human intervention required to resume its availability.
2008-01-10 17:30:23.211: [ CRSRES][1580] Start of `dg` on member `rac01` succeeded.
![]()
![]()
结果使用的bge0,使用下面命令修改
root@rac01 # crs_profile -update havip -o oi=e1000g0
再次启动资源成功。
2.文中的sysdba命令是我习惯用的alias,需要在oracle的.bash_profile或者.profile中添加:
alias sysdba="sqlplus '/as sysdba'"
文中的命令crs_start/crs_stop/crs_profile/crs_register等命令位于$CRS_HOME/bin/目录下,
为了使用方面,一般需要手工将该PATH添加到root和oracle的PATH环境变量中去。
3.磁盘组的启动、关闭、监测脚本db.sh
#!/bin/ sh
# *****************************************************************
# shahand 2008-1-3
![]()
SCRIPT =$0
ACTION =$1 # Action (start, stop or check )
![]()
DG_NAME= oradata12
VOL_NAME= oradata
case $1 in
'start' )
/usr/sbin/vxdg - tfC import $DG_NAME;
/usr/sbin/vxvol - g $DG_NAME startall
echo "Resource STARTED"
;;
'stop' )
/usr/sbin/vxvol - g $DG_NAME stopall;
/usr/sbin/ vxdg deport $DG_NAME
echo "Resource STOPPED"
;;
'check' )
if [[ `/usr/sbin/vxprint -v -g $DG_NAME |grep $VOL_NAME|wc -c` -eq 0 ] ]
then
exit 1
else
exit 0
fi
echo "Resource CHECKED"
;;
* )
echo "usage: $0 {start stop check }"
;;
esac
exit 0
![]()
4.文件系统的启动、关闭、监测脚本fs.sh
#!/bin/sh
# *****************************************************************
# shahand 2008-1-3
SCRIPT=$0
ACTION=$1 # Action (start, stop or check)
DG_NAME=oradata12
VOL_NAME=oradata
case $1 in
'start')
mount -F vxfs /dev/vx/dsk/$DG_NAME/$VOL_NAME /oradata
echo "Resource STARTED"
;;
'stop')
umount /oradata
echo "Resource STOPPED"
;;
'check')
if [[ `mount |grep $VOL_NAME |wc -c` -eq 0 ]]
then
exit 1
else
exit 0
fi
echo "Resource CHECKED"
;;
*)
echo "usage: $0 {start stop check}"
;;
esac
exit 0
5. 数据库的启动、关闭、监测脚本db.sh
#!/bin/sh
# *****************************************************************
# ## shahand 2008-1-3
# *****************************************************************
# /oracle/crs/crs/public/db.sh
SCRIPT=$0
ACTION=$1 # Action (start, stop or check)
CRS_HOME=/oracle/crs/
case $1 in
'start')
su - oracle -c "export ORACLE_SID=orcl;
sqlplus /nolog <<EOF
connect /as sysdba;
startup;
exit;
EOF"
exit $?
;;
'stop')
su - oracle -c "export ORACLE_SID=orcl;
sqlplus /nolog <<EOF1
connect /as sysdba;
alter system checkpoint;
shutdown immediate;
exit;
EOF1"
exit $?
;;
'check')
if [ ! -f $CRS_HOME/crs/public/db.sql ]
then
echo "connect /as sysdba;" > $CRS_HOME/crs/public/db.sql;
echo "spool /tmp/db_check.out;" >>$CRS_HOME/crs/public/db.sql;
echo "select status from v/$instance ;" >> $CRS_HOME/crs/public/db.sql;
echo "exit;" >> $CRS_HOME/crs/public/db.sql;
fi
su - oracle -c "export ORACLE_SID=orcl;sqlplus /nolog @$CRS_HOME/crs/public/db.sql";
if [ `cat /tmp/db_check.out|grep OPEN|wc -c` -eq 0 ]
then
exit 1
else
exit 0
fi
;;
*)
echo "usage: $0 {start stop check}"
;;
esac
exit 0
5. 监听的启动、关闭、监测脚本lsnr.sh
#!/bin/ sh
# *****************************************************************
# ## shahand 2008-1-3
# *****************************************************************
# /oracle/crs/crs/public/ lsnr.sh
![]()
SCRIPT=$0
ACTION =$1 # Action (start, stop or check )
![]()
case $1 in
'start' )
su - oracle - c "lsnrctl start"
exit $?
;;
![]()
'stop' )
su - oracle - c "lsnrctl stop"
exit $?
;;
'check' )
if [ `ps -ef|grep tnslsnr |wc -c` -eq 0 ]
then
echo "bad";
exit 1
else
echo "good";
exit 0
fi
;;
* )
echo "usage: $0 {start stop check }"
;;
esac
exit 0
![]()
ORACLE_HOME="/oracle/ crs"
sl_tableList={"rac01:rac01-priv:rac01-vip:N:Y","rac02:rac02-priv:rac02- vip:N:Y"}
ret_PrivIntrList={"e1000g0:10.198.88.0:1","e1000g1:192.168.0.0:2 "}
n_storageTypeOCR=2
s_ocrpartitionlocation ="/oracle/ ocrfile1"
s_ocrMirrorLocation= ""
n_storageTypeVDSK=2
s_votingdisklocation ="/oracle/ vdfile1"
s_OcrVdskMirror1RetVal= ""
s_VdskMirror2RetVal= ""
ORACLE_HOME_NAME= "OraCRS10ghome1"
################# complete modify #####################
RESPONSEFILE_VERSION=2.2.1.0.0
UNIX_GROUP_NAME = "oinstall"
FROM_LOCATION="../stage/ products.xml"
NEXT_SESSION_RESPONSE=<Value Unspecified>
TOPLEVEL_COMPONENT ={"oracle.crs","10.2.0.1.0 "}
DEINSTALL_LIST={"oracle.crs","10.2.0.1.0 "}
SHOW_SPLASH_SCREEN= false
SHOW_WELCOME_PAGE= false
SHOW_NODE_SELECTION_PAGE= false
SHOW_SUMMARY_PAGE= false
SHOW_INSTALL_PROGRESS_PAGE= false
SHOW_CONFIG_TOOL_PAGE= false
SHOW_XML_PREREQ_PAGE= false
SHOW_ROOTSH_CONFIRMATION= true
SHOW_END_SESSION_PAGE= false
SHOW_EXIT_CONFIRMATION= false
NEXT_SESSION= false
NEXT_SESSION_ON_FAIL= false
SHOW_DEINSTALL_CONFIRMATION= false
SHOW_DEINSTALL_PROGRESS= false
RESTART_SYSTEM= false
RESTART_REMOTE_SYSTEM= false
REMOVE_HOMES=
ORACLE_HOSTNAME =<Value Unspecified>
SHOW_END_OF_INSTALL_MSGS = false
COMPONENT_LANGUAGES= {"en"}
s_clustername= "crs"
CLUSTER_CONFIGURATION_FILE= ""
![]()
8 . Oracle数据库软件的安装响应文件db.rsp,其中在####之前需要修改
![]()
CLUSTER_NODES= {}
ORACLE_HOME_NAME= "OraDB10ghome1"
ORACLE_HOME="/oracle/ 10g"
##########################################################
FROM_LOCATION="../stage/ products.xml"
RESPONSEFILE_VERSION=2.2.1.0.0
UNIX_GROUP_NAME = "oinstall"
FROM_LOCATION_CD_LABEL=<Value Unspecified>
SHOW_WELCOME_PAGE = true
SHOW_CUSTOM_TREE_PAGE= true
SHOW_COMPONENT_LOCATIONS_PAGE= true
SHOW_SUMMARY_PAGE= true
SHOW_INSTALL_PROGRESS_PAGE= true
SHOW_REQUIRED_CONFIG_TOOL_PAGE= true
SHOW_CONFIG_TOOL_PAGE= true
SHOW_RELEASE_NOTES= true
SHOW_ROOTSH_CONFIRMATION= true
SHOW_END_SESSION_PAGE= true
SHOW_EXIT_CONFIRMATION= true
NEXT_SESSION= false
NEXT_SESSION_ON_FAIL= true
NEXT_SESSION_RESPONSE=<Value Unspecified>
DEINSTALL_LIST ={"oracle.server","10.2.0.1.0 "}
SHOW_DEINSTALL_CONFIRMATION= true
SHOW_DEINSTALL_PROGRESS= true
ACCEPT_LICENSE_AGREEMENT= false
TOPLEVEL_COMPONENT={"oracle.server","10.2.0.1.0 "}
SHOW_SPLASH_SCREEN= true
SELECTED_LANGUAGES= {"en"}
COMPONENT_LANGUAGES= {"en"}
INSTALL_TYPE= "Enterprise Edition"
sl_superAdminPasswds=<Value Unspecified>
sl_dlgASMCfgSelectableDisks = {}
s_superAdminSamePasswd=<Value Unspecified>
s_globalDBName = "orcl"
s_dlgASMCfgRedundancyValue="2 (Norm)"
s_dlgASMCfgNewDisksSize="0 "
s_dlgASMCfgExistingFreeSpace="0 "
s_dlgASMCfgDiskGroupName= "DATA"
s_dlgASMCfgDiskDiscoveryString= ""
s_dlgASMCfgAdditionalSpaceNeeded= " MB"
s_dbSelectedUsesASM= ""
s_dbSIDSelectedForUpgrade= ""
s_dbRetChar= ""
s_dbOHSelectedForUpgrade= ""
s_ASMSYSPassword=<Value Unspecified>
n_performUpgrade =0
n_dlgASMCfgRedundancySelected =2
n_dbType =1
n_dbSelection =0
b_useSamePassword = false
b_useFileSystemForRecovery= true
b_receiveEmailNotification= false
b_loadExampleSchemas= false
b_enableAutoBackup= false
b_dlgASMShowCandidateDisks= true
b_centrallyManageASMInstance= true
sl_dlgASMDskGrpSelectedGroup= {" "," "," "," "}
s_dlgRBOUsername= ""
s_dlgEMCentralAgentSelected= "No Agents Found"
b_useDBControl= true
s_superAdminSamePasswdAgain=<Value Unspecified>
s_dlgEMSMTPServer = ""
s_dlgEMEmailAddress= ""
s_dlgRBORecoveryLocation="/oracle/db/flash_recovery_area/ "
n_upgradeDB=1
n_configurationOption = 3c
sl_upgradableSIDBInstances= {}
n_upgradeASM=0
sl_dlgASMCfgDiskSelections = {}
s_ASMSYSPasswordAgain=<Value Unspecified>
n_dbStorageType =0
s_rawDeviceMapFileLocation = ""
sl_upgradableRACDBInstances= {}
s_dlgRBOPassword=<Value Unspecified>
b_stateOfUpgradeDBCheckbox = false
s_dbSid= "orcl"
b_dbSelectedUsesASM= false
sl_superAdminPasswdsAgain=<Value Unspecified>
s_mountPoint ="/oracle/db/oradata/ "
b_stateOfUpgradeASMCheckbox= false
oracle.assistants.server:OPTIONAL_CONFIG_TOOLS= "{}"
oracle.has.common:OPTIONAL_CONFIG_TOOLS= "{}"
oracle.network.client:OPTIONAL_CONFIG_TOOLS= "{}"
oracle.sqlplus.isqlplus:OPTIONAL_CONFIG_TOOLS= "{}"
oracle.sysman.console.db:OPTIONAL_CONFIG_TOOLS= "{}"
varSelect=1
s_nameForOPERGrp = "dba"
s_nameForDBAGrp= "dba"
![]()