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. navicat for mysql注册码:NAVN-LNXG-XHHX-5NOO
  2. 计算机设置从光盘启动怎么办,设置BIOS从光盘启动教程
  3. [今日干货]短视频获得种子用户的途径
  4. selinux= 为 disabled_「丁香园」五年没考过执医,就不要出来「为祸人间」了
  5. 【Java】睡眠排序
  6. 这就是数据分析之数据集成
  7. java appium_Android应用开发之AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试)...
  8. java编辑遗忘曲线代码,java8的新特性 - 天使broken的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. [带权并查集] Jzoj P1503 体育场
  10. 区块链学习(二)以太坊私有链搭建
  11. 已在此计算机上安装相同或更高版本的 .NET Framework 4”安装报错问题
  12. NYOJ_613_免费馅饼
  13. java eclipse怎么下载_javaeclipse简介(附下载地址和安装包)
  14. 电脑的所有浏览器打不开网页问题解决
  15. 享受知识饕餮盛宴,尽在2016年课程安排
  16. 微商代理系统APP软件
  17. 中国火星车叫什么名字?
  18. js判断对象中每一项属性都不为空 非空检测
  19. 太极阳支持的Android版本,三星 Android 7.0 无法使用太极阳
  20. 嘉宾阵容公布,开源社邀请您参加 Impact Tech, She Can 2023

热门文章

  1. 如何对身份证号上的信息进行提取
  2. Cisco Client - Reason 412: The remote peer is no longer responding
  3. 安装Bioconductor包和加载DESeq2包的报错问题解决
  4. foxtable使用笔记
  5. 船长 | 我们在Club全栈创业
  6. Scrapy pycharm 爬取豆瓣排名前250信息
  7. oracle数据库常用的关键字总结
  8. Java Development - Collections
  9. python两个线程交替执行_python 实现两个线程交替执行
  10. 文件管理-Linux系统压缩打包