如何在linux下重启oracle数据库 linux版

Linux下启动Oracle数据库实例_数据库技术_Linux公社-Linux系统门户网站
你好,游客
Linux下启动Oracle数据库实例
来源:Linux社区&
作者:liuyanghai
Linux下启动数据库实例,分为两步:第一步,启动监听;第二步,启动数据库实例。& &一、如何启动数据库实例& & 1.进入到sqlplus启动实例& su - oracle& & & & & & & & & & & & & & & &
--&切换到oracle用户&&lsnrctl start& & & & & & & & & & & & & & &
--&打开监听&&sqlplus /nolog& & & & & & & & & & & & & & & & --&进入到sqlplus&&SQL& conn /as sysdba& & & & & & & & & & & & & & & & & & & & & &
--&连接到sysdba&&Connected to an idle instance.&SQL& startup& & & & & & & & & & & & & & & & & & & & & & & & & & --&启动数据库实例&&SQL& shutdown immediate& & & & & & & & & & & & & & & & & & & &
--&关闭数据库实例&&SQL& exit&[oracle@ ~]$ lsnrctl stop& & & & & & & & & & & & & & & &
--&关闭监听&& & 2.用dbstart和dbshut启动和关闭数据库实例& &先启动监听 lsnrctl start&启动实例& dbstart& &使用dbstart命令启动数据库比较方便,但是在linux上安装好oracle之后,第一次使用dbstart命令可能会报如下错误:& &ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener&Usage: /u01/app/oracle/oracle/product/10.2.0/db_1/bin/dbstart ORACLE_HOME&原因:&dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题,分别打开两个文件找到:用vi编辑dbstart,ORACLE_HOME_LISTNER=$1,修改为&ORACLE_HOME_LISTNER=$ORACLE_HOME& & &然后保存退出,此时再运行dbstart,已经不报错了,但是没有任何反应,ps一下进程,没有oracle的进程,说明oracle实例没有正常启动。& &此时的原因是在/etc/oratab的设置问题,我们vi一下,发现&zgz:/home/oracle/product/10g:N&最后设置的是"N"(我的环境中只有一个实例,因此只有一行配置语句),我们需要把&N&修改为&Y&。& &以上的工作做好之后,dbstart就可以正常使用了:& &[oracle@redhat bin]$ lsnrctl start& & & & & & & & & & & & & & & & &
--&启动监听&&[oracle@redhat bin]$ dbstart& & & & & & & & & & & & & & & & &
--&启动数据库实例&&Processing Database instance "zgz": log file /home/oracle/product/10g/startup.log&[oracle@redhat bin]$ dbshut& & & & & & & & & & & & & & & & & & --&关闭数据库实例&&[oracle@redhat bin]$ lsnrctl stop& & & & & & & & & & & & & & & --&关闭监听&& &二、如何使数据库实例和linux系统一起启动&在/etc/rc.d/rc.local中加入如下语句即可实现同系统启动实例:&su - oracle -c "lsnrctl start"&su - oracle -c "dbstart"
更多Oracle相关信息见 专题页面
本文永久更新链接地址:
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款Linux下启动Oracle服务和监听顺序
<meta name="description" content="Linux下启动Oracle服务和监听顺序,&/SPAN& &P&  安装终了oracle现在,须要树立oracle系统用户,并在/home/oracle下面的.bash_profile添加多个环境变量:ORACLE_SID,ORACLE_BASE,ORACLE...">
分类导航 :
您的位置:
→ Linux下启动Oracle服务和监听顺序
Linux下启动Oracle服务和监听顺序
日期:日 作者:
  安装终了oracle现在,须要树立oracle系统用户,并在/home/oracle下面的.bash_profile添加多个环境变量:ORACLE_SID,ORACLE_BASE,ORACLE_HOME。比如:
  export ORACLE_SID=test& export ORACLE_BASE=oracle_install_dir export ORACLE_HOME=xxx
  启动步骤:留意$代表shell命令提示符,这里的oracle是9.0以上版本。
  $ su - oracle
  $ sqlplus / nolog
  sql& conn / as sysdba
  sql& startup (普通不须要加参数,只需配置好环境变量)
  sql& quit (退出sql方式)
  $ lsnrctl start (启动监听器)关闭oracle
  $ lsnrctl stop(关闭监听器,在这之前,应该先关闭运用顺序)
  $ sqlplus& /nolog
  sql&shutdown 其参数 :shutdown有四个参数,四个参数的意思如下:
  Normal 须要等候一切的用户断开衔接
  Immediate 等候用户完成现在的语句
  Transactional 等候用户完成现在的事务
  Abort 不做任何等候,直接关闭数据库
  normal须要在一切衔接用户断开后才执行关闭数据库职务,所以有的时分看起来好象命令没有运转一样!在执行这个命令后不准许新的衔接
  immediate在用户执行完正在执行的语句后就断开用户衔接,并不准许新用户衔接。
  transactional 在拥护执行完现在事物后断开衔接,并不准许新的用户衔接数据库。
  abort 执行强行断开衔接并直接关闭数据库。
  前三种方式不回丧失用户数据。第四种在不的已的情况下,不建议采用!
  经常遇到的疑问:
  1)权限疑问,处理方法,切换到oracle用户;
  2)没有关闭监听器 ,处理方法:关闭监听器
  3)有oracle实例没有关闭,处理方法:关闭oracle实例
  4)环境变量配置不全,处理方法:修正环境变量 (出处:/)
