ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 配置Oracle数据库和监听随Linux系统自启动(转)

配置Oracle数据库和监听随Linux系统自启动(转)

原创 Linux操作系统 作者:yhj20041128001 时间:2012-07-18 07:50:41 0 删除 编辑
配置Oracle数据库和监听随Linux系统自启动

 
1.设置/etc/oratab
testdb2:/opt/oracle/product/9.2.0:Y
要把最后一个选项从N改为Y
2.测试dbstart和dbshut命令
dbstart和dbshut会检查/etc/oratab的设置,如果设置为Y,则执行启动或关闭,如果设置成N,则不做任何操作
测试方法:su - oracle
         dbstart or dbshut
我在测试过程中,报错,意思是找不到init文件,进入sqlplus创建一个init文件即可:

        sqlplus /nolog

         conn /as sysdba

        create pfile from spfile;
再次测试则成功
3.创建操作系统启动和关闭时调用的文件

3.1)修改/etc/rc.d/init.d/oracle文件

              su - root

要在开机关机时自动启动和关闭数据库的话,需要修改 Linux 的启动脚本文件,这里要创建/etc/rc.d/init.d/oracle文件,这个文件的脚本会调用 dbshut 及 dbstart,内容如下:

# !/bin/sh
#
# /etc/rc.d/init.d/oracle
# 解说∶启动及停止 Oracle 数据库和监听程序
# 检查如何执行脚本文件
case "$1" in
  start)
        echo -n "Starting Oracle Databases: "
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        su - oracle -c dbstart >> /var/log/oracle
        echo "Done."
        echo -n "Starting Oracle Listeners: "
        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
        ;;
  stop)
        echo -n "Shutting Down Oracle Listeners: "
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        su - oracle -c "lsnrctl stop" >> /var/log/oracle
        echo "Done."
        rm -f /var/lock/subsys/oracle
        echo -n "Shutting Down Oracle Databases: "
        su - oracle -c dbshut >> /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 Databases: "
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        su - oracle -c dbshut >> /var/log/oracle
        su - oracle -c dbstart >> /var/log/oracle
        echo "Done."
        echo -n "Restarting Oracle Listeners: "
        su - oracle -c "lsnrctl stop" >> /var/log/oracle
        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
编辑完这个文件后,要将其改为可执行
chmod +x oracle
chmod 777 oracle
然后测试一下,保证该脚本可以正常执行
cd /etc/rc.d/init.d
./oracle start
./oracle stop
./oracle restart
 
3.2)在相应的runlevel目录里建立符号连接

要在正确的执行等级目录 (runlevel ctories) /etc/rc.d/rcX.d 中建立及删除符号连结 (symbolic links)。

以下指令确保在执行等级 2, 3 及 5 下会启动数据库,级别4没有使用,所以不管。∶

  ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc2.d/S99oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc3.d/S99oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc5.d/S99oracle
要在重新启动时停止数据库,我们需要以下连结∶ 
  ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc0.d/K01oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc6.d/K01oracle
3.2)修改dbshut文件
因为dbshut命令默认是用shutdown normal方式关闭数据库,但实际情况下这种方式很难关掉数据库,因此需要更改dbshut脚本,将其中的shutdown命令改为 shutdown immediate
su - oracle
cd $ORACLE_HOME/bin
vi dbshut
 
附录:另外一种写法
vi /etc/rc.d/init.d/oracle
#!/bin/bash
##############################################################
# Script. Function: Auto start oracle instance and listener. #
# Script. Name:     oracle                                   #
# Author:          Secooler Hou                              #
# Date:            2009-11-13 19:58:49                       #
##############################################################
case "$1" in
start)
echo "Starting Oracle Database..."
su - oracle -c "dbstart"
echo "Done."
echo "Starting Oracle Listener..."
su - oracle -c "lsnrctl start"
echo "Done."
touch /var/lock/subsys/oracle
;;
stop)
echo "Shutting down Oracle Listener..."
su - oracle -c "lsnrctl stop" >> /var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo "Shutting down Oracle Database..."
su - oracle -c "dbshut"
echo "Done."
echo ""
;;
restart)
$0 stop
$0 start
;;
*)
exit 1
esac

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23757700/viewspace-735894/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 232323
请登录后发表评论 登录
全部评论

注册时间:2010-09-17

  • 博文量
    162
  • 访问量
    355820