作者 主題: <redhat>如何在開機時,自動啟動Oracle服務  (閱讀 4584 次)

0 會員 與 1 訪客 正在閱讀本文。

virgil0711

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
請教有經驗前輩:
在LAB環境內,已經安裝Oracle 11g
目前想測試在開機時
Oracle可以自動啟動DB
還有監聽器 & DBconsole

我嘗試在/etc/init.d底下新增一檔案(/etc/init.d/oracle)
內容如下,但結果還是不會自動啟動DB
是不是我還少了些什麼執行步驟???
#!/bin/bash
# /etc/init.d/oracle
#
# oracle Init file for starting and stopping Oracle Database.
#Script is valid for 10g and 11g versions.
# chkconfig: 35 80 30
# description: Oracle Database startup script
# Source function library.
. /etc/rc.d/init.d/functions
#linux自動啟動及停止 Oracle 資料庫和監聽程式

case “$1〃 in
start)
echo -n “Starting Oracle 11g Databases : “
echo “——————————————————————————-" >> /var/log/oracle
date +"! %T %a %D : Starting Oracle 11g Databases as part of system start." >> /var/log/oracle
echo “——————————————————————————-" >> /var/log/oracle
echo -n “Oracle 11g Databases Starting : “
su – oracle -c dbstartup >> /var/log/oracle
echo “Done."
echo -n “Oracle 11g Listeners Starting : “
su – oracle -c “lsnrctl start" >> /var/log/oracle
echo “Done."
echo -n “Oracle 11g OEM Starting : “
su – oracle -c “emctl start dbconsole" >> /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 11g Listeners : “
echo “——————————————————————————-" >> /var/log/oracle
date +"! %T %a %D : Shutting Down Oracle 11g Databases as part of system down." >> /var/log/oracle
echo “——————————————————————————-" >> /var/log/oracle
echo -n “Oracle 11g OEM Stopping : “
su – oracle -c “emctl stop dbconsole" >> /var/log/oracle
echo “Done."
echo -n “Oracle 11g Listeners Stopping : “
su – oracle -c “lsnrctl stop" >> /var/log/oracle
echo “Done."
rm -f /var/lock/subsys/oracle
echo -n “Shutting Down Oracle 11g Databases : “
su – oracle -c dbshutdown >> /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 11g Databases: “
echo “——————————————————————————-" >> /var/log/oracle
date +"! %T %a %D : Restarting Oracle 11g Databases as part of system up." >> /var/log/oracle
echo “——————————————————————————-" >> /var/log/oracle
echo -n “Shutting Down Oracle 11g Databases : “
su – oracle -c dbshutdown >> /var/log/oracle
echo “Done."
echo -n “Oracle 11g Databases Starting : “
su – oracle -c dbstartup >> /var/log/oracle
echo “Done."
echo -n “Oracle 11g Listeners Stopping : “
su – oracle -c “lsnrctl stop" >> /var/log/oracle
echo “Done."
echo -n “Oracle 11g OEM Stopping : “
su – oracle -c “emctl stop dbconsole" >> /var/log/oracle
echo “Done."
echo -n “Oracle 11g OEM Starting : “
su – oracle -c “emctl start dbconsole" >> /var/log/oracle
echo “Done."
echo -n “Oracle 11g Listeners Starting : “
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

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17461
    • 檢視個人資料
    • http://www.study-area.org
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #1 於: 2013-09-17 22:12 »
跑 chkconfig oracle on 看看?

virgil0711

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #2 於: 2013-09-18 09:07 »
Hello,會出現如下error
error reading information on service oracle: No such file or directory

是不是這個script沒寫好???

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17461
    • 檢視個人資料
    • http://www.study-area.org
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #3 於: 2013-09-18 09:17 »
比較一下 init.d 目錄下別的 script 開頭那堆注解,看看少了些啥?

vincent119

  • 憂鬱的高中生
  • ***
  • 文章數: 137
    • 檢視個人資料
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #4 於: 2013-09-21 21:30 »
user環境變數吧!!
在root 下 echo PATH出來看看

virgil0711

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #5 於: 2013-09-23 09:53 »
輸出如下,請查收
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #6 於: 2013-09-23 10:04 »
oracle 通常是用 su  -c 去執行... 所以不會是環境變數的問題.
如果上頭的指令是 copy/paste 上來, 不是自己再打一次的話, 不能跑的原因是:
代碼: [選擇]
su – oracle -c dbstartup >> /var/log/oraclesu 後頭那一個 '–' 是全型字 (還是什麼怪字), 不是後頭那一個 '-'.....

vincent119

  • 憂鬱的高中生
  • ***
  • 文章數: 137
    • 檢視個人資料
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #7 於: 2013-09-23 14:44 »
樓上應該是正解

virgil0711

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #8 於: 2013-09-24 15:23 »
在下確實是用copy的方式...
那像是引號的部分,是否也要更改阿(“是否要改成")???
echo -n “Oracle 11g Listeners Starting : “

virgil0711

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #9 於: 2013-09-24 15:32 »
感謝各位前輩相助
目前按照前輩所說,將'–' 都改成-
然後也將“都改成"
測試結果如下
看起來使用root是OK的
切換到oracle帳號就說找不到command
再麻煩各位前輩幫忙了
[root@ora11gr2 ~]# vi /etc/init.d/oracle
[root@ora11gr2 ~]# chmod 755 /etc/init.d/oracle
[root@ora11gr2 ~]# chkconfig --add oracle
[root@ora11gr2 ~]# service oracle start
Starting Oracle 11g Databases : Oracle 11g Databases Starting : -bash: dbstartup: command not found
Done.
Oracle 11g Listeners Starting : Done.
Oracle 11g OEM Starting :

^C
Session terminated, killing shell... ...killed.
Done.

[root@ora11gr2 ~]# su - oracle
[oracle@ora11gr2 ~]$ service oracle start
-bash: service: command not found

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #10 於: 2013-09-24 20:46 »
service 那指令本來就不是一般 user (oracle) 用的.
oracle 啟動是用你 su - oracle -c 後面那些指令.

virgil0711

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
Re: <redhat>如何在開機時,自動啟動Oracle服務
« 回覆 #11 於: 2013-09-25 21:31 »
目前測試到的狀況為
加入如下兩個指令到oracle使用的$PATH底下的bin
且chmod + x就OK了

#dbstartup
#$ORACLE_HOME/bin
sqlplus / as sysdba <<EOF
startup
exit
EOf

#dbshutdown
#$ORACLE_HOME/bin
sqlplus / as sysdba <<EOF
shutdown immediate
exit
EOF

當然也要將服務註冊在如下
[root@testhost init.d]# ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle
[root@testhost init.d]# ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle
[root@testhost init.d]# ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle
[root@testhost init.d]# ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle