Linux下oracle 12C自动启动监听及服务

oracle 数据库开机自启动

1:查看ORACLE_HOME是否设置

[oracle@ssy:~]$ echo $ORACLE_HOME  
/u01/app/oracle/product/12.1.0/dbhome_1

2、执行数据库自带启动脚本dbstart   

[oracle@ssy ~]$ dbstart 

ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart ORACLE_HOME

错误原因是:dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题。
 
3、编辑dbstart和dbshut脚本文件

sudo gedit /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart
sudo gedit /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbshut

将ORACLE_HOME_LISTNER=$1

修改为:ORACLE_HOME_LISTNER=$ORACLE_HOME

4、编辑oratab文件

sudo gedit /etc/oratab

将orcl:/u01/app/oracle/product/12.1.0/dbhome_1:N

修改为:orcl:/u01/app/oracle/product/10.2.0/db_1:Y

5、编辑listener.ora文件

添加如下内容
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
(SID_NAME = orcl)
)
)

6、设置开机自启动

方法一:创建自启动脚本

1、创建oracle文件

sudo gedit /etc/rc.d/init.d/oracle

编写如下内容

==============================================================================

#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for Oracle Databases
# /etc/rc.d/init.d/oracle
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
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
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0

==============================================================================

2、更改oracle文件权限

ls -l | grep oracle

-rw-r--r-- 1 root root  1311 3月  13 21:07 oracle

sudo chmod +x oracle

ls -l | grep oracle

-rwxr-xr-x 1 root root  1311 3月  13 21:07 oracle

3、更新系统服务的运行级

sudo apt-get install sysv-rc-conf
sudo cp /usr/sbin/sysv-rc-conf /usr/sbin/chkconfig
sudo chkconfig --level 2345 oracle on

[oracle@ssy:/etc/rc.d/init.d]$ ./oracle
Usage: oracle start|stop|restart|reload
[oracle@ssy:/etc/rc.d/init.d]$ cd /etc/rc.d/rc5.d/
[oracle@ssy:/etc/rc.d/rc5.d]$ ls -l | grep oracle
lrwxrwxrwx 1 root root 16 3月 13 21:25 S20oracle -> ../init.d/oracle

方法二:编辑rc.local启动文件

sudo gedit /etc/rc.d/rc.local

文件末尾添加如下两行

su - oracle -lc /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart
su - oracle -lc "/u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start"
注意:第二个命令有空格,所以要用引号

7、重启主机,查看数据库和监听是否自启动

ps -ef | grep orcl
lsnrctl status
ps -ef | grep LISTEN | grep -v grep

原文地址:https://www.cnblogs.com/sunsiyuan/p/8562921.html