操作系统自动启停数据库及脚本启停数据库
>脚本启停数据库
1修改启动脚本BUG
#Vim $ORACLE_HOME/bin/dbstart(line78)
ORACLE_HOME_LISTNER=$ORACLE_HOME修改变量为指定值
2修改允许脚本启动调用启停的参数
#vim /etc/oratab
Ora10:/u01/app/oracle/product/10.2.0/db_1:Y将参数改为Y
3测试数据库启停脚本
$dbstart
$dbshut
>定制脚本,使系统启动时自动启动oracle,关机时自动关闭oracle数据库。
Vim /etc/init.d/dbora
#!/bin/bash
#chkconfig: 35 99 01*启动级别在3,5;最后一个启动的服务;第一个关闭的服务
#description: oracle
ORA_HOME=/u01/app/oracle/product/10.2.0/db_1*定义oracle主目录
LOG=$ORA_HOME/startup.log*记录oracle的启停操作
Chmod a+r$LOG*给这个变量增加读的权限
If [! –f $ORA_HOME/bin/dbstart ]*对脚本作出判断,如果不是一个文件
Then
Echo
“oracle startup:can not start”*输出这个数据库不能启动
Fi否则:
Case $1 in*情况一
‘start’)*启动
Echo
“$0:starting up” >>$LOG*将启动信息追加到$LOG文件中记录
Date >>$LOG*将时间也追加进去
If [ -f $ORA_HOME/bin/tnslsnr]*如果这个服务端监听文件是一个文件
Then*则
Echo
“starting oracle net listener”*输出打开网络监听程序
Su –
oracle –c “$ORA_HOME/bin/lsnrctl start” >>$LOG 2 >&1 *切换到oracle用户启动监听
Fi
Echo “starting oracle databases”*输出启动数据库的信息
Su -oracle –c “$ORA_HOME/bin/dbstart” >>$LOG >&1 *切到oracle用户执行db启动脚本
Touch /var/lock/subsys/dbora*创建一个标记文件,表明这个服务已经开启了
;;
‘stop’)*关闭数据库的操作
Echo
“$0:shutting down “>>$LOG
Date
>>$LOG*将关闭数据库的信息和日期写入$LOG文件中
If
[ -f $ORACLE_HOME/bin/tnslsnr ]
Then
echo “stopping oracle net listener”
su – oracle –c “$ORA_HOME/bin/lsnrctl stop” >>$LOG 2>&1*关闭监听
fi
echo “stopping oracle databases”
su – oracle –c “$ORA_HOME/bin/dbshut” >>$LOG 2>&1*关闭数据库
rm /var/lock/subsys/dbora*删除标记服务的文件
;;
*)
Echo “usage :$0 {start|stop}”*输出脚本的使用方法
Exit
;;
Esac
#Touch /u01/app/oracle/product/10.2.0/db_1/startup.log创建标记文件
#chown oracle:oinstall
/u01/app/oracle/product/10.2.0/db_1/startup.log修改文件的所属为oracle用户和oinstall用户组
#chmod a+x /etc/init.d/dbora给脚本赋予可执行权限
#/etc/rc.d/init.d/dbora start测试脚本的启动
#/etc/rc.d/init.d/dbora stop测试脚本的停止
#chkconfig –add dbora将dbora服务添加到开机启动服务中去。下次开机就自动启动oracle数据库了
*注意:脚本头部的chkconfig:后面空一格加启动级别;description:空一格加描述;否则该脚本服务奖不能被chkconfig命令所使用。另外:[ ]内不能有字母与[]挨着,要空一格,否则会报语法错误。