天天看點

Oracle11g安裝成功後在linux建立chkconfig自啟動設定

   本篇博文參照網上不同版本的資料,然後自己分别在cent0S6.3的x86與x64兩個虛拟環境均搭建完成,安裝的分别是與系統對應的ORACLE 11Gx86與x64兩個版本,基本能滿足Oracle服務開機啟動需求。

但有幾個小問題,能力有限:

1.啟動或關閉服務報有此提示,但不影響服務啟動,端口能正常打開,ORACLE遠端也能連接配接。

[root@orcl ~]# service oracle restart 

Shutdown Oracle: Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.  

Processing Database instance "orcl": log file /home/oracle/app/oracle/product/11.2.0/dbhome_1/shutdown.log 

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 12-JAN-2013 08:51:27 

Copyright (c) 1991, 2009, Oracle.  All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=orcl.com)(PORT=1521))) 

TNS-12541: TNS:no listener 

 TNS-12560: TNS:protocol adapter error 

  TNS-00511: No listener 

   Linux Error: 111: Connection refused 

OK 

Starting Oracle: Processing Database instance "orcl": log file /home/oracle/app/oracle/product/11.2.0/dbhome_1/startup.log 

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 12-JAN-2013 08:51:34 

TNS-01106: Listener using listener name LISTENER has already been started 

Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.  

問題已解決,詳見http://showerlee.blog.51cto.com/2047005/1125849

2.切換到oracle使用者重新開機oracle服務,會提示輸入密碼,确認輸入root密碼後就能正常啟動。

[root@orcl rc5.d]# su oracle 

[oracle@orcl rc5.d]$ /etc/init.d/oracle restart 

Shutdown Oracle: 密碼: 

望解答,本人初學LINUX,希望有高手能幫忙指點。

--------------華麗的分割線-------------------

注:開始首先需要修改oracle與root使用者的環境變量

vi ~/.bash_profle

添加如下内容:

umask 022

export ORACLE_BASE=/home/oracle/app

export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1

export ORACLE_SID=orcl

export ORACLE_UNQNAME=$ORACLE_SID

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

一、使用root使用者修改/etc/oratab 檔案: 

$ vi /etc/oratab 

orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:N

改為: 

orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:Y 

也就是将最後的N改為Y

二、使用oracle使用者修改$ORACLE_HOME/bin/dbstart檔案: 

# su - oracle 

$ cd $ORACLE_HOME/bin 

$ vi dbstart 

找到 ORACLE_HOME_LISTNER=.....這行, 修改成 

ORACLE_HOME_LISTNER=$ORACLE_HOME  

同樣修改dbshut

vi dbshut

ORACLE_HOME_LISTNER=$ORACLE_HOME

注意:是修改,不是增加,可是使用vi的查找功能查找: 

ORACLE_HOME_LISTNER,然後進行修改,修改後儲存

三、測試運作 dbshut, dbstart 看能否啟動oracle 服務及listener服務:

關閉,或者啟動時可能會報錯,提示dbstart或dbshut權限不足.

1.修改dbstart和dbshut的日志檔案的權限: 

$su - root 

#cd $ORACLE_HOME 

#chown oracle:oinstall $ORACLE_HOME/startup.log 

#chown oracle:oinstall $ORACLE_HOME/shutdown.log 

#chown oracle:oinstall $ORACLE_HOME/listener.log

2.執行相應的腳本進行測試 (可選)

#su - oracle 

$cd $ORACLE_HOME/bin 

$./dbstart (./dbshut) 

$ ps -efw | grep ora_ 

$ lsnrctl status 

$ ps -efw | grep LISTEN | grep -v grep

四:建立服務 

# cd /etc/rc.d/init.d/ 

# vi oracle 

-----腳本-----

#!/bin/bash

# chkconfig: 345 99 10

# description: Startup Script for Oracle Databases    

# /etc/rc.d/init.d/oracle

ORA_OWNR="oracle"

# if the executables do not exist -- display error

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]

then

echo "Oracle startup: cannot start"

exit 1

fi

# depending on parameter -- startup, shutdown, restart

# of the instance and listener or usage display

case "$1" in

start)

# Oracle listener and instance startup

echo -n "Starting Oracle: "

su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"

su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"

touch /var/lock/Oracle

su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"

#su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctrl start"

echo "OK"

;;

stop)

# Oracle listener and instance shutdown

echo -n "Shutdown Oracle: "

su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"

#su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctrl stop"

su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"

su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"

rm -f /var/lock/Oracle

reload|restart)

$0 stop

$0 start

*)

echo "Usage: `basename $0` start|stop|restart|reload"

esac

exit 0

#儲存退出 

打開終端執行: 

#chown oracle:oinstall /etc/rc.d/init.d/oracle 

#chmod 775 /etc/rc.d/init.d/oracle  

然後執行: 

chkconfig --add  oracle  

chkconfig --list  oracle  

chkconfig --list  oracle 運作結果: 

oradbstart 0:off 1:off 2:off 3:on 4:on 5:on 6:off 

----若啟動成功以下可以略過----

五.檢查: 

根據上面的運作結果,當相應的運作級别為on時(例如:5:on),在對應的/etc/rc.d/rcN.d(例如:和5:on對應的是:/etc /rc.d/rc5.d)下面會生成一個檔案:S99oracle,使用vi S99oracle打開該檔案,可以看到該檔案的内容和/etc/rc.d/init.d/oracle内容相同,表示配置成功,其實,S99oracle是一個到/etc/rc.d/init.d/oracle的連結,我們可以使用file指令來檢視: 

$file /etc/rc.d/rc5.d/S99oracle 

/etc/rc.d/rc5.d/S99oracle: symbolic link to `../init.d/oracle' 

六.一點說明:

腳本檔案中的:# chkconfig: 345 99 10

指出3,4,5級别啟動這個服務,99是在相應的/etc/rc.d/rcN.d(N為前面指定的級别,

這裡是345)目錄下生成的連結檔案的序号(啟動優先級别)S99oracle,

10為在除前面指出的級别對應的/etc/rc.d/rcN.d(N為除345之外的級别)

目錄生成的連結檔案的序号(服務停止的優先級别)K10oracle。

      本文轉自 showerlee 51CTO部落格,原文連結:http://blog.51cto.com/showerlee/1122079,如需轉載請自行聯系原作者

繼續閱讀