UNIX机器设置自动开关数据库的方法

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

UNIX系统的机器在开机后和关机前都要运行一些特定的服务, 如启动和关闭sendmail,crond等。

同样我们可以设置UNIX机器在开机后和关机前启动和关闭ORACLE数据库的服务。

首先我们要确认oracle用户能否用系统自带的Shell程序dbstart, dbshut正常启动和关闭数据库。

dbstart, dbshut的存放目录在$ORACLE_HOME/bin

dbstart, dbshut会读Sun Solaris目录下/var/opt/oracle/oratab, 或者linux目录下/etc/oratab 文件。

先确认这里参数已正确设置:

#你要启动的数据库sid:ORACLE_HOME:Y

例如:

test:/oracle/product/8.1.7:Y

如果有两个在用的数据库,这里oratab里可以是两行。

例如:

test:/oracle/product/8.1.7:Y

test2:/oracle/product/8.1.7:Y

执行dbstart, dbshut如果有问题可以查查原因:是环境变量没有设置好, 还是本身的dbstart或dbshut有错误。

我用过的Oracle8.1.6.*版本的dbstart就不能启动数据库。

按dbshut的格式重新写一个dbstart, 把里面shutdown的字符替换成startup, 可以解决这个问题。

然后在Sun Solaris目录/etc/init.d下, 或者linux目录/etc/rc.d/init.d下.

写一个类似下面的shell文件oracle ( 你要有root权限 )

-----------------------------------------------------------------------------------

#!/bin/sh

OPT_=$1

case "$OPT_" in

start)

/bin/echo "$0 : (start)"

#

# Your service startup command goes here.

#

su - oracle -c "/oracle/product/8.1.7/bin/lsnrctl start"

su - oracle -c "/oracle/product/8.1.7/bin/dbstart"

# NOTE: Must exit with zero unless error is severe.

chmod 1777 /tmp

chown sys:sys /tmp

exit 0

;;

stop)

/bin/echo "$0 : (stop)"

#

# Your service shutdown command goes here.

#

su - oracle -c "/oracle/product/8.1.7/bin/lsnrctl stop"

su - oracle -c "/oracle/product/8.1.7/bin/dbshut"

# NOTE: Must exit with zero unless error is severe.

exit 0

;;

*) /bin/echo ''

/bin/echo "Usage: $0 [start|stop]"

/bin/echo " Invalid argument ==> \"${OPT_}\""

/bin/echo ''

exit 0

;;

esac

-----------------------------------------------------------------------------------

如果你安装的$ORACLE_HOME不是/oracle/product/8.1.7, 需要根据情况修改。

改变它的属性成755, 可以执行。

然后在UNIX机器开机后和关机前要执行的任务目录里加个文件链接。

开机后自动启动ORACLE数据库:

Sun Solaris

#cd /etc/rc2.d

#ln -s /etc/init.d/oracle S99oracle

Linux

#cd /etc/rc.d/rc3.d

#ln -s /etc/rc.d/init.d/oracle S99oracle

关机前自动关闭ORACLE数据库:

Sun Solaris

#cd /etc/rc0.d

#ln -s /etc/init.d/oracle K01oracle

Linux

#cd /etc/rc.d/rc0.d

#ln -s /etc/rc.d/init.d/oracle K01oracle

最后实验一下UNIX机器重新启动的时候,Oracle数据库是否自动启动了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航