Oracle多个数据库启动和关闭脚本

最近突然发现我们的数据库启动比较麻烦,因为我们的Oracle有好几个数据库实例,每次重启的时候都需要修改ORACLE_SID(不知道有没有别的好办法,我暂时只会这样做),然后用Sqlplus连接,然后启动或者关闭,导致每次启动或者关闭都需要很多时间,而且麻烦,最近突然想到应该写一个脚本来实现,于是就开始动手做了。

1、启动脚本

关于Oracle的启动脚本,Oracle自己就有,所以我就用了Oracle自带的。

具体步骤如下:

a、 $cd $ORACLE_HOME

b、 $cd bin

c、 将Oracle自带的启动和关闭脚本复制一份,我们之后修改复制品就好了。

具体复制:dbstart和dbshut这两个文件,复制之后重新命名。

我复制了两份,分别是dbstartDB1,dbstartDB2,dbshutDB1,dbshutDB2

2、Oratab修改

用root用户登录,然后切换到/etc目录,然后复制oratab这个文件,复制之后重新命名。

我复制了两份,分别是oratabDB1,oratabDB2

然后修改这两个复制品:

a、修改oratabDB1

将SIDofDB1:/opt/oracle/product/9.2.0:N 修改成 SIDofDB1:/opt/oracle/product/9.2.0:Y

b、修改oratabDB2

将SIDofDB1:/opt/oracle/product/9.2.0:N 修改成 SIDofDB2:/opt/oracle/product/9.2.0:Y

3、修改启动和关闭脚本

a、修改dbstartDB1

将ORATAB=/etc/oratab 修改成 ORATAB=/etc/oratabDB1

b、修改dbshutDB1

将ORATAB=/etc/oratab 修改成 ORATAB=/etc/oratabDB1

c、修改dbstartDB2

将ORATAB=/etc/oratab 修改成 ORATAB=/etc/oratabDB2

d、修改dbshutDB2

将ORATAB=/etc/oratab 修改成 ORATAB=/etc/oratabDB2

这样修改之后,发觉已经可以打开和关闭数据库了,但是有时候关闭数据库非常缓慢,原来是关闭脚本有点问题。

于是我修改了dbshutDB1,编辑dbshutDB1,在shutdown后添加了一个参数immediate, 这样就可以很快地关闭数据库了。

同样也修改了dbshutDB2,不过这样修改有点不是很好,还是原来的比较安全。

4、结果

前面已经作好了所有的准备工作,于是,就开始针对自己的数据库制作启动脚本了。

a、编写DB1.sh

内容如下:

#!/bin/sh

#Created by yaogao 2006-12-07

#Mail: yaogao@gmail.com

ORACLE_HOME=/opt/oracle/product/9.2.0

export ORACLE_SID=DB1

case $1 in

start)

echo "Start DB1.................."

. $ORACLE_HOME/bin/dbstartDB1 &

lsnrctl start DB1 &

;;

stop)

echo "Stop DB1..................."

. $ORACLE_HOME/bin/dbshutDB1 &

lsnrctl stop DB1 &

esac

echo "Operation terminated.........."

b、编写DB2.sh

内容如下:

#!/bin/sh

#Created by yaogao 2006-12-07

#Mail: yaogao@gmail.com

ORACLE_HOME=/opt/oracle/product/9.2.0

export ORACLE_SID= DB2

case $1 in

start)

echo "Start DB2.................."

. $ORACLE_HOME/bin/ dbstartDB2 &

;;

stop)

echo "Stop DB2..................."

. $ORACLE_HOME/bin/ dbshutDB2 &

esac

echo "Operation terminated.........."

c、编写启动和关闭脚本

启动脚本:

#!/bin/sh

#Created by yaogao 2006-12-07

#Mail: yaogao@gmail.com

./db1.sh start

./db2.sh start

关闭脚本:

#!/bin/sh

#Created by yaogao 2006-12-07

#Mail: yaogao@gmail.com

./db1.sh stop

./db2.sh stop



这样就大功告成了,如果还有DB3,用同样的方法处理就可以了。

5、关于系统环境

Oracle9i,Redhat9

没有评论: