1.首先修改/etc/oratab文件
#vi /etc/oratab
找到orcl=/u01/app/oracle/product/11.1.0/db_1:N这一行
改为:
orcl=/u01/app/oracle/product/11.1.0/db_1:Y
也就是将最后的N改为Y,意思是将不允许自动启动改为允许自动启动。

2.修改ORACLE自带的启动与关闭脚本,

分别是dbstart和 dbshut。执行这两个脚本就可以实现ORACLE脚本的启动与关闭。在oracle账户下修改$ORACLE_HOME/bin/dbstart文件
#su -oracle
$cd $ORACLE_HOME/bin
$vi dbstart
找到ORACLE_HOME_LISTNER=$1这一行
改为:ORACLE_HOME_LISTNER=$ORACLE_HOME
之所以做这一步,是因为在这个脚本自动生成的时候,也就是ORACLE被安装进RHEL的时候,这个脚本并不知道你的ORACLE_HOME_LISTNER是什么,现在要将这个参数显示的写明,这样就不会在执行这个脚本的时候报ORACLE_HOME_LISTNER没有被指定的错误了。注意:dbstart和dbshut脚本在10g之后就已经将监听器的启动与关闭合并进数据库实例的启动与关闭脚本里面了。而不再是单独分开的了。
同样的方式,我们也要修改dbshut的这个参数。这里就不再详细写出了,他们在同一个目录下。

3.写一个脚本,把它注册为一个系统服务,让它在开机与关机的时候运行。它的作用就是调用并执行dbstart和dbshut。这样不就实现了数据库启动与关闭了吗?!这个脚本被放在/etc/init.d目录中,脚本的名字是oracle11
脚本如下:

# !/bin/sh
# chkconfig: 345 61 61
# description: Oracle 11g AutoRun Services
# /etc/init.d/oracle
#
# Run-level Startup script. for the Oracle Instance, Listener, and
# Web Interface

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_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
     su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart

touch /var/lock/subsys/oracle11
     su $ORA_OWNR -lc "$ORACLE_HOME/bin/emctl start dbconsole"
     echo "Oracle Start Succesful!OK."
     ;;
stop)
     # Oracle listener and instance shutdown
     su $ORA_OWNR -lc "$ORACLE_HOME/bin/emctl stop dbconsole"
     su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut

rm -f /var/lock/subsys/oracle11
     echo "Oracle Stop Succesful!OK."
     ;;
reload|restart)
     $0 stop
     $0 start
     ;;
*)
     echo $"Usage: `basename $0` {start|stop|reload|reload}"
     exit 1
esac
exit 0
保存并退出。
这段脚本的关键解释:
第一:#chkconfig:345 99 10虽是一行注释,但是确实关键的必不可少的一行,除非你不用chkconfig命令来自动生成符号连接文件,而是完全采用手工创建。否则没有这一行,执行chkconfig系统将会报出oracle11没有chkconfig服务权限的错误。
第二:su oracle -c $ORACLE_HOME/bin/dbstart和touch /var/lock/subsys/oracle11这两行的作用是首先执行dbstart脚本启动oracle,然后在服务活动列表目录中创建一个与oracle11这个服务同名的一个文件,表示这个服务是活动的,也就是被启动的。而su oracle -c $ORACLE_HOME/bin/dbshut和rm -f /var/lock/subsys/oracle11这两行的作用是首先执行dbshut急哦脚本关闭oracle,然后从服务活动列表目录中删除那个与oracle11同名的那个文件,表示这个服务不是活动的,也就是已经被关闭。

那么为什么要做touch /var/lock/subsys/oracle11和rm -f /var/lock/subsys/oracle11这两步呢?原因是跟LINUX系统的机制有关的:LINUX的判别一个服务是否被启动的依据是在/var/lock/subsys/目录下是否与服同名的文件,若有则表示这个服务已经被启动了,在系统关闭的时候,LINUX会把这里面列出的服务全部关闭,并删掉与服务同名的文件。若一个服务被启动了,但却在这个目录里没有那个服务的同名文件,则不会关闭那个服务。网上的文章均将这个地方设置错了,所以会发现,ORACLE可以随系统启动了,但却没有随系统关闭。我也是分析了/etc/rc.d/rc.local后才发现这个原理的。经过试验,果然如此。再分析mysql的启动与关闭脚本也是这样做的,最终恍然大悟
原来如此。这个地方请大家注意了。

4.将这个脚本注册成为一个系统服务
方法有二:
其一:先给脚本分配可以被执行的权限。执行下面命令:
#su-root
chown oracle /etc/init.d/oracle11
chmod 775 /etc/init.d/oracle11

-------[root@oracle init.d]# chmod 750 /etc/init.d/oracle

-------链接:
 
-------[root@oracle init.d]# ln -s /etc/init.d/oracle /etc/rc1.d/K61oracle

-------[root@oracle init.d]# ln -s /etc/init.d/oracle /etc/rc3.d/S61oracle

-------执行以下命令:
 
-----[root@oracle init.d]# chkconfig --level 345 oracle on   (参数--level 为两个"-" ,下同)

-----[root@oracle init.d]# chkconfig --add oracle          // 添加到服务里

再创建符号链接文件。
chkconfig --add /etc/init.d/oracle11,执行这个命令就需要你在脚本中写上#chkconfig:3459910了。这样当这个命令被执行的时候,回去oracle11文件中寻找这行注释,并解析这行注释,根据解析结果分别在/etc/rc.d/rc3.d;/etc/rc.d/rc4.d;/etc/rc.d/rc5.d中创建符号连接文件S99oracle11文件,这个文件是系统启动时要执行的,其实这个文件是指向/etc/init.d/oracle11的,启动的时候系统向这个文件发送一个start参数,也就执行了oracle11文件中的start分支了。还会在/etc/rc.d/rc0.d;/etc/rc.d /rc1.d;/etc/rc.d/rc6.d中创建K10oracle11文件,这个文件时系统关闭时要执行的,其实这个文件也是指向/etc /init.d/oracle11的,关闭的时候系统向这个文件发送一个stop参数,也就执行了oracle11文件中的stop分支了。
我想你应该明白#chkconfig:3459910中这些数字的含义了吧:指出3,4,5级别启动这个服务,99是在相应的/etc /rc.d/rcN.d(N为前面指定的级别,这里是2345)目录下生成的链接文件的序号(启动优先级别)S99oracle11,10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除2345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)K10oracle11。至于为什么在这些目录中创建文件和文件的命名规则,这就要您对LINUX的系统启动流程有一个熟悉的了解了,在这就不详谈了。
其二:若您想尝试一下手动创建符号连接文件的乐趣,请执行如下命令:
#su -root
ln -s /etc/init.d/oracle11 /etc/rc.d/rc3.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc4.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc5.d/S99oracle11
作用效果和执行chkconfig --add oracle11是一样的。
重启之后看看/var/lock/subsys/目录下的oracle11log文件,里面是不是有脚本的启动分支输出信息呢?

ORACLE自动启动脚本相关推荐

  1. linux mysql设置开机启动脚本_linux下添加oracle自启动脚本

    1.修改/etc/oratab文件,后面的dbstart和dbshut依据这个文件启动数据库 soadb:/u01/oracle/product/11.2.0/dbhome_1:Y 2.创建数据库初始 ...

  2. Oracle简单脚本演示样例

    Oracle简单脚本演示样例 1.添加表 --改动日期:2014.09.21 --改动人:易小群 --改动内容:新增採购支付情况表 DECLARE VC_STR           VARCHAR2( ...

  3. linux下添加自动启动项,linux 开机自动启动脚本方法

    #service servicename status是当前状态 #chkconfig --list servicename是查看启动状态,也就是是否开机自动启动 首先写好脚本,如 mysql,把它放 ...

  4. oracle导出脚本文件怎么打开,Windows下的Oracle导出脚本 -电脑资料

    Windows下的Oracle导出脚本 导出脚本内容: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...

  5. oracle批处理脚本学习总结

    Oracle自动备份脚本 废话不多说了,直接给大家贴代码了,具体代码如下所示: #!/bin/sh #************************************************* ...

  6. linux oracle停启,linux下Oracle自动启动与停止总结

    1. 修改Oracle系统配置文件/etc/oratab /etc/oratab 格式为: SID:ORACLE_HOME:AUTO 把AUTO域设置为Y(大写),只有这样,oracle 自带的dbs ...

  7. linux 进入redis 数据库,Linux下Redis数据库的安装方法与自动启动脚本分享

    安装Redis (1) 下载Redis wget http://redis.googlecode.com/files/redis-2.2.11.tar.gz tar xzvf redis-2.2.11 ...

  8. CentOS上快速安装Oracle服务器脚本

    CentOS上快速安装Oracle服务器脚本 配置repos源 # 注释下列代码,可能导致源问题 # cd /etc/yum.repos.d # wget http://yum.oracle.com/ ...

  9. Oracle 数据库管理脚本 命名规范

    Oracle 中的数据字典是数据库中的非常重要的一部分,提供了相关数据库的信息,它是所有 Oracle 用户(从应用的最终用户.应用的设计开发者到数据库管理员)的非常重要的信息来源.数据字典的创建,是 ...

最新文章

  1. 公共基础选择题前10t
  2. hibernate和jdbc的优缺点,概述
  3. 配置防火墙打开 80 端口
  4. python sklearn 归一化_数据分析|Python特征工程(5)
  5. 【AI面试题】特征归一化
  6. Mysql多表关联删除操作
  7. apache的rewrite规则来实现URL末尾是否带斜杠
  8. python 3.8.0版本的skimage库是什么_python的skimage库 图像读取显示
  9. 飞桨模型保存_飞桨对话模型工具箱(二):对话自动评估模块ADE
  10. 瑞友天翼服务器ip地址怎么修改,(瑞友天翼安装教程.doc
  11. symantec backup exec 2010 oracle 12,Symantec Backup Exec 2010在Windows平台下Oracle备份详细配置步骤...
  12. ghost手动恢复linux,GHOST手动恢复系统(GHOST还原系统)步骤详解
  13. 电大有计算机教程吗,中央电大 计算机平面设计(上)
  14. 思杰桌面服务器虚拟化,虚拟化入门之认识思杰桌面虚拟化XenDesktop
  15. 卸载360企业版密码
  16. 51智能小车前进后退左右旋转
  17. 【Ansible】 Ansible 模块 setup 与 stat 模块用法
  18. 信息学奥赛一本通:1134:合法C标识符查
  19. 翟天临之后,大连博士细数区块链博士圈那些事……
  20. hmc如何进入aix系统_hmc操作手册.doc

热门文章

  1. 需求分析——“中”的思想
  2. python输出十六进制大小写_Python学习任务2十六进制和大小写转换
  3. c++ 植物大战僵尸中文版call源码
  4. 从Steinar Gunderson的离职信谈起
  5. SuperMap iClient3D for WebGL在移动端的应用
  6. 使用Excel制作甘特图
  7. mysql 强制读主库
  8. python连接微信接口开发教程_Python调用微信公众平台接口操作示例
  9. 低代码指南100方案:48用好设备巡检管理系统,轻松解决漏检、配件管理混乱等问题
  10. 从零开始学 Web 之 HTML5(一)HTML5概述,语义化标签