Oracle在linux下的開機自啟動(詳細)轉

滄海一滴發表於2014-05-30

linux下系統開機oracle自啟動(方法一) ---載入為服務自啟動、停止
一、dbstart   及   dbshut

1. 修改Oracle系統配置檔案:/etc/oratab,只有這樣,Oracle 自帶的dbstart和dbshut才能夠發揮作用。

# vi /etc/oratab
orcl:/opt/oracle/102:Y

#Entries are of the form:
#$ORACLE_SID:$ORACLE_HOME:<N|Y>

Oracle資料庫的自動啟動及停止可籍Oracle提供的dbstart及dbshut。
這些檔案又耍依靠 /etc/oratab存在才能使用(雖然更改dbshut和dbstart可解除這限制。)    
   
/etc/oratab格式如下:    
--------------------------------------------------------------------------------  
SID:ORACLE_HOME:AUTO  
--------------------------------------------------------------------------------
例如
--------------------------------------------------------------------------------
*:/opt/oracle9/product/9.2.0.4:N
boss:/opt/oracle9/product/9.2.0.4:Y
--------------------------------------------------------------------------------   

二、 init.d   及   rc.d  
要在開機關機時自動啟動和結束資料庫的話,你需要修改   Linux   的啟動指令碼檔案。這並不困難,不過,我需要指出這些改動因應不同的   Linux   發行版本(slackware,   debian,   redhat   等)而有所不同。
我這些例子適用於   Redhat   5.0。
要為你所用的   Linux   作出修改。
   
首先,我們要建立會執行   /etc/rc.d/init.d   目錄中   dbshut   及   dbstart   的指令碼檔案。把以下檔案命名為   /etc/rc.d/init.d/oracle:    
 
#############################################################

#chkconfig:2345 98 05
#description:Oracle Server

#add for oracle
ORACLE_BASE=/opt/oracle9
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/9.2.0.4
export ORACLE_HOME
ORACLE_SID=BOSS
export ORACLE_SID
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORA_NLS33
NLS_LANG=american_america.zhs16gbk
export NLS_LANG
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export LD_LIBRARY_PATH

case "$1" in
        start)
                echo "Starting Oracle..."
                su oracle -c "/opt/oracle9/product/9.2.0.4/bin/lsnrctl start"
                su oracle -c "/opt/oracle9/product/9.2.0.4/bin/dbstart 1>$ORACLE_HOME/bin/dbstart.log  2>$ORACLE_HOME/bin/dbstart.err"
                echo "Started."
exit 0
;;
        stop)
                echo "Stoping Oracle..."
                su oracle -c "/opt/oracle9/product/9.2.0.4/bin/lsnrctl stop"
                su oracle -c "/opt/oracle9/product/9.2.0.4/bin/dbshut"
                echo "Stoped."
exit 0
;;

*)
echo "Usage: $0 {start|stop}"
exit 1

esac


#############################################################

 


下面是另一SHELL的
--------------------------------------------------------------------------------   
    
#!/bin/sh   
#   
#chkconfig:2345 98 05
#description:Oracle Server
#/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   -   oracle   -c   dbstart   >>   /var/log/oracle   
                  echo   "Done."   
                  echo   -n   "Starting   Oracle   Listeners:   "   
                  su   -   oracle   -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   
                  ;;   
      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   -   oracle   -c   "lsnrctl   stop"   >>   /var/log/oracle   
                  echo   "Done."   
                  rm   -f   /var/lock/subsys/oracle   
                  echo   -n   "Shutting   Down   Oracle   Databases:   "   
                  su   -   oracle   -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   -   oracle   -c   dbstop   >>   /var/log/oracle   
                  su   -   oracle   -c   dbstart   >>   /var/log/oracle   
                  echo   "Done."   
                  echo   -n   "Restarting   Oracle   Listeners:   "   
                  su   -   oracle   -c   "lsnrctl   stop"   >>   /var/log/oracle   
                  su   -   oracle   -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   
    
    
    
不要吝嗇於檢查這個檔案到底有沒有真的正確地啟動和停止系統中的資料庫。請檢查記錄檔(log   file),看看有沒有錯誤訊息。     
弄妥這指令碼檔案後,我們要在正確的執行等級目錄   (runlevel   directories)   /etc/rc.d/rcX.d   中建立及刪除符號連結   (symbolic   links)。     
以下指令確保在執行等級   2,   3  ,  4,  5   下會叫出資料庫∶     
    
    
$   ln   -s   ../init.d/oracle   /etc/rc.d/rc2.d/S99oracle   
$   ln   -s   ../init.d/oracle   /etc/rc.d/rc3.d/S99oracle   
$   ln   -s   ../init.d/oracle   /etc/rc.d/rc4.d/S99oracle   
$   ln   -s   ../init.d/oracle   /etc/rc.d/rc5.d/S99oracle   
    
    
要在重新啟動時停止資料庫,我們需要以下連結∶     
    
$   ln   -s   ../init.d/oracle   /etc/rc.d/rc0.d/K01oracle                 # 停止   
$   ln   -s   ../init.d/oracle   /etc/rc.d/rc1.d/K01oracle                 # 停止  
$   ln   -s   ../init.d/oracle   /etc/rc.d/rc6.d/K01oracle                 # 重新啟動

========================
把oracle service新增到服務裡
# chkconfig –add /etc/rc.d/init.d/oracle

檢視自動啟動設定是否成功:
# chkconfig –list oracle
oracle     0:關閉     1:關閉     2:關閉     3:開啟     4:開啟     5:開啟     6:關閉
*從上面可以看出level為345的都已經開啟了,配置成功!
===============================

linux下系統開機oracle自啟動(方法二)
以root身份登入:
$su - root
1、linux下oracle自帶的dbstart和dbshut沒反應:   修改Oracle系統配置檔案/etc/oratab檔案: #vi /etc/oratab
  /etc/oratab 格式為: SID:ORACLE_HOME:AUTO
  把AUTO域設定為Y(大寫),我的為:
  oradb:/opt/u01/app/oracle/product/9.2.0.4:Y

   只有這樣,oracle 自帶的dbstart和dbshut才能夠發揮作用。
2、修改/etc/rc.d/rc.local配置檔案
   在/etc/rc.d/rc.local中加入如下內容: #vi /etc/rc.d/rc.local
   su - oracle -c "/u01/app/oracle/product/9.2.0.4/bin/lsnrctl start" 
   su - oracle -c "/u01/app/oracle/product/9.2.0.4/bin/dbstart start"
3、重新啟動
  #reboot
4、連線測試(以oracle身份登入)
  $sqlplus "
[email=sys/oracle@oradb]sys/oracle@oradb[/email]
as sysdba"
  ...
  sql>
5、說明自啟動成功了

 

名稱:su
  使用許可權:所有使用者
  使用方式:su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
  說明:變更為其他使用者的身份,除 root 外,需要鍵入該使用者的密碼
  引數:
  -f 或 --fast 不必讀啟動檔(如 csh.cshrc 等),僅用於 csh 或 tcsh
  -m -p 或 --preserve-environment 執行 su 時不改變環境變數
  -c command 或 --command=command 變更為帳號為 USER 的使用者並執行指令(command)後再變回原來使用者
  -s shell 或 --shell=shell 指定要執行的 shell (bash csh tcsh 等),預設值為 /etc/passwd 內的該使用者(USER) shell
  --help 顯示說明檔案
  --version 顯示版本資訊
  - -l 或 --login 這個引數加了之後,就好像是重新 login 為該使用者一樣,大部份環境變數(HOME SHELL USER等等)都是以該使用者(USER)為主,並且工作目錄也會改變,如果沒有指定 USER ,內定是 root
  USER 欲變更的使用者帳號
  ARG 傳入新的 shell 引數
  範例:
  su -c ls root 變更帳號為 root 並在執行 ls 指令後退出變回原使用者。
  su root -f 變更帳號為 root 並傳入 -f 引數給新執行的 shell。
  su - clsung 變更帳號為 clsung 並改變工作目錄至 clsung 的家目錄(home dir)。

 

 

相關文章