在很多的企業(yè)級應(yīng)用中,數(shù)據(jù)庫是其中非常重要的一個(gè)組成部分。Oracle Database作為一款非常重量級的數(shù)據(jù)庫,在各種場景下都扮演著非常重要的角色。但是,在某些場景下,僅僅只是安裝好Oracle數(shù)據(jù)庫還不能夠滿足業(yè)務(wù)需求,常常還需要配置自動(dòng)啟動(dòng)。
Oracle 12c提供了非常方便的自動(dòng)啟動(dòng)解決方案。我們只需要在數(shù)據(jù)庫安裝之后,進(jìn)行簡單的配置,就可以讓Oracle數(shù)據(jù)庫隨著系統(tǒng)自動(dòng)啟動(dòng)。這在一些需要長時(shí)間運(yùn)行的服務(wù)中非常有用,可以讓應(yīng)用及時(shí)響應(yīng)請求。
那么,在Oracle 12c中,要怎樣進(jìn)行自動(dòng)啟動(dòng)的配置呢?首先,我們需要為Oracle數(shù)據(jù)庫創(chuàng)建一個(gè)啟動(dòng)腳本。這個(gè)腳本會負(fù)責(zé)啟動(dòng)Oracle數(shù)據(jù)庫,并且安裝到系統(tǒng)的服務(wù)列表中,這樣就可以隨時(shí)隨地啟動(dòng)數(shù)據(jù)庫。
# For usage with chkconfig on RedHat Linux
# chkconfig: 35 80 30
# description: Oracle auto start-stop script.
#
# Set ORACLE_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORACLE to the executable for dbstart and dbshut;
#
# Set the user and group IDs for UNIX/Linux
#
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1
ORACLE=oracle
PATH=$PATH:$ORACLE_HOME/bin
HOST=hostname
if [ ! -f /etc/oratab ]; then
echo "Expected file /etc/oratab does not exists. Please fix ORACLE_HOME and try again."
exit 1
fi
ORAENV_ASK=NO . oraenv > /dev/null
case "$1" in
'start')
echo -n "Starting Oracle: "
su - $ORACLE -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" &
echo "OK"
;;
'stop')
echo -n "Shutting down Oracle: "
su - $ORACLE -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" &
echo "OK"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
上面的代碼中,我們可以看到幾個(gè)非常重要的參數(shù)。比如說,ORACLE_HOME代表Oracle數(shù)據(jù)庫的安裝路徑,ORACLE代表Oracle數(shù)據(jù)庫的用戶,而PATH參數(shù)中則包含了Oracle數(shù)據(jù)庫的可執(zhí)行程序路徑。
使用以上參數(shù),我們就可以在Linux系統(tǒng)中將啟動(dòng)腳本配置為系統(tǒng)服務(wù)。通過service命令,我們可以獲取到service服務(wù)的具體信息。你可以使用以下命令來驗(yàn)證一下service的功能:
chkconfig --add oracle chkconfig --level 35 oracle on
上述代碼中,我們使用chkconfig命令將oracle服務(wù)添加到系統(tǒng)服務(wù)列表中,并且在運(yùn)行級別3和5下啟用自動(dòng)啟動(dòng)。
在Oracle 12c中,我們還可以使用Oracle Restart自動(dòng)管理機(jī)制來實(shí)現(xiàn)自動(dòng)啟動(dòng)。對于生產(chǎn)環(huán)境中重要的數(shù)據(jù)庫,這種配置方式更加建議使用。Oracle Restart負(fù)責(zé)監(jiān)測數(shù)據(jù)庫實(shí)例、監(jiān)聽器以及ASM實(shí)例的運(yùn)行狀態(tài),在發(fā)現(xiàn)異常情況時(shí)可以自動(dòng)恢復(fù)數(shù)據(jù)庫服務(wù)。
不過,在使用Oracle Restart之前,我們還需要使用Grid Infrastructure進(jìn)行安裝。安裝完成后,我們就可以在Oracle Restart專有服務(wù)中,查看到“target=ora.ons”、“target=ora.diskmon”、“target=ora.evmd”、“target=ora.ctssd”以及“target=ora.cssd”等服務(wù)。這意味著,我們可以對各個(gè)服務(wù)進(jìn)行監(jiān)測與管理。在數(shù)據(jù)庫實(shí)例因?yàn)槟撤N原因終止后,Oracle Restart可以自動(dòng)重啟服務(wù),提高系統(tǒng)的可用性。
自動(dòng)啟動(dòng)對于Oracle數(shù)據(jù)庫而言,是非常實(shí)用的一種配置方式。通過Oracle Restart機(jī)制,我們可以保證數(shù)據(jù)庫實(shí)例能夠隨時(shí)運(yùn)行,并且能夠在服務(wù)處于異常狀態(tài)時(shí)及時(shí)恢復(fù)數(shù)據(jù)庫服務(wù)。當(dāng)然,具體的配置方式還需要根據(jù)環(huán)境的不同進(jìn)行調(diào)整,但總體而言,Oracle 12c已經(jīng)提供了非常豐富的配置方式來應(yīng)對各種需求。