中文版权所有: 蜀ICP备号Oracle数据库教程;――linux系统重启盘符错乱问题;linux磁盘重启乱序问题处理;最近到客户那去巡检时,客户提到一个问题,他们的r;[root@ractest1~]#raw/dev;[root@ractest1~]#raw/dev;[root@ractest1~]#raw/dev;并且,比较奇怪的事,两边有时认得的盘完全不一样,;在了解了他们的情况
Oracle数据库教程
―― linux系统 重启盘符错乱问题
linux磁盘重启乱序问题处理
最近到客户那去巡检时,客户提到一个问题,他们的rac在重启的时候,原来的sda1、sdb1、sdc1会对应变成sdd1、sde1、sdf1,由于他们使用的是盘符来绑定裸设备,所以启动后,经常要手动执行以下命令
[root@ractest1 ~]# raw /dev/raw/raw1 /dev/sda1
[root@ractest1 ~]# raw /dev/raw/raw2 /dev/sdb1
[root@ractest1 ~]# raw /dev/raw/raw3 /dev/sdc1
并且,比较奇怪的事,两边有时认得的盘完全不一样,一边是sda\b\c,另一边是sdd\e\f,这样,使oracle rac的共享盘出现问题。
在了解了他们的情况后,我基本上明白是什么原因,这种盘序错乱,与linux对磁盘的扫描机制有关,所以我们只能从另一角度去规避这样的问题,使用id号去绑定,这样就没有问题。在告诉他后,他同意我们对他原来的绑定方式进行修改,具体操作如下:
[root@ractest1 ~]# fdisk -l
Disk /dev/sdd: 429.4 GB,
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
System /dev/sdd1
Disk /dev/sde: 209 MB,
7 heads, 58 sectors/track, 1008 cylinders
Units = cylinders of 406 * 512 = 207872 bytes
System /dev/sde1
Disk /dev/sdf: 209 MB,
7 heads, 58 sectors/track, 1008 cylinders
Units = cylinders of 406 * 512 = 207872 bytes
System /dev/sdf1
可以看到,刚重启的节点1是sdd/sde/sdf
另一个节点的情况是:
[root@ractest2 ~]# fdisk -l
Disk /dev/sda: 429.4 GB,
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb: 209 MB,
7 heads, 58 sectors/track, 1008 cylinders
Units = cylinders of 406 * 512 = 207872 bytes
Disk /dev/sdc: 209 MB,
7 heads, 58 sectors/track, 1008 cylinders
Units = cylinders of 406 * 512 = 207872 bytes
分别在两台机子上执行如下命令:
[root@ractest2 ~] scsi_id -g -s /block/sda
017ffc47bd4a
[root@ractest2 ~] scsi_id -g -s /block/sdb
017fddc6344ef
[root@ractest2 ~] scsi_id -g -s /block/sdc
017ffc63446e
[root@ractest1 ~] scsi_id -g -s /block/sdd
017ffc47bd4a
[root@ractest1 ~] scsi_id -g -s /block/sde
017fddc6344ef
[root@ractest1 ~] scsi_id -g -s /block/sdf
017ffc63446e
能过对比,可以看到sda与sdd,sdb与sde,sdc与sdf是对应用的,所以我们启用udev,通过绑定id来规避这个问题!
[root@ractest1 ~]# cd /etc/udev/rules.d/
[root@ractest1 rules.d]# ls -a
50-udev.rules
60-pcmcia.rules
61-uinput-wacom.rules
90-hal.rules
51-hotplug.rules
60-raw.rules
85-pcscd_ccid.rules
95-pam-console.rules
05-udev-early.rules
60-libsane.rules
60-wacom.rules
90-alsa.rules
98-kexec.rules
40-multipath.rules
60-net.rules
61-uinput-stddev.rules
90-dm.rules
bluetooth.rules
[root@ractest1 rules.d]# vi 60-raw.rules
# Enter raw device bindings here.
# An example would be:
ACTION==&add&, KERNEL==&sda&, RUN+=&/bin/raw /dev/raw/raw1 %N& # to bind /dev/raw/raw1 to /dev/sda, or
ACTION==&add&, ENV{MAJOR}==&8&, ENV{MINOR}==&1&, RUN+=&/bin/raw /dev/raw/raw2 %M %m&
# to bind /dev/raw/raw2 to the device with major 8, minor 1.
ACTION==&add&, KERNEL==&sd*1&, PROGRAM==&/sbin/scsi_id -g -u -s %p&,
RESULT==&017ffc63446e&, RUN+=&/bin/raw /dev/raw/raw1 %N& ACTION==&add&, KERNEL==&sd*1&, PROGRAM==&/sbin/scsi_id -g -u -s %p&,
RESULT==&017fddc6344ef&, RUN+=&/bin/raw /dev/raw/raw2 %N&
ACTION==&add&, KERNEL==&sd*1&, PROGRAM==&/sbin/scsi_id -g -u -s %p&,
RESULT==&017ffc47bd4a&, RUN+=&/bin/raw /dev/raw/raw3 %N& KERNEL==&raw[1-3]&, OWNER=&oracle&, GROUP=&dba&, MODE=&660&
[root@ractest1 rules.d]# start_udev
Starting udev: [
[root@ractest1 rules.d]#
[root@ractest1 rules.d]# raw -qa
/dev/raw/raw1:
bound to major 8, minor 81
/dev/raw/raw2:
bound to major 8, minor 65
/dev/raw/raw3:
bound to major 8, minor 49
同理,在另一台机,也进行同样的操作。
经过如上操作后,所有问题都解决了,不管怎么重启都不会有问题!
更多文章可见:我们其中一位工程师的博客:/
三亿文库包含各类专业文献、中学教育、生活休闲娱乐、幼儿教育、小学教育、专业论文、应用写作文书、各类资格考试、文学作品欣赏、高等教育、19Oracle数据库教程 ―― linux系统 重启盘符错乱问题等内容。 
 Linux 下 oracle 数据库常用命令 Oracle 用户下执行: $ sqlplus system/manager @ file.sql $ sqlplus system/manager $ sqlplus /nolog sqlplus,启动数据时会...  Oracle数据库的备份与恢复操作手册(Linux)_计算机软件及应用_IT/计算机_专业资料...备份与恢复手册 4.由于采用 NOCATALOG 方式备份,因此需要采用命令单独备份控制文件...  Linux_oracle命令及oracle数据库命令_IT/计算机_专业...重启数据库之后生效: SQL& show parameters processes...因为没有删除数据, 所以此操作不回收磁盘空间,因而...  Linux_oracle数据库的备份与恢复_IT/计算机_专业资料...应将信息备份到磁盘上,然后启动数据库(使用户可以...(3)重新启动 archive 进程 --- (4)备份归档的 ...  Linux常用命令及系统安装和oracle数据库安装_IT/计算机_专业资料。一些linux的常用...22) 安装完成,点击重启 23) 下一步 24) 下一步 25) 选择打开防火墙,并...  Linux 服务器上的 Oracle 数据库启动操作指导 1、 打开 putty 并连接数据库服务器,使用 oracle 用户登录。 2、 登录成功后,执行“lsnrctl start”命令启动监听...  linux下的ORACLE数据库教程()_计算机软件及...当用户注销或系统重启后,都将自 动丢失,因此建议...文件内容,如:保存文本内容到某个磁盘 文件;删除一行...  命令启动数据库比较方便, 但是在 linux 上安装好 oracle 之后, 第一次使用 dbstart 命令可能会报如下错误: ORACLE_HOME_LISTNER is not SET, unable to auto-...  linux操作系统下完全删除oracle数据库 Linux基础教程_计算机软件及应用_IT/计算机_专业资料。linux操作系统下完全删除oracle数据库 Linux基础教程 ...[已解决 - ]
