本篇博文參照網上不同版本的資料,然後自己分别在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,如需轉載請自行聯系原作者