【AUTO】配置Oracle資料庫和監聽隨Linux系統自啟動

secooler發表於2009-11-13
在某些情況下需要在Linux作業系統上提供一種無人值守的隨機啟動Oracle的功能,目的也許僅僅是為了幫助那些對Oracle細節非常不關心的朋友。
當然,如果有可能,一定不要使用這種自動化的方法,因為有太多不確定的因素存在。正途還是一邊手工啟動資料庫,一邊監控alert日誌,以便第一時間發現問題解決問題。

Anyway,隨Linux系統啟動資料庫還是有其存在價值的,下面透過這個小文兒給大家展示一下這個自動化過程。

1.確保“/etc/oratab”檔案內容的正確性
有則修改,無則建立“/etc/oratab”檔案。該檔案的功能是控制Oracle的啟動(dbstart)和關閉指令碼(dbshut)是否可用。
# vi /etc/oratab
secooler:/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:          Secooler Hou                              #
# Date:            2009-11-13 19:58:49                       #
##############################################################
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 --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-619604/,如需轉載,請註明出處,否則將追究法律責任。

相關文章