悬赏价格: 无忧币 10
linux下Oracle自己启动
RT,本来我在root用户下执行
su - oracle -c &/D/Tools/Oracle/10.2.0/bin/dbstart && /D/Tools/Oracle/10.2.0/bin/lsnrctl start&
是可以启动Oracle的。。。但是我将这段话写到/etc/rc.d/rc.local就是不启动,那位大侠帮忙解决下?3Q
-------------------------
LINUX、Oracle安装的不规范和Oracle启动的想法,让大侠们见笑了。。。。如果有更好的启动方法请赐教(这2个都不是我安的:L )
最佳答案 ( 回答者:
linux下 Oracle自动启动与停止
1、 修改Oracle系统配置文件/etc/oratab
  /etc/oratab 格式为: SID:ORACLE_HOME:AUTO
  把AUTO域设置为Y(大写),只有这样,oracle 自带的dbstart和dbshut才能够发挥作用。我的为:
  ora9i:/home/oracle/ora/products/9.2.0:Y
  2、 编写服务脚本:
  #!/bin/bash
  #################FUNCTION#############
  # AutoStart Oracle and listener
  # AutoStop Oracle and listener
  #####################################
  # Created by ZhouYS
  case &$1& in
  start)
  echo &Starting Oracle Databases ... &
  echo &-------------------------------------------------& && /var/log/oracle
  date +& %T %a %D : Starting Oracle Databasee as part of system up.& && /var/log/oracle
  echo &-------------------------------------------------& && /var/log/oracle
  su - oracle -c &dbstart& && /var/log/oracle
  echo &Done.&
  echo &Starting Oracle Listeners ... &
  echo &-------------------------------------------------& && /var/log/oracle
  date +& %T %a %D : Starting Oracle Listeners as part of system up.& && /var/log/oracle
  echo &-------------------------------------------------& && /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 &Stoping Oracle Listeners ... &
  echo &-------------------------------------------------& && /var/log/oracle
  date +& %T %a %D : Stoping Oracle Listener 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 &Stoping Oracle Databases ... &
  echo &-------------------------------------------------& && /var/log/oracle
  date +& %T %a %D : Stoping Oracle Databases as part of system down.& && /var/log/oracle
  echo &-------------------------------------------------& && /var/log/oracle
  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)
  $0 stop
  $0 start
  echo &Usage: oracle {start|stop|restart}&
  exit 1
  将脚本命名为oracle,保存在/etc/rc.d/init.d下
  改变文件属性:chmod 755 oracle
  注意:在windows下编辑此文件时有DOS格式字符导致在linux下不能够正常运行,建议用gedit 或用 vi编辑
  3、建立服务连接:
  系统启动时启动数据库,我们需要以下连结∶
  --------------------------------------------------------------------------------
  $ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle
  $ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle
  $ ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle #rc4.d unused
  --------------------------------------------------------------------------------
  要在重新启动时停止数据库,我们需要以下连结∶
  --------------------------------------------------------------------------------
  $ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # 停止
  $ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # 重新启动
