前言:通过SHELL脚本实现Oracle自启动与关闭方法很多,脚本也很简单,本例是通过编写一个简单的脚本来调用Oracle10g自带的3个脚本来实现。现在开始吧
首先我们把Oracle自带的3个脚本简单的编辑一下,这3个脚本的目录分别位于:
/etc/oratab
$ORACLE_HOME/bin/dbstart
$ORACLE_HOME/bin/dbshut
vi /etc/oratab
qdyx:/opt/app/oracle/product/10/db:
+ASM:/opt/app/oracle/product/10/db:
将确认启动域置为“”,这样做的好处是当系统中存在多个实例时,我们可以选择性的进行操作。
vi $ORACLE_HOME/bin/dbstart
ORACLE_HOME_LISTNER=
找到“ORACLE_HOME_LISTNER”将他的值修改为“”
vi $ORACLE_HOME/bin/dbshut
在文件未尾加入一行:
dbshut默认只关闭/etc/oratab中设置为“Y”的数据库,并不关闭监听器。
准备工作做好了,编辑一个简单的脚本来调用oratab、dbstart、dbshut
#! /bin/bash
case "$1" in
start)
echo "Starting Oracle Listener and Database....."
echo "----------------------------------------------" >> /var/log/oracle.log
echo "`date +%T%a%D`:Starting Oracle Listener and Database....." >> /var/log/oracle.log
echo "---------------------------------------------" >> /var/log/oracle.log
su - oracle -c dbstart >> /var/log/oracle.log
echo "Done"
echo ""
echo "----------------------------------------------" >> /var/log/oracle.log
;;
stop)
echo "stoping Oracle Listener and Database....."
echo "----------------------------------------------" >> /var/log/oracle.log
echo "`date +%T%a%D`:Stoping Oracle Listener and Database....." >> /var/log/oracle.log
echo "---------------------------------------------" >> /var/log/oracle.log
su - oracle -c dbshut >> /var/log/oracle.log
echo "Done"
echo ""
echo "----------------------------------------------" >> /var/log/oracle.log
;;
*)
echo "Usage: oracle{start | stop}"
;;
esac
将上面的脚本命名为oralce,放在/etc/init.d/目录下,并添加可执行权限。完了,可以执行脚本做下数据库打开与关闭的测试。到这里马上快完了,耐心一点,呵呵!!!
接下来,我们要让Linux系统在启动与关闭的时候能够执行这个脚本。
首先是启动时执行这个脚本,我运行在启动级别5下,建立一个软链接:
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc5.d/S99oracle
如果你的系统运行在启动级别3,将rc5.d变成rc3.d就行了,这个S99Oracle是什么意思呢,简单解释下,S表示在系统启动时会向脚本传递一个start的参数,99表示最后执行这个脚本,如果有兴趣可去这个目录看下就明白了。