共計 4093 個字符,預計需要花費 11 分鐘才能閱讀完成。
這篇文章主要介紹“Oracle 11g 系統怎么設置自動啟動與關閉”,在日常操作中,相信很多人在 Oracle 11g 系統怎么設置自動啟動與關閉問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Oracle 11g 系統怎么設置自動啟動與關閉”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
Oracle 11g 系統自動啟動與關閉的設置方法
第一步:要在 Linux 中設置允許 ORACLE 系統自動啟動,因為默認情況下是設置為不允許的。
1. 在 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,將不允許自動啟動改為允許自動啟動。
2. 修改 ORACLE 自帶的啟動與關閉腳本,分別是 dbstart 和 dbshut。執行這兩個腳本就可以實現 ORACLE 腳本的啟動與關閉。
在 oracle 賬戶下修改 $ORACLE_HOME/bin/dbstart 文件:
$ vi $ORACLE_HOME/bin dbstart
找到 ORACLE_HOME_LISTNER=$1 這一行
改為:ORACLE_HOME_LISTNER=$ORACLE_HOME
之所以做這一步,是因為在這個腳本自動生成的時候,也就是 ORACLE 被安裝進 Linux 的時候,這個腳本并不知道你的 ORACLE_HOME_LISTNER 是什么,現在要將這個參數顯示的寫明,這樣就不會在執行這個腳本的時候報 ORACLE_HOME_LISTNER 沒有被指定的錯誤了。
注意:dbstart 和 dbshut 腳本在 10g 版本之后就已經將監聽器的啟動與關閉合并進數據庫實例的啟動與關閉腳本里面了,而不再是單獨分開的了。
同樣的方式,也要修改 dbshut 的這個參數。這里就不再詳細寫出了,他們在同一個目錄下。
第二步:寫一個腳本,把它注冊為一個系統服務,讓它在開機與關機的時候運行。它的作用就是調用并執行 dbstart 和 dbshut。這樣不就實現了數據庫啟動與關閉了。
這個腳本被放在 /etc/init.d 目錄中,腳本的名字是 oracle
腳本代碼如下:
#!/bin/bash
# chkconfig: 2345 96 11
# description:Startup Script for oracle Databases
#/etc/rc.d/init.d/oradbstart
exportORACLE_BASE=/u01/app/oracle/
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
exportORACLE_SID=ORDB
exportPATH=$PATH:$ORACLE_HOME/bin
case $1 in
start)
echo —–startup oracle—– /var/log/oraclelog
su – oracle -c $ORACLE_HOME/bin/dbstart
touch/var/lock/subsys/oracle
echo —–startup oracle successful—– /var/log/oraclelog
echo OK
;;
stop)
echo —–shutdwn oracle—– /var/log/oraclelog
su – oracle -c $ORACLE_HOME/bin/dbshut
rm -f/var/lock/subsys/oracle
echo —–shutdown oracle successful—– /var/log/oraclelog
echo OK
;;
reload|restart)
$0 stop
$1 start
;;
*)
echo Usage: basename $0 start|stop|reload|restart
exit 1
esac
exit 0 保存并退出。
現在,我要對這段腳本做一個關鍵解釋:
第一:# chkconfig: 2345 99 10 雖是一行注釋,但是確實關鍵的必不可少的一行,除非你不用 chkconfig 命令來自動生成符號連接文件,而是完全采用手工創建。否則沒有這一行,執行 chkconfig 系統將會報出 oracle 沒有 chkconfig 服務權限的錯誤。
第二:su – oracle -c $ORACLE_HOME/bin/dbstart 和 touch /var/lock/subsys/oracle 這兩行的作用是首先執行 dbstart 腳本啟動 oracle,然后在服務活動列表目錄中創建一個與 oracle 這個服務同名的一個文件,表示這個服務是活動的,也就是被啟動的。
而 su – oracle -c $ORACLE_HOME/bin/dbshut 和 rm -f /var/lock/subsys/oracle 這兩行的作用是首先執行 dbshut 腳本關閉 oracle,然后從服務活動列表目錄中刪除那個與 oracle 同名的那個文件,表示這個服務不是活動的,也就是已經被關閉。
那么為什么要做 touch /var/lock/subsys/oracle 和 rm -f /var/lock/subsys/oracle 這兩步呢?原因是跟 Linux 系統的機制有關的:Linux 的判別一個服務是否被啟動的依據是在 /var/lock/subsys/ 目錄下是否有與服務名相同的文件,若有則表示這個服務已經被啟動了,在系統關閉的時候,Linux 會把這里面列出的服務全部關閉,并刪掉與服務同名的文件。若一個服務被啟動了,但卻在這個目錄里沒有那個服務的同名文件,則不會關閉那個服務。
網上的文章均將這個地方設置錯了,所以會發現,ORACLE 可以隨系統啟動了,但卻沒有隨系統關閉。我也是分析了 /etc/rc.d/rc.local 后才發現這個原理的。經過試驗,果然如此。再分析 mysql 的啟動與關閉腳本也是這樣做的,最終恍然大悟。原來如此。這個地方請大家注意了。
最后,就是將這個腳本注冊成為一個系統服務就可以了,方法有二:
其一:先給腳本分配可以被執行的權限。執行下面命令:
代碼如下:
#su – root
chown oracle /etc/init.d/oracle
chmod 775 /etc/init.d/oracle
再創建符號鏈接文件。
chkconfig –add /etc/init.d/oracle, 執行這個命令就需要你在腳本中寫上
# chkconfig: 2345 99 10 了。這樣當這個命令被執行的時候,會去 oracle 文件中尋找這行注釋,并解析這行注釋,根據解析結果分別在 /etc/rc.d/rc2.d;/etc/rc.d/rc3.d;/etc/rc.d/rc4.d;/etc/rc.d/rc5.d 中創建符號連接文件 S99oracle 文件,這個文件是系統啟動時要執行的,其實這個文件是指向 /etc/init.d/oracle 的,啟動的時候系統向這個文件發送一個 start 參數,也就執行了 oracle 文件中的 start 分支了。
另外還會在 /etc/rc.d/rc0.d;/etc/rc.d/rc1.d;/etc/rc.d/rc6.d 中創建 K10oracle 文件,這個文件時系統關閉時要執行的,其實這個文件也是指向 /etc/init.d/oracle 的,關閉的時候系統向這個文件發送一個 stop 參數,也就執行了 oracle 文件中的 stop 分支了。
我想你應該明白# chkconfig: 2345 99 10 中這些數字的含義了吧:
指出 2,3,4,5 級別啟動這個服務,99 是在相應的 /etc/rc.d/rcN.d(N 為前面指定的級別,這里是 2345)目錄下生成的鏈接文件的序號 (啟動優先級別)S99oracle,10 為在除前面指出的級別對應的 /etc/rc.d/rcN.d(N 為除 2345 之外的級別) 目錄生成的鏈接文件的序號(服務停止的優先級別)K10oracle。至于為什么在這些目錄中創建文件和文件的命名規則,這就要您對 Linux 的系統啟動流程有一個熟悉的了解了,在這就不詳談了。
其二:若您想嘗試一下手動創建符號連接文件的樂趣,請執行如下命令:
代碼如下:
#su – root
ln -s /etc/init.d/oracle/etc/rc.d/rc2.d/S99oracle
ln -s /etc/init.d/oracle/etc/rc.d/rc3.d/S99oracle
ln -s /etc/init.d/oracle/etc/rc.d/rc4.d/S99oracle
ln -s /etc/init.d/oracle/etc/rc.d/rc5.d/S99oracle
ln -s /etc/init.d/oracle/etc/rc.d/rc0.d/K10oracle
ln -s /etc/init.d/oracle/etc/rc.d/rc1.d/K10oracle
ln -s /etc/init.d/oracle/etc/rc.d/rc6.d/K10oracle
其實手動這樣操作作用效果和執行 chkconfig –add oracle 是一樣的。
到此,所有設置就完成了,下面進行一下測試:
#cd /etc/init.d
sh oracle start 或者 service oracle start
執行后,看看 /var/log 目錄下的 oraclelog 文件,里面是不是有腳本的啟動分支輸出信息呢?
sh oracle stop 或者 service oracle stop
執行后,看看 /var/log 目錄下的 oraclelog 文件,里面是不是有腳本的關閉分支輸出信息呢?
若看到信息,表示您設置成功了。若沒有,請再仔細設置一遍,并注意文件的權限問題。
到此,關于“Oracle 11g 系統怎么設置自動啟動與關閉”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!