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>

     具体制:dbstartdbshut两个文件,制之后重新命名。<o:p></o:p>

     制了两份,分dbstartDB1,dbstartDB2,dbshutDB1,dbshutDB2<o:p></o:p>

2Oratab修改<o:p></o:p>

     root,然后切/etc,然后oratab个文件,制之后重新命名。<o:p></o:p>

     制了两份,分oratabDB1oratabDB2<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>

    aDB1.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: [email protected]<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>

bDB2.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: [email protected]<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: [email protected]<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: [email protected]<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>

     Oracle9iRedhat9<o:p></o:p>

 



你可能感兴趣的:(oracle,c,脚本,db2,Gmail)