佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > ORACLE11g隨RHEL5系統(tǒng)自動(dòng)啟動(dòng)與關(guān)閉的設(shè)置方法

ORACLE11g隨RHEL5系統(tǒng)自動(dòng)啟動(dòng)與關(guān)閉的設(shè)置方法

熱門標(biāo)簽:網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站 Linux服務(wù)器 鐵路電話系統(tǒng) AI電銷 百度競(jìng)價(jià)排名 呼叫中心市場(chǎng)需求 服務(wù)外包
寫(xiě)好腳本,注冊(cè)好服務(wù)之后,經(jīng)測(cè)試,ORACLE可以隨RHEL啟動(dòng)而啟動(dòng),但不能隨系統(tǒng)關(guān)閉而關(guān)閉。在網(wǎng)上找答案,發(fā)現(xiàn)幾乎所有的設(shè)置過(guò)程帖子都是從同一篇原樣照抄過(guò)來(lái)的,根本就行不通。天下文章一大抄。求助他人,沒(méi)有得到一個(gè)好的解決方案。無(wú)奈,自己靜下心來(lái)慢慢研究分析,總算找到了問(wèn)題的關(guān)鍵原因所在。
現(xiàn)在就把我的整個(gè)成功設(shè)置的過(guò)程貼出來(lái),供大家參考,以期大家能少走彎路;另外還是要給其他人一個(gè)建議:切莫生硬照搬,斷章取義,否則其害大焉??!
首先,要在RHEL中設(shè)置允許ORACLE系統(tǒng)自動(dòng)啟動(dòng),因?yàn)槟J(rèn)情況下是設(shè)置為不允許的。操作如下:
在root賬戶下修改/etc/oratab 文件:
# vi /etc/oratab
找到orcl=/db/app/oracle/product/11.1.0/db_1 :N這一行
改為:
orcl=/db/app/oracle/product/11.1.0/db_1 :Y
也就是將最后的N改為Y,意思是將不允許自動(dòng)啟動(dòng)改為允許自動(dòng)啟動(dòng)。
然后,是修改ORACLE自帶的啟動(dòng)與關(guān)閉腳本,分別是dbstart和dbshut。執(zhí)行這兩個(gè)腳本就可以實(shí)現(xiàn)ORACLE腳本的啟動(dòng)與關(guān)閉。
在oracle賬戶下修改$ORACLE_HOME/bin/dbstart文件:
復(fù)制代碼 代碼如下:

# su - ORACLE
$ cd $ORACLE_HOME/bin
$ vi dbstart

找到 ORACLE_HOME_LISTNER=$1這一行
改為:
ORACLE_HOME_LISTNER=$ORACLE_HOME
之所以做這一步,是因?yàn)樵谶@個(gè)腳本自動(dòng)生成的時(shí)候,也就是ORACLE被安裝進(jìn)RHEL的時(shí)候,這個(gè)腳本并不知道你的
ORACLE_HOME_LISTNER是什么,現(xiàn)在要將這個(gè)參數(shù)顯示的寫(xiě)明,這樣就不會(huì)在執(zhí)行這個(gè)腳本的時(shí)候報(bào)
ORACLE_HOME_LISTNER沒(méi)有被指定的錯(cuò)誤了。注意:dbstart和dbshut腳本在10g之后就已經(jīng)將監(jiān)聽(tīng)器的啟動(dòng)與關(guān)閉合并進(jìn)數(shù)
據(jù)庫(kù)實(shí)例的啟動(dòng)與關(guān)閉腳本里面了。而不再是單獨(dú)分開(kāi)的了。
同樣的方式,我們也要修改dbshut的這個(gè)參數(shù)。這里就不再詳細(xì)寫(xiě)出了,他們?cè)谕粋€(gè)目錄下。
再次,就是寫(xiě)一個(gè)腳本,把它注冊(cè)為一個(gè)系統(tǒng)服務(wù),讓它在開(kāi)機(jī)與關(guān)機(jī)的時(shí)候運(yùn)行。它的作用就是調(diào)用并執(zhí)行dbstart和dbshut。這樣不
就實(shí)現(xiàn)了數(shù)據(jù)庫(kù)啟動(dòng)與關(guān)閉了嗎?!這個(gè)腳本被放在/etc/init.d目錄中,腳本的名字是oracle11
腳本如下:
復(fù)制代碼 代碼如下:

#!/bin/bash
# chkconfig: 2345 99 10
# description: Startup Script for oracle Databases
# /etc/rc.d/init.d/oradbstart
export ORACLE_BASE=/db/app/oracle/
export ORACLE_HOME=/db/app/oracle/product/11.1.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
case "$1" in
start)
echo "-----startup oracle-----" >> /var/log/oracle11log
su oracle -c $ORACLE_HOME/bin/dbstart
touch /var/lock/subsys/oracle11
echo "-----startup oracle successful-----" >> /var/log/oracle11log
echo "OK"

