现在的位置: 首页 > IT运维 > 正文

Linux的Oracle服务脚本

2010年11月18日 IT运维 ⁄ 共 2101字 暂无评论 ⁄ 被围观 746+

Linux下安装完Oracle之后,安装程序并没有将Oracle安装为系统服务,重启系统后,Oracle还要手工启动,通过以下脚本,可以随开机启动Oracle、随关机停止Oracle服务。

##########start of /etc/init.d/oracle################
#!/bin/bash
#
#  chkconfig: 35 95 5
#  description: Startup/Shutdown script for oracle listener 
#                       and instance;
#  tested in CentOS 5.5 x86_64 with Oracle 10gR2
#  writen by opensoce@gmail.com
#                      11/17/2010
#
#  save this shell as /etc/init.d/oracle , 
#  then do these:
#     chmod +x /etc/init.d/oracle
#     ln -s /etc/init.d/oracle /etc/rc3.d/S95oracle
#     ln -s /etc/init.d/oracle /etc/rc5.d/S95oracle
#     ln -s /etc/init.d/oracle /etc/rc0.d/K05oracle
#     ln -s /etc/init.d/oracle /etc/rc1.d/K05oracle
#     ln -s /etc/init.d/oracle /etc/rc2.d/K05oracle
#     ln -s /etc/init.d/oracle /etc/rc4.d/K05oracle
#     ln -s /etc/init.d/oracle /etc/rc6.d/K05oracle
##########################################

case "$1" in
start)
        # 如果在/var/lock/subsys 检测不到 oracle标志文件
        # 系统关机或重启会将Oracle当做普通程序杀死
        # 不论是否正在大量读写数据
        touch /var/lock/subsys/oracle

        echo "start tsnlisnter"
                su - oracle -c "lsnrctl start"

        echo "Start Oracle database instance"
        su - oracle -c "echo \\"
                        conn / as sysdba
                        startup
                        exit \\"|sqlplus /nolog"

        #echo " Start Emterprise Manager"
        #su - oracle -c "emctl start dbconsole"

        #echo "Start isqlplus"
        #su - oracle -c "isqlplusctl start"

        ;;
stop)
        # 如果在/var/lock/subsys 检测不到 oracle标志文件
        # 系统关机或重启会将Oracle当做普通程序杀死
        # 不论是否正在大量读写数据
        rm -rf /var/lock/subsys/oracle

        echo "Shutdown Oracle database instance"
        su - oracle -c "echo \\"
                        conn / as sysdba
                        shutdown immediate
                        exit \\"|sqlplus /nolog"

        echo "Stop tsnlisnter"
        su - oracle -c "lsnrctl stop"

        #echo " Stop Emterprise Manager"
        #su - oracle -c "emctl stop dbconsole"

        #echo "Stop isqlplus"
        #su - oracle -c "isqlplusctl stop"

        ;;
*)
        echo "Usage: $0 { start | stop }"
        exit 1
        ;;
esac
exit 0
##########end of /etc/init.d/oracle################

将改脚本保存为 /etc/init.d/oracle 文件,然后给他执行权限,在命令行下测试是否有效:

/etc/init.d/oracle start
/etc/init.d/oracle stop

看看能否正常启动、关闭数据库,其中关闭数据库等待时间會稍长一点。如果脚本正常工作,再做如下操作将其安装为系统服务:

ln -s /etc/init.d/oracle /etc/rc3.d/S95oracle
ln -s /etc/init.d/oracle /etc/rc5.d/S95oracle
ln -s /etc/init.d/oracle /etc/rc0.d/K05oracle
ln -s /etc/init.d/oracle /etc/rc1.d/K05oracle
ln -s /etc/init.d/oracle /etc/rc2.d/K05oracle
ln -s /etc/init.d/oracle /etc/rc4.d/K05oracle
ln -s /etc/init.d/oracle /etc/rc6.d/K05oracle

脚本中的 emctl、isqlplus的启动停止可以根据自己的需要确定是否要开机启动,如果需要开机启动,取消命令前面的注释即可。

给我留言

您必须 [ 登录 ] 才能发表留言!

×
#