利用dbstart和dbshut脚本自动启动和停止数据库的问题

客户的两台IBM Power 740小型机使用HACMP软件创建互备关系的数据库服务器,每台小型机运行一个数据库,任何一台服务器出现故障宕机,另一台小型机应该立即接管,且要一并接管数据库,这时在一台小型机上就运行了两个数据库,故障服务器恢复正常之后,相应的数据库会自动切换回主机。

        在出现故障和恢复时,HACMP必须在两台小型机上调用启动和停止Oracle数据库的脚本完成切换过程,大部分的朋友应该和我一样应该会考虑使用Oracle的dbstart和dbshut脚本来生成相应的脚本。

        我也是这么做的,但这么做了之后在测试过程中发现了如下一个问题:
        1).正常启动HACMP之后,两个数据库正常的在两个小型机上运行。
        2).小型机A出现故障,数据库A被正常的切换到了小型机B上运行。
        3).小型机A恢复正常,原有数据库正常的切换了回来,但这时运行在小型机B上的数据库宕机了。

         上面的现象是什么原因喃,我查看了相关的文档,下面是一段很重要的文字描述:
Oracle recommends that you configure your system to automatically start Oracle Database when the system starts up, and to automatically shut it down when the system shuts down. Automating database startup and shutdown guards against incorrect database shutdown.

         Oracle推荐配置在系统启动的时候自动启动Oracle数据库,当系统关闭的时候自动关闭数据库,自动化数据库的启动和关闭是为了防止不正确的数据库关闭

To automate database startup and shutdown, use the dbstart and dbshut scripts, which are located in the $ORACLE_HOME/bin directory. The scripts refer to the same entries in the oratab file, which are applied on the same set of databases. You cannot, for example, have the dbstart script. automatically start sid1, sid2, and sid3, and have the dbshut script. shut down only sid1. However, you can specify that the dbshut script. shuts down a set of databases while the dbstart script. is not used at all. To do this, include a dbshut entry in the system shutdown file, but do not include the dbstart entry from the system startup files.

        为了实现自动化启动和关闭数据库,需要使用存放在$ORACLE_HOME/bin目录下的dbstart和dbshut脚本,这两个脚本引用/etc/oratab文件中的相同条目,应用于在相同的数据库集。不能有如下的情况,例如,使用dbstart脚本自动的开始sid1,sid2和sid3数据库,同时只使用dbshut脚本停止sid1数据库,这是做不到的。然而可以在不使用dbstart脚本启动数据库的情况下,指定使用dbshut脚本来停止数据库集。如果你想这么做,将包含dbshut脚本的条目写入操作系统停止文件,但是不要将包含dbstart脚本的条目写入操作系统的启动文件中。

       在使用dbstart和dbshut脚本启动和停止数据库之前需要先将存储在/etc/oratab配置文件中的数据库属性修改为Y,格式如下:sid:oracle_home_directory:[Y|N],然后就可以在系统启动配置文件和系统停止配置文件中加入dbstart和dbshut脚本使得系统在启动和异常关闭的情况下先启动和正常关闭数据库,避免数据库不正常的关闭带来的损失。脚本标准的用法是:
dbstart $ORACLE_HOME
dbshut $ORACLE_HOME

        从上面的描述我们可以了解到,如果一台服务器上有多套Oracle数据库,那么没法控制使用dbstart和dbshut脚本启动和停止某一个数据库,两个脚本会将/etc/oratab配置文件中属性修改为Y的数据库都启动和停止,这就是出现最开始描述的问题的原因。

        为了解决这个问题,只有手动写脚本来固定启动和停止某个数据库,下面是一个例子:

1).自动启动脚本。
root用户下面的脚本:
##############################################################

## start oracle server

echo "`hostname`:The ORACLE Server typt is starting,Please Waiting."

sleep 3

su - oracle -c "./a_start.sh"

sleep 3

echo "`hostname`:The ORACLE Server typt is started."

##############################################################

oracle用户下面的脚本:
a_start.sh

echo "Switch To typt"
export ORACLE_SID=typt

lsnrctl start

echo "Start Oracle DataBase typt Begin"

sqlplus /nolog  <<EOF

connect /as sysdba

startup

exit

EOF

sleep 3

echo "Start Oracle DataBase typt End"

        HACMP通过root用户下的脚本调用a_start.sh脚本完成对监听器和数据库的自动启动。

