Yuzhanquan的专栏

快乐学习、努力工作、健康生活,做好每一件事情

利用Oracle CRS搭建应用的高可用集群(三)

五、总结 - 及其他说明/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日志:
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.
这时候发现在输入网卡时候不小心输入了错误的网卡名称,公共网卡名称应该是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
#!/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
7.Oracle集群软件的安装响应文件crs.rsp ,其中在####之前需要修改   
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"
阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