**********************************************************************************************************************
Linux中在Oracle安装完毕以后,如果重新启动Linux ,Oracle是不会自动启动的,你可以通过手动调用dbstart命令来进行启动,不过这样似乎也很繁琐。我们可以通过配置Oracle的自动启动脚本,然后利用Linux的Service来启动Oracle服务器。
首先在/etc/rc.d/init.d/目录下配置Oracle的服务文件。
touch oracle10g
chmod a+x oracle10g
然后编辑此oracle10g文件。内容如下。
# !/bin/bash
# chkconfig: 345 51 49
# description: starts the oracle dabase deamons
ORA_HOME=/opt/oracle
ORA_OWNER=oracle
case &$1& in
echo -n &Starting oracle10g: &
su - $ORA_OWNER -c &$ORA_HOME/bin/dbstart& &
su - $ORA_OWNER -c &$ORA_HOME/bin/lsnrctl start&
touch /var/lock/subsys/oracle10g
echo -n &shutting down oracle10g: &
su - $ORA_OWNER -c &$ORA_HOME/bin/dbshut& &
su - $ORA_OWNER -c &$ORA_HOME/bin/lsnrctl stop&
rm -f /var/lock/subsys/oracle10g
'restart')
echo -n &restarting oracle10g: &
echo &usage: oracle10g &
保存文件,退出以后,添加并启动察看服务。
/sbin/chkconfig --add oracle10g
/sbin/chkconfig --list oracle10g
重新启动Linux的时候,如果看到启动项Oracle出现OK,代表Oracle成功随Linux启动了。
linux下oracle 10G启动EM和isqlplus
注:$ORACLE_HOME为oracle的安装路径
1,使用EM(enterprise managment)
$ORACLE_HOME/bin/emctl start dbconsole
如果出现下面相关信息,说明服务启动
TZ set to PRC
Oracle Enterprise Manager 10g Database Control Release 10.1.0.3.0
Copyright (c)
Oracle Corporation. All rights reserved.
Starting Oracle Enterprise Manager 10g Database Control ................................. started.
在浏览器地址中输入如下地址:
如果不出现登录对话页面,请确保你的数据库服务与监听服务正常启动了
注意:如果监听程序不启动,可以通过sqlplus登录,但在此页面中不能正常显示.
现在你就可以正常使用EM了!
2,使用isqlplus
2.1启动isqlplus
$ORACLE_HOME/bin/isqlplusctl start
如果出现如下信息,说明正常启动.
iSQL*Plus 10.1.0.3.0
Copyright (c) 2004 Oracle. All rights reserved.
Starting iSQL*Plus ...
iSQL*Plus started.
2.2使用isqlplus
在浏览器地址中输入如下地址:
这样就出现了isqlplus的登录界面,就可使用isqlplus了
日下午14:40
我自己配置的oracle10g自动启动文件。
vi /etc/rc.d/init.d/oracle10g
# !/bin/bash
# chkconfig: 345 51 49
# description: starts the oracle dabase deamons
ORA_HOME=/opt/oracle/product/10.2.0/db_1/
ORA_OWNER=oracle
case &$1& in
echo -n &Starting oracle10g: &
su - $ORA_OWNER -c &$ORA_HOME/bin/dbstart& &
su - $ORA_OWNER -c &$ORA_HOME/bin/lsnrctl start& &
su - $ORA_OWNER -c &$ORA_HOME/bin/emctl start dbconsole& &
su - $ORA_OWNER -c &$ORA_HOME/bin/isqlplusctl start&
touch /var/lock/subsys/oracle10g
echo -n &shutting down oracle10g: &
su - $ORA_OWNER -c &$ORA_HOME/bin/isqlplusctl stop& &
su - $ORA_OWNER -c &$ORA_HOME/bin/emctl stop dbconsole& &
su - $ORA_OWNER -c &$ORA_HOME/bin/dbshut& &
su - $ORA_OWNER -c &$ORA_HOME/bin/lsnrctl stop&
rm -f /var/lock/subsys/oracle10g
'restart')
echo -n &restarting oracle10g: &
echo &usage: oracle10g &
设置ORACLE11g随RHEL5自动启动与关闭
最近,ORACLE系统基本调试通过,是时候设置ORACLE随RHEL自动启动与关闭服务的时候了。现在笔者从对这个过程进行了详细的讲解。现在就把我的整个成功设置的过程贴出来,供大家参考,以期大家能少走弯路;另外还是要给其他人一个建议:切莫生硬照搬,断章取义,否则其害大焉!!首先,要在RHEL中设置允许ORACLE系统自动启动,因为默认情况下是设置为不允许的。操作如下:
在root账户下修改/etc/oratab文件:
#vi/etc/oratab
找到orcl=/db/app/oracle/product/11.1.0/db_1:N这一行
orcl=/db/app/oracle/product/11.1.0/db_1:Y
也就是将最后的N改为Y,意思是将不允许自动启动改为允许自动启动。然后,是修改ORACLE自带的启动与关闭脚本,分别是dbstart和dbshut。执行这两个脚本就可以实现ORACLE脚本的启动与关闭。在oracle账户下修改$ORACLE_HOME/bin/dbstart文件:
#su-ORACLE
$cd$ORACLE_HOME/bin
$vidbstart
找到ORACLE_HOME_LISTNER=$1这一行
◆ORACLE_HOME_LISTNER=$ORACLE_HOME之所以做这一步,是因为在这个脚本自动生成的时候,也就是ORACLE被安装进RHEL的时候,这个脚本并不知道你的
◆ORACLE_HOME_LISTNER是什么,现在要将这个参数显示的写明,这样就不会在执行这个脚本的时候报
◆ORACLE_HOME_LISTNER没有被指定的错误了。注意:dbstart和dbshut脚本在10g之后就已经将监听器的启动与关闭合并进数
据库实例的启动与关闭脚本里面了。而不再是单独分开的了。同样的方式,我们也要修改dbshut的这个参数。这里就不再详细写出了,他们在同一个目录下。再次,就是写一个脚本,把它注册为一个系统服务,让它在开机与关机的时候运行。它的作用就是调用并执行dbstart和dbshut。这样不就实现了数据库启动与关闭了吗?!这个脚本被放在/etc/init.d目录中,脚本的名字是oracle11
脚本如下:
#!/bin/bash
#chkconfig:
#description:StartupScriptfororacleDatabases
#/etc/rc.d/init.d/oradbstart
exportORACLE_BASE=/db/app/oracle/
exportORACLE_HOME=/db/app/oracle/product/11.1.0/db_1
exportORACLE_SID=orcl
exportPATH=$PATH:$ORACLE_HOME/bin
case&$1&in
echo&-----startuporacle-----&&&/var/log/oracle11log
suoracle-c$ORACLE_HOME/bin/dbstart
touch/var/lock/subsys/oracle11
echo&-----startuporaclesuccessful-----&&&/var/log/oracle11log
echo&-----shutdwnoracle-----&&&/var/log/oracle11log
suoracle-c$ORACLE_HOME/bin/dbshut
rm-f/var/lock/subsys/oracle11
echo&-----shutdownoraclesuccessful-----&&&/var/log/oracle11log
echo&Usage:'basename$0'start|stop&
保存并退出。
现在,我要对这段脚本做一个关键解释:
第一:#chkconfig:虽是一行注释,但是确实关键的必不可少的一行,除非你不用chkconfig命令来自动生成符号连接文件,而是完全采用手工创建。否则没有这一行,执行chkconfig系统将会报出oracle11没有chkconfig服务权限的错误。
第二:suoracle-c$ORACLE_HOME/bin/dbstart和touch/var/lock/subsys/oracle11这两行的作用是首先执行dbstart脚本启动oracle,然后在服务活动列表目录中创建一个与oracle11这个服
务同名的一个文件,表示这个服务是活动的,也就是被启动的。
而suoracle-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的启动与关闭脚本也是这样做的,最终恍然大悟
原来如此。这个地方请大家注意了。
最后,就是将这个脚本注册成为一个系统服务就可以了,方法有二:
其一:先给脚本分配可以被执行的权限。执行下面命令:
chownoracle/etc/init.d/oracle11
chmod775/etc/init.d/oracle11
再创建符号链接文件。
chkconfig--add/etc/init.d/oracle11,执行这个命令就需要你在脚本中写上#chkconfig:了。这样当这个命令被执行的时候,回去oracle11文件中寻找这行注释,并解析这行注释,根据解析结果分别在/etc/rc.d/rc2.d;/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:中这些数字的含义了吧:指出2,3,4,5级别启动这个服务,99是在相应的/etc/rc.d/rcN.d(N为前面指定的级别,这里是2345)目录下生成的链接文件的序号(启动优先级别)S99oracle11,10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除2345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)K10oracle11。至于为什么在这些目录中创建文件和文件的命名规则,这就要您对LINUX的系统启动流程有一个熟悉的了解了,在这就不详谈了。
其二:若您想尝试一下手动创建符号连接文件的乐趣,请执行如下命令:
ln-s/etc/init.d/oracle11/etc/rc.d/rc2.d/S99oracle11
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
ln-s/etc/init.d/oracle11/etc/rc.d/rc0.d/K10oracle11
ln-s/etc/init.d/oracle11/etc/rc.d/rc1.d/K10oracle11
ln-s/etc/init.d/oracle11/etc/rc.d/rc6.d/K10oracle11
作用效果和执行chkconfig--addoracle11是一样的。
到此,所以得设置过程就结束了,下面进行一下测试吧:
#cd/etc/init.d
shoracle11start
执行后,看看/var/log目录下的oracle11log文件,里面是不是有脚本的启动分支输出信息呢?
shoracle11stop
执行后,看看/var/log目录下的oracle11log文件,里面是不是有脚本的关闭分支输出信息呢?若看到信息,表示您设置成功了。若没有,请再仔细设置一遍,并注意文件的权限问题。LINUX的用户概念是很严格的。毕竟是多用户系统。设置ORACLE11g随RHEL5自动启动与关闭的过程是一个非常复杂的,笔者对这两个过程进行了详细的解释与介绍。
初级工程师&
采纳率3帖&&/&&9%
结帖率14帖&&/&&100%
帖子438&精华&无忧币23 &在线时间208 小时&注册时间&最后登录&

我要回帖

更多关于 linux下oracle数据库 的文章

 

随机推荐