zoukankan      html  css  js  c++  java
  • 配置Oracle数据库和监听随Linux系统自启动【转】

       在某些情况下需要在Linux操作系统上提供一种无人值守的随机启动Oracle的功能,目的也许仅仅是为了帮助那些对Oracle细节非常不关心的朋友。
    当然,如果有可能,一定不要使用这种自动化的方法,因为有太多不确定的因素存在。正途还是一边手工启动数据库,一边监控alert日志,以便第一时间发现问题解决问题。

    Anyway,随Linux系统启动数据库还是有其存在价值的,下面通过这个小文儿给大家展示一下这个自动化过程。

    1.确保“/etc/oratab”文件内容的正确性
    有则修改,无则创建“/etc/oratab”文件。该文件的功能是控制Oracle的启动(dbstart)和关闭脚本(dbshut)是否可用。
    # vi /etc/oratab
    ecis:/oracle/app/oracle/product/10.2.0/db_1:Y

    只有当尾部标识是“Y”时,dbstart和dbshut脚本才可以使用。
    dbstart和dbshut脚本存放位置是在ORACLE_HOME的bin目录下,可以使用下面的命令查看脚本的内容。
    $ cat $ORACLE_HOME/bin/dbstart
    $ cat $ORACLE_HOME/bin/dbshut

    2.修改oratab的访问权限
    # chmod 755 /etc/oratab
    # chown oracle:root /etc/oratab

    3.编写自动启停脚本,脚本名叫“oracle”,该文件需要保存在/etc/rc.d/init.d目录中。
    vi /etc/rc.d/init.d/oracle
    #!/bin/bash
    ##############################################################
    # Script. Function: Auto start oracle instance and listener. #
    # Script. Name:     oracle                                   #
    # Author:                                                        #
    # Date:            2015-11-13                                #
    ##############################################################
    case "$1" in
    start)
    echo "Starting Oracle Database..."
    su - oracle -c "dbstart"
    echo "Done."
    echo "Starting Oracle Listener..."
    su - oracle -c "lsnrctl start"
    echo "Done."
    touch /var/lock/subsys/oracle
    ;;
    stop)
    echo "Shutting down Oracle Listener..."
    su - oracle -c "lsnrctl stop" >> /var/log/oracle
    echo "Done."
    rm -f /var/lock/subsys/oracle
    echo "Shutting down Oracle Database..."
    su - oracle -c "dbshut"
    echo "Done."
    echo ""
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    *)
    exit 1
    esac

    4.脚本中需要说明的两个细节
    1)/var/lock/subsys/oracle这个文件是用来标识oracle实例已经运行。实现类似简单的锁定功能;
    2)为实现在root用户里向oracle用户发送启动和关闭数据库命令,需要使用“su”命令的“-c”选项,更多细节请使用man命令进行查询。

    5.修改oracle脚本的权限
    # chmod 755 oracle

    6.为保证该脚本可以在Linux系统启动过程中自动调用,因此需要建立如下连接文件。
    特别需要注意的一个细节:确定该脚本在网卡启动之后再执行,否则监听可能无法正常启动(假如Listener配置文件中使用的是IP地址)。
    # ln -s ../init.d/oracle /etc/rc.d/rc2.d/S87oracle
    # ln -s ../init.d/oracle /etc/rc.d/rc3.d/S87oracle
    # ln -s ../init.d/oracle /etc/rc.d/rc5.d/S87oracle

    7.到此,重新启动Linux系统后,Oracle的实例和监听就会自动启动。

    8.按照这样配置,您还可以使用如下简易方法停、启及重启数据库
    停止:
    # service oracle stop
    启动:
    # service oracle start
    重启:
    # service oracle restart

    9.小结
    本人推崇自动化,但这里介绍的自动化启动和关闭数据库的方法还请朋友们慎用。
    深入到数据库的启动和关闭的细节才是正道。

    Good luck.

    -- The End --
  • 相关阅读:
    二分图最大匹配的König定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/chenjunjie/p/4962353.html
Copyright © 2011-2022 走看看