linux下Oracle自動啟動與停止(一)

來源:互聯網
上載者:User
  1. 修改Oracle系統設定檔/etc/oratab
    /etc/oratab 格式為: SID:ORACLE_HOME:AUTO
    把AUTO網域設定為Y(大寫),只有這樣,oracle 內建的dbstart和dbshut才能夠發揮作用。我的為:
    $ORACLE_SID:$ORACLE_HOME:Y
    這兒的ORACLE_SID和ORACLE_HOME是oracle使用者下的環境變數,在不同的電腦上有不同的值.當你開啟/etc/oratab的時候,修改一下就行了.
  2. 編寫服務指令碼
    在/etc/rc.d/init.d目錄下建立oracle檔案作為啟動指令碼,內容如下:
    #!/bin/sh
    #
    # /etc/rc.d/init.d/oracle
    # 解說∶啟動及停止 Oracle 資料庫和監聽程式
    # 檢查如何執行指令檔
    case "$1" in
      start)
            echo -n "Starting Oracle Databases: "
            echo "----------------------------------------------------" >> /var/log/oracle
            date +"! %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
            echo "----------------------------------------------------" >> /var/log/oracle
            su - ora -c dbstart >> /var/log/oracle
            echo "Done."
            echo -n "Starting Oracle Listeners: "
            su - ora -c "lsnrctl start" >> /var/log/oracle
            #su - oracle  "sqlplus /nolog" <
            #connect /as sysdba
            #startup
            #exit
            echo "Done."
            echo ""
            echo "----------------------------------------------------" >> /var/log/oracle
            date +"! %T %a %D : Finished." >> /var/log/oracle
            echo "----------------------------------------------------" >> /var/log/oracle
            touch /var/lock/subsys/oracle
            ;;
      stop)
            echo -n "Shutting Down Oracle Listeners: "
            echo "----------------------------------------------------" >> /var/log/oracle
            date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
            echo "----------------------------------------------------" >> /var/log/oracle
            su - ora -c "lsnrctl stop" >> /var/log/oracle
            echo "Done."
            rm -f /var/lock/subsys/oracle
            echo -n "Shutting Down Oracle Databases: "
            su - ora -c dbshut >> /var/log/oracle
            echo "Done."
            echo ""
            echo "----------------------------------------------------" >> /var/log/oracle
            date +"! %T %a %D : Finished." >> /var/log/oracle
            echo "----------------------------------------------------" >> /var/log/oracle
            ;;
      restart)
            echo -n "Restarting Oracle Databases: "
            echo "----------------------------------------------------" >> /var/log/oracle
            date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
            echo "----------------------------------------------------" >> /var/log/oracle
            su - ora -c dbstop >> /var/log/oracle
            su - ora -c dbstart >> /var/log/oracle
            echo "Done."
            echo -n "Restarting Oracle Listeners: "
            su - ora -c "lsnrctl stop" >> /var/log/oracle
            su - ora -c "lsnrctl start" >> /var/log/oracle
            echo "Done."
            echo ""
            echo "----------------------------------------------------" >> /var/log/oracle
            date +"! %T %a %D : Finished." >> /var/log/oracle
            echo "----------------------------------------------------" >> /var/log/oracle
            touch /var/lock/subsys/oracle
            ;;
      *)
            echo "Usage: oracle {start|stop|restart}"
            exit 1
    esac
    在oracle使用者下輸入如上的內容,然後儲存退出,由於是啟動指令碼,需要執行許可權;執行命令chmod a+x oracle授予oracle執行許可權.
  3. 建立服務串連
    ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc2.d/S99oracle
    ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc3.d/S99oracle
    ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc5.d/S99oracle
    ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc0.d/K01oracle
    ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc6.d/K01oracle
  4. 測試
    運行./oracle start 命令,看是否能啟動資料庫,如果不能,查看日誌,尋找原因
    我在執行得時候遇到了如下得錯誤資訊
    Can't find init file for Database "linuxdb".
    Database "linuxdb" NOT started.
    通過查看${ORACLE_HOME}/bin/dbstart中的指令碼,根據錯誤資訊尋找到語句,得知系統中缺少
    ${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora設定檔
    解決辦法
    sqlplus "/as sysdba"
    create pfile from spfile;
    然後再執行就成功了.

    重新啟動linux主機,看資料庫是否自動啟動了.
    另外也可以通過別的方式啟動,系統在啟動的時候會遍曆/etc/profile.d目錄,把所有的.sh檔案都執行一遍.
    也可以通過修改/etc/rc.d/rc.local或/etc/rc.d/rc檔案來達到開機啟動程式的目的,但是局限是不能指定啟動使用者.
    如果在unix下,啟動指令碼應該建立在/sbin/init.d下,然後在/sbin/rc0~6.d下面建立串連;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.