stop)
echo "-----shutdwn oracle-----" >> /var/log/oracle11log
su oracle -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle11
echo "-----shutdown oracle successful-----" >> /var/log/oracle11log
echo "OK"

*)
echo "Usage: 'basename $0' start|stop"
exit 1
esac
exit 0

保存并退出。
現(xiàn)在,我要對(duì)這段腳本做一個(gè)關(guān)鍵解釋:
第一:# chkconfig: 2345 99 10 雖是一行注釋,但是確實(shí)關(guān)鍵的必不可少的一行,除非你不用chkconfig命令來(lái)自動(dòng)生成符號(hào)連接文件,而是完全采用手工創(chuàng)建。否則沒(méi)有這一行,執(zhí)行chkconfig系統(tǒng)將會(huì)報(bào)出oracle11沒(méi)有chkconfig服務(wù)權(quán)限的錯(cuò)誤。
第二:su oracle -c $ORACLE_HOME/bin/dbstart 和touch /var/lock/subsys/oracle11這兩行的作用是首先執(zhí)行dbstart腳本啟動(dòng)oracle,然后在服務(wù)活動(dòng)列表目錄中創(chuàng)建一個(gè)與oracle11這個(gè)服務(wù)同名的一個(gè)文件,表示這個(gè)服務(wù)是活動(dòng)的,也就是被啟動(dòng)的。
而su oracle -c $ORACLE_HOME/bin/dbshut 和rm -f /var/lock/subsys/oracle11這兩行的作用是首先執(zhí)行dbshut急哦腳本關(guān)閉oracle,然后從服務(wù)活動(dòng)列表目錄中刪除那個(gè)與oracle11同名的那個(gè)文件,表示這個(gè)服務(wù)不是活動(dòng)的,也就是已經(jīng)被關(guān)閉。
那么為什么要做touch /var/lock/subsys/oracle11和rm -f /var/lock/subsys/oracle11這兩步呢?原因是跟LINUX系統(tǒng)的機(jī)制有關(guān)的:LINUX的判別一個(gè)服務(wù)是否被啟動(dòng)的依據(jù)是在/var/lock/subsys/目錄下是否與服同名的文件,若有則表示這個(gè)服務(wù)已經(jīng)被啟動(dòng)了,在系統(tǒng)關(guān)閉的時(shí)候,LINUX會(huì)把這里面列出的服務(wù)全部關(guān)閉,并刪掉與服務(wù)同名的文件。若一個(gè)服務(wù)被啟動(dòng)了,但卻在這個(gè)目錄里沒(méi)有那個(gè)服務(wù)的同名文件,則不會(huì)關(guān)閉那個(gè)服務(wù)。網(wǎng)上的文章均將這個(gè)地方設(shè)置錯(cuò)了,所以會(huì)發(fā)現(xiàn),ORACLE可以隨系統(tǒng)啟動(dòng)了,但卻沒(méi)有隨系統(tǒng)關(guān)閉。我也是分析了/etc/rc.d/rc.local后才發(fā)現(xiàn)這個(gè)原理的。經(jīng)過(guò)試驗(yàn),果然如此。再分析mysql的啟動(dòng)與關(guān)閉腳本也是這樣做的,最終恍然大悟。原來(lái)如此。這個(gè)地方請(qǐng)大家注意了。
最后,就是將這個(gè)腳本注冊(cè)成為一個(gè)系統(tǒng)服務(wù)就可以了,方法有二:
其一:先給腳本分配可以被執(zhí)行的權(quán)限。執(zhí)行下面命令:
復(fù)制代碼 代碼如下:

#su - root
chown oracle /etc/init.d/oracle11
chmod 775 /etc/init.d/oracle11

再創(chuàng)建符號(hào)鏈接文件。
chkconfig --add /etc/init.d/oracle11,執(zhí)行這個(gè)命令就需要你在腳本中寫(xiě)上# chkconfig: 2345 99 10 了。這樣當(dāng)這個(gè)命令被執(zhí)行的時(shí)候,回去oracle11文件中尋找這行注釋,并解析這行注釋,根據(jù)解析結(jié)果分別在/etc/rc.d/rc2.d;/etc/rc.d/rc3.d;/etc/rc.d/rc4.d;/etc/rc.d/rc5.d中創(chuàng)建符號(hào)連接文件S99oracle11文件,這個(gè)文件是系統(tǒng)啟動(dòng)時(shí)要執(zhí)行的,其實(shí)這個(gè)文件是指向/etc/init.d/oracle11的,啟動(dòng)的時(shí)候系統(tǒng)向這個(gè)文件發(fā)送一個(gè)start參數(shù),也就執(zhí)行了oracle11文件中的start分支了。還會(huì)在/etc/rc.d/rc0.d;/etc/rc.d/rc1.d;/etc/rc.d/rc6.d中創(chuàng)建K10oracle11文件,這個(gè)文件時(shí)系統(tǒng)關(guān)閉時(shí)要執(zhí)行的,其實(shí)這個(gè)文件也是指向/etc/init.d/oracle11的,關(guān)閉的時(shí)候系統(tǒng)向這個(gè)文件發(fā)送一個(gè)stop參數(shù),也就執(zhí)行了oracle11文件中的stop分支了。
我想你應(yīng)該明白# chkconfig: 2345 99 10 中這些數(shù)字的含義了吧:指出2,3,4,5級(jí)別啟動(dòng)這個(gè)服務(wù),99是在相應(yīng)的/etc/rc.d/rcN.d(N為前面指定的級(jí)別,這里是2345)目錄下生成的鏈接文件的序號(hào)(啟動(dòng)優(yōu)先級(jí)別)S99oracle11,10為在除前面指出的級(jí)別對(duì)應(yīng)的/etc/rc.d/rcN.d(N為除2345之外的級(jí)別)目錄生成的鏈接文件的序號(hào)(服務(wù)停止的優(yōu)先級(jí)別)K10oracle11。至于為什么在這些目錄中創(chuàng)建文件和文件的命名規(guī)則,這就要您對(duì)LINUX的系統(tǒng)啟動(dòng)流程有一個(gè)熟悉的了解了,在這就不詳談了。
其二:若您想嘗試一下手動(dòng)創(chuàng)建符號(hào)連接文件的樂(lè)趣,請(qǐng)執(zhí)行如下命令:
復(fù)制代碼 代碼如下:

#su - root
ln -s /etc/init.d/oracle11 /etc/rc.d/rc2.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc3.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc4.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc5.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc0.d/K10oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc1.d/K10oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc6.d/K10oracle11

作用效果和執(zhí)行chkconfig --add oracle11是一樣的。
到此,所以得設(shè)置過(guò)程就結(jié)束了,下面進(jìn)行一下測(cè)試吧:
復(fù)制代碼 代碼如下:

#cd /etc/init.d
sh oracle11 start

執(zhí)行后,看看/var/log目錄下的oracle11log文件,里面是不是有腳本的啟動(dòng)分支輸出信息呢?
sh oracle11 stop
執(zhí)行后,看看/var/log目錄下的oracle11log文件,里面是不是有腳本的關(guān)閉分支輸出信息呢?
若看到信息,表示您設(shè)置成功了。若沒(méi)有,請(qǐng)?jiān)僮屑?xì)設(shè)置一遍,并注意文件的權(quán)限問(wèn)題。LINUX的用戶概念是很嚴(yán)格的。畢竟是多用戶系統(tǒng)嘛。
文章屬于作者原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處。
來(lái)自:http://blog.csdn.net/kanon_lgt/
您可能感興趣的文章:
  • Oracle11g RAC開(kāi)啟關(guān)閉、設(shè)置歸檔小結(jié)
  • 深入剖析哪些服務(wù)是Oracle 11g必須開(kāi)啟的
  • 詳解Linux系統(tǒng)中Oracle數(shù)據(jù)庫(kù)程序的啟動(dòng)和關(guān)閉方式
  • Oracle cloud control 12c的啟動(dòng)、關(guān)閉及獲取安裝信息的方法
  • DBA_Oracle Startup / Shutdown啟動(dòng)和關(guān)閉過(guò)程詳解(概念)(對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種維護(hù)操作)
  • Oracle數(shù)據(jù)庫(kù)的啟動(dòng)與關(guān)閉方法
  • oracle 如何關(guān)閉打開(kāi)歸檔日志
  • oracle 服務(wù)啟動(dòng),關(guān)閉腳本(windows系統(tǒng)下)
  • Oracle開(kāi)啟和關(guān)閉的四種模式

標(biāo)簽:仙桃 衡水 銅川 崇左 湘潭 黃山 湖南 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ORACLE11g隨RHEL5系統(tǒng)自動(dòng)啟動(dòng)與關(guān)閉的設(shè)置方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    准格尔旗| 汉川市| 那坡县| 沅江市| 桑植县| 绥芬河市| 舞阳县| 平武县| 伊吾县| 调兵山市| 土默特左旗| 樟树市| 涞源县| 黑龙江省| 青神县| 体育| 方正县| 资源县| 玉田县| 临江市| 江门市| 大足县| 芷江| 浑源县| 景宁| 阿拉善盟| 中阳县| 安图县| 吉木萨尔县| 天气| 肇庆市| 枞阳县| 河东区| 齐河县| 无极县| 西林县| 沧州市| 海口市| 武清区| 新乡市| 施秉县|