Linux下的Oracle启动脚本及其开机自启动

说明:以下操作环境在centos 6.4 + oracle 11gr2(oracle安装在oracle_base=/opt/oracle中,其oracle_home=/opt/oracle/11g)

用oui安装并配置oracle数据库后,oracle就开启了(包括:数据库实例、监听器、em)。在重启操作系统之后,oracle默认是没有启动的。使用如下命令查看oracle相关服务是否已启动:

ps aux | grep ora_ #若无ora_**_**相关的进程,则oracle数据库实例未启动
netstat -tlnup | grep 1521 #若无任何显示,则监听器未启动
lsnrctl status #查看监听器状态
netstat -tlnup | grep 1158 #若无任何显示,则em未启动
emctl status dbconsole #查看em状态

手工启动oracle实例,可用sqlplus建立一个idle instance,然后再用startup启动,如下:

数据库实例启动之后,需启动监听器,才能让远程用户建立连接。可使用如下命令启动监听器:

复制代码 代码如下:

lsnrctl start

oracle还提供网页版的管理器,要使用该管理器需启动相关服务,使用如下命令启动:


复制代码 代码如下:

emctl start dbconsole

 

至此,可在web浏览器中输入:https://{主机ip 或 主机名 或 本地localhost}:1158/em,打开管理器,使用相关帐号登录进行数据库查看和管理。
如果每次重启操作系统都要进行以上操作好麻烦,那么如何让oracle作为系统服务在开机的时候自动启动呢?
oracle在$oracle_home/bin下提供许多对数据库进行操作的脚本,其中dbstart和dbshut可分别用来启动和关闭数据库。注意,这两个脚本已包含监听器的启动或关闭,但并未对em进行相关的操作。使用如下命令:

复制代码 代码如下:

/opt/oracle/11g/bin/dbstart /opt/oracle/11g #启动数据库实例(包含监听器)

/opt/oracle/11g/bin/dbshut /opt/oracle/11g #关闭数据库实例(包括监听器)

以上命令要成功启动数据库实例还得打开oracle设置的一个关卡:vi /etc/oratab,修改行:

复制代码 代码如下:

orcl:/opt/oracle/11g:y #默认为orcl:/opt/oracle/11g:n

 

以root身份建立开机启动oracle服务的脚本:vi /etc/init.d/oracle,添加如下脚本:

复制代码 代码如下:

#!/bin/sh

#chkconfig: 2345 20 80

#description: oracle dbstart / dbshut

#以上两行为chkconfig所需

ora_home=/opt/oracle/11g

ora_owner=oracle

logfile=/var/log/oracle.log

echo “#################################” >> ${logfile}

date +”### %t %a %d: run oracle” >> ${logfile}

if [ ! -f ${ora_home}/bin/dbstart ] || [ ! -f ${ora_home}/bin/dbshut ]; then

    echo “error: missing the script file ${ora_home}/bin/dbstart or ${ora_home}/bin/dbshut!” >> ${logfile}

    echo “#################################” >> ${logfile}

    exit

fi

start(){

    echo “###startup database…”

    su – ${ora_owner} -c “${ora_home}/bin/dbstart ${ora_home}”

    echo “###done.”

    echo “###run database control…”

    su – ${ora_owner} -c “${ora_home}/bin/emctl start dbconsole”

    echo “###done.”

}

stop(){

    echo “###stop database control…”

    su – ${ora_owner} -c “${ora_home}/bin/emctl stop dbconsole”

    echo “###done.”

    echo “###shutdown database…”

    su – ${ora_owner} -c “${ora_home}/bin/dbshut ${ora_home}”

    echo “###done.”

}

case “$1” in

    ‘start’)

        start >> ${logfile}

    ‘stop’)

        stop >> ${logfile}

    ‘restart’)

        stop >> ${logfile}

        start >> ${logfile}

esac

date +”### %t %a %d: finished.” >> ${logfile}

echo “#################################” >> ${logfile}

echo “”

 

使用如下命令将 /etc/init.d/oracle 置为可执行文件:

复制代码 代码如下:

chmod a+x /etc/init.d/oracle

 

至此,可使用如下命令对oracle进行启动和关闭

复制代码 代码如下:

/etc/init.d/oracle start #启动oracle(包括数据库实例、监听器、em)

/etc/init.d/oracle stop #关闭oracle

/etc/init.d/oracle restart #重启oracle

 

将 oracle 添加到 chkconfig中:

复制代码 代码如下:

chkconfig –add oracle

 

可使用如下命令查看和设置oracle服务的开机启动级别

复制代码 代码如下:

chkconfig | grep oracle #查看oracle服务的开机启动级别

chkconfig –level 24 oracle off #修改oracle服务的开机启动级别

chkconfig –level 35 oracle on

 

至此可使用如下命令对oracle的启动或关闭进行管理

复制代码 代码如下:

service oracle start #启动

service oracle stop #关闭

service oracle restart #重启

建立连接:

复制代码 代码如下:

ln -s /etc/init.d/oracle /etc/rc0.d/k01oracle   #关机执行

ln -s /etc/init.d/oracle /etc/rc6.d/k01oracle   #重启执行

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