yuping322 发表于 2013-1-25 22:43:12

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

最近突然发现我们的数据库启动比较麻烦,因为我们的Oracle有好几个数据库实例,每次重启的时候都需要修改ORACLE_SID(不知道有没有别的好办法,我暂时只会这样做),然后用Sqlplus连接,然后启动或者关闭,导致每次启动或者关闭都需要很多时间,而且麻烦,最近突然想到应该写一个脚本来实现,于是就开始动手做了。<o:p></o:p>
1、启动脚本<o:p></o:p>
关于Oracle的启动脚本,Oracle自己就有,所以我就用了Oracle自带的。<o:p></o:p>
具体步骤如下:<o:p></o:p>
a、 $cd $ORACLE_HOME<o:p></o:p>
b、 $cd bin<o:p></o:p>
c、 将Oracle自带的启动和关闭脚本复制一份,我们之后修改复制品就好了。<o:p></o:p>
     具体复制:dbstart和dbshut这两个文件,复制之后重新命名。<o:p></o:p>
     我复制了两份,分别是dbstartDB1,dbstartDB2,dbshutDB1,dbshutDB2<o:p></o:p>
2、Oratab修改<o:p></o:p>
     用root用户登录,然后切换到/etc目录,然后复制oratab这个文件,复制之后重新命名。<o:p></o:p>
     我复制了两份,分别是oratabDB1,oratabDB2<o:p></o:p>
     然后修改这两个复制品:<o:p></o:p>
     a、修改oratabDB1<o:p></o:p>
         将SIDofDB1:/opt/oracle/product/9.2.0:N 修改成 SIDofDB1:/opt/oracle/product/9.2.0:Y<o:p></o:p>
     b、修改oratabDB2<o:p></o:p>
         将SIDofDB1:/opt/oracle/product/9.2.0:N 修改成 SIDofDB2:/opt/oracle/product/9.2.0:Y<o:p></o:p>
3、修改启动和关闭脚本<o:p></o:p>
     a、修改dbstartDB1<o:p></o:p>
         将ORATAB=/etc/oratab 修改成 ORATAB=/etc/oratabDB1<o:p></o:p>
     b、修改dbshutDB1<o:p></o:p>
         将ORATAB=/etc/oratab 修改成 ORATAB=/etc/oratabDB1<o:p></o:p>
     c、修改dbstartDB2<o:p></o:p>
         将ORATAB=/etc/oratab 修改成 ORATAB=/etc/oratabDB2<o:p></o:p>
     d、修改dbshutDB2<o:p></o:p>
         将ORATAB=/etc/oratab 修改成 ORATAB=/etc/oratabDB2<o:p></o:p>
     这样修改之后,发觉已经可以打开和关闭数据库了,但是有时候关闭数据库非常缓慢,原来是关闭脚本有点问题。<o:p></o:p>
     于是我修改了dbshutDB1,编辑dbshutDB1,在shutdown后添加了一个参数immediate, 这样就可以很快地关闭数据库了。<o:p></o:p>
     同样也修改了dbshutDB2,不过这样修改有点不是很好,还是原来的比较安全。<o:p></o:p>
4、结果<o:p></o:p>
    前面已经作好了所有的准备工作,于是,就开始针对自己的数据库制作启动脚本了。<o:p></o:p>
    a、编写DB1.sh<o:p></o:p>
       内容如下:<o:p></o:p>
       #!/bin/sh<o:p></o:p>
       #Created by yaogao 2006-12-07<o:p></o:p>
       #Mail: yaogao@gmail.com<o:p></o:p>
       ORACLE_HOME=/opt/oracle/product/9.2.0<o:p></o:p>
       export ORACLE_SID=DB1<o:p></o:p>
       case $1 in<o:p></o:p>
       start)<o:p></o:p>
         echo "Start DB1.................."<o:p></o:p>
       . $ORACLE_HOME/bin/dbstartDB1 &<o:p></o:p>
         lsnrctl start DB1 &<o:p></o:p>
       ;;<o:p></o:p>
       stop)<o:p></o:p>
         echo "Stop DB1..................."<o:p></o:p>
       . $ORACLE_HOME/bin/dbshutDB1 &<o:p></o:p>
         lsnrctl stop DB1 &<o:p></o:p>
       esac<o:p></o:p>
       echo "Operation terminated.........."<o:p></o:p>
b、编写DB2.sh<o:p></o:p>
        内容如下:<o:p></o:p>
        #!/bin/sh<o:p></o:p>
        #Created by yaogao 2006-12-07<o:p></o:p>
        #Mail: yaogao@gmail.com<o:p></o:p>
        ORACLE_HOME=/opt/oracle/product/9.2.0<o:p></o:p>
        export ORACLE_SID= DB2<o:p></o:p>
        case $1 in<o:p></o:p>
        start)<o:p></o:p>
          echo "Start DB2.................."<o:p></o:p>
        . $ORACLE_HOME/bin/ dbstartDB2 &<o:p></o:p>
        ;;<o:p></o:p>
        stop)<o:p></o:p>
          echo "Stop DB2..................."<o:p></o:p>
        . $ORACLE_HOME/bin/ dbshutDB2 &<o:p></o:p>
        esac<o:p></o:p>
        echo "Operation terminated.........."<o:p></o:p>
   c、编写启动和关闭脚本<o:p></o:p>
      启动脚本:<o:p></o:p>
      #!/bin/sh<o:p></o:p>
      #Created by yaogao 2006-12-07<o:p></o:p>
      #Mail: yaogao@gmail.com<o:p></o:p>
      ./db1.sh start<o:p></o:p>
      ./db2.sh start<o:p></o:p>
      关闭脚本:<o:p></o:p>
      #!/bin/sh<o:p></o:p>
      #Created by yaogao 2006-12-07<o:p></o:p>
      #Mail: yaogao@gmail.com<o:p></o:p>
      ./db1.sh stop<o:p></o:p>
      ./db2.sh stop<o:p></o:p>
<o:p> </o:p>
   这样就大功告成了,如果还有DB3,用同样的方法处理就可以了。<o:p></o:p>
5、关于系统环境<o:p></o:p>
     Oracle9i,Redhat9<o:p></o:p>
 
页: [1]
查看完整版本: Oracle多个数据库启动和关闭脚本