2).自动停止脚本。
root用户下的脚本:
##############################################################

## stop oracle server

echo "`hostname`:The ORACLE Server typt is stopping,Please Waiting."

su - oracle -c "./a_stop.sh"

sleep 5

echo "`hostname`:The ORACLE Server typt is stoped."

##############################################################

oracle用户下的脚本:
a_stop.sh

echo "Switch To typt"
export ORACLE_SID=typt

echo "Stop Oracle DataBase typt Begin"

sleep 5

sqlplus /nolog <<EOF

connect /as sysdba

shutdown immediate

exit

lsnrctl stop

EOF

echo "Stop Oracle DataBase typt End"

以上是自动停止Oracle数据库的脚本,HACMP通过root用户下的脚本调用a_stop.sh脚本自动停止Oracle数据库,两个脚本都是通过设置ORACLE_SID环境变量来明确的启动、停止数据库。

--end--

       感谢同事老谭对我的帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Windows下不使用密码远程登陆Linux

在登陆Linux进行管理的时候我们通常会使用用户名和密码进行登陆&#xff0c;这样一来是比较麻烦&#xff0c;二来是不安全&#xff0c;为了解决这个问题&#xff0c;我们可以使用公私钥 (public keys和private keys)进行认证。简单来说公钥存放在服务器上&#xff0c;私钥存放在…

dto 是只给前端需要的数据吗_DO、VO、DTO...XXOO,你弄明白了么

技术公众号&#xff1a;Java In Mind(Java_In_Mind),欢迎关注&#xff01;背景我相信&#xff0c;刚开始学习接触企业代码的时候&#xff0c;一定会发现&#xff0c;工程中充斥着各种XO&#xff1a;DO、VO、DTO、DAO&#xff0c;还有各种名词&#xff1a;POJO&#xff0c;JavaB…

Javascript判断object还是list/array的类型(包含javascript的数据类型研究)

前提&#xff1a;先研究javascript中的变量有几种&#xff0c;参考&#xff1a; http://www.w3school.com.cn/js/js_datatypes.asp http://glzaction.iteye.com/blog/1285147 测试1&#xff1a; typeof关键字 var obj {test:test}; typeof obj;//输出object var list [{test:t…

Core Data

简介 Core Data是iOS5之后才出现的一个框架&#xff0c;它提供了对象-关系映射(ORM)的功能&#xff0c;即能够将OC对象转化成数据&#xff0c;保存在SQLite数据库文件中&#xff0c;也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间&#xff0c;我们不需要编写任何…

tbase同步mysql_mysql主从同步

MySQL主从介绍MySQL主从叫做Replication、AB复制&#xff0c;A和B做主从后&#xff0c;在A上写数据。B上也会同步A的数据&#xff0c;两者实现实时同步MySQL是基于binlog日志来同步的&#xff0c;主上必须开启binlog才能进行主从同步&#xff0c;同步过程大概有三个步骤(1)主将…

2017将转行进行到底

2016 年说着转行&#xff0c;最后还是在匆匆中找了一份老本行&#xff0c;此刻的心情还是无爱&#xff0c;毕竟螺丝一直分不清啊&#xff0c;不喜欢就是不喜欢。看了django的教程&#xff0c;不得不感叹国外的书写的相对优秀一点&#xff0c;《learning django web development…

mysql中函数是否可以返回多个值_是否可以从mysql函数返回多个值?

我的脏解决方案是&#xff1a;1.连接字符串中的值. 2返回字符串. 3 Splits将字符串返回值.我认为它不优雅,我确信这有局限性,但它适用于简单的情况还有必要创建分裂函数,因为Mysql没有这个函数&#xff1a;首先编辑你的功能.CREATE FUNCTION yourFunctionWith2valuesForReturni…

lua自定义迭代器

迭代器 http://www.tutorialspoint.com/lua/lua_iterators.htm 迭代器能够让你遍历某个集合或者容器中的每一个元素。 对于lua来说&#xff0c; 集合通常指代 table&#xff0c; 用于创建变化的数据结构&#xff0c; 类似数组。 Iterator is a construct that enables you to t…

mysql非主键索引_主键索引和非主键索引的区别

1. 什么是最左前缀原则&#xff1f;以下回答全部是基于MySQL的InnoDB引擎例如对于下面这一张表如果我们按照 name 字段来建立索引的话&#xff0c;采用B树的结构&#xff0c;大概的索引结构如下如果我们要进行模糊查找&#xff0c;查找name 以“张"开头的所有人的ID&#…

优美的配色方案设计

2019独角兽企业重金招聘Python工程师标准>>> 怎么做好设计配色一直是个难题&#xff0c;虽然网站上有各种各样的色库&#xff0c;但配色仍然至关重要&#xff0c;不得已的话可以亲自动手&#xff0c;况且乐趣满满。 这个没有一套标准&#xff0c;所以看自己怎么喜欢…

It's a start!

开始博客之旅转载于:https://www.cnblogs.com/catchingdream/p/5843172.html

mysql死锁释放时间参数_【Mysql】mysql 事务未提交导致死锁 Lock wait timeout exceeded; try restarting transaction 解决办法...

问题场景问题出现环境&#xff1a;1、在同一事务内先后对同一条数据进行插入和更新操作&#xff1b;2、多台服务器操作同一数据库&#xff1b;3、瞬时出现高并发现象&#xff1b;不断的有一下异常抛出&#xff0c;异常信息&#xff1a;org.springframework.dao.CannotAcquireLo…

ORACLE sqlplus设置行数和宽度

1) 查看目前的pagesize,默认是14:Sqlplus代码show pagesize; 2) 将pagesize设置好100,则可以一次显示够多行记录了:Sqlplus代码set pagesize 100; 2. 设置行的宽度1) 查看目前的linesize,默认是80:Sqlplus代码show linesize; 2) 设置成100或者更宽都可以:Sqlplus代码set li…

mysql关系模式怎么画_关系数据库与mysql

表下面是阿里的mysql设计原则&#xff0c;可以参考&#xff0c;不一定按照阿里规则&#xff0c;但一个团队一定要有规则&#xff0c;如果现在没有规则&#xff0c;从现在开始&#xff0c;慢慢推广&#xff0c;适应1.【强制】表达是与否概念的字段&#xff0c;必须使用 is_xxx的…

Javascript 构造函数模式、原型模式

前两天写完组合继承&#xff0c;打算总结一下原型继承的&#xff0c;不过今天看了一下工厂模式、构造函数模式和原型模式&#xff0c;觉得有必要总结一下以加深印象。 ———————————————————————————————————————————————————…

2016年CCF第七次测试 俄罗斯方块

1 //2016年CCF第七次测试 俄罗斯方块2 // 这道小模拟题还是不错3 // 思路&#xff1a;处理出输入矩阵中含1格子的行数和列数4 // 再判是否有一个格子碰到底部&#xff0c;否则整体再往下移动一步&#xff0c;如果有一个格子不能移动&#xff0c;要返回到前一步5 6 #include <…

springmvc视图解析器_SpringMVC视图及REST风格

什么是视图解析器&#xff1f;springMVC用于处理视图最重要的两个接口是ViewResolver和View。ViewResolver的主要作用是把一个逻辑上的视图名称解析成一个真的的视图&#xff0c;而SpringMVC中用于把View对象呈现给客户端的是View对象本身&#xff0c;而ViewResolver只是把逻辑…

mysql5.7.x 1251_MySql-8.0.x免安装版下载与配置,Navicat打开数据库链接报错1251的解决办法...

概述MySQL从5.7一下子跳到了MySQL8.0, 其中的变化必然是很大的, 这里就不说了, 本文主要讲解最新版MySQL安装的事情.实际上5.7版本后的mysql免安装版都是没有data文件和my.ini文件的&#xff0c;下面再具体说明怎么生成&#xff0c;注意不能自己手动新建.下载下载程序必然去官网…

To install 64-bit ODBC drivers

为了更充分的利用硬件资源&#xff0c;我想很多人都开使用64位操作系统了&#xff0c;同时你可以也发现了在64位操作系统上ODBC的驱动找不到了&#xff0c;所以ODBC的东西都没法用了。 因为2007以前版本的Office只有32位版本&#xff0c;所以我们不能在64位系统上使用ODBC。使用…

【Qt开发】QTableWidget设置根据内容调整列宽和行高

QTableWidget要调整表格行宽主要涉及以下一个函数 1.resizeColumnsToContents(); 根据内容调整列宽 2.resizeColumnToContents(int col); 根据内容自动调整给定列宽 3.horizontalHeader()->setResizeMode 把给定列…