打杂
全部博文(524)
分类: Oracle
2014-11-26 10:44:36
Oracle数据库和监听随LINUX系统启动
1.确保“/etc/oratab”文件内容的正确性
有则修改,无则创建“/etc/oratab”文件。该文件的功能是控制Oracle的启动(dbstart)和关闭脚本(dbshut)是否可用。
# vi /etc/oratab
HS2008(实例名):/oracle/app/oracle/product/10.2.0/db_1:Y
只有当尾部为“Y”时,dbstart和dbshut脚本才会被正常使用,HS2008为实例名
dbstart和dbshut脚本存放位置是在ORACLE_HOME的bin目录下,可以使用下面的命令查看脚本的内容。
$ cat $ORACLE_HOME/bin/dbstart
$ cat $ORACLE_HOME/bin/dbshut
2.修改oratab的访问权限
# chmod 755 /etc/oratab
# chown oracle:root /etc/oratab
3.编写自动启停脚本,脚本名叫“oracle”,该文件需要保存在/etc/rc.d/init.d目录中。
vi /etc/rc.d/init.d/oracle
方法1:
case "$1" in |
方法2:
case "$1" in |
4.脚本中需要说明的两个细节
1)/var/lock/subsys/oracle这个文件是用来标识oracle实例已经运行。实现类似简单的锁定功能;
2)为实现在root用户里向oracle用户发送启动和关闭数据库命令,需要使用“su”命令的“-c”选项,更多细节请使用man命令进行查询。
5.修改oracle脚本的权限
# chmod 777 oracle
6.为保证该脚本可以在Linux系统启动过程中自动调用,因此需要建立如下连接文件。
特别需要注意的一个细节:确定该脚本在网卡启动之后再执行,否则监听可能无法正常启动(假如Listener配置文件中使用的是IP地址)。
# ln -s ../init.d/oracle /etc/rc.d/rc2.d/S87oracle
# ln -s ../init.d/oracle /etc/rc.d/rc3.d/S87oracle
# ln -s ../init.d/oracle /etc/rc.d/rc5.d/S87oracle
要在重新启动时停止数据库,我们需要以下连结∶
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc0.d/K01oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc6.d/K01oracle
至此ORACLE数据库的随机启动就算配置完毕了
7.按照这样配置,您还可以使用如下简易方法停、启及重启数据库
停止:
# service oracle stop
启动:
# service oracle start
重启:
# service oracle restart
数据库启动问题:
每次启动时都会报错
Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
看来是listener服务没有起来,但是执行lsnrctl start却能启动listener服务。
搜索dbstart文件中的tnslsnr字符串
grep tnslsnr dbstart
返回结果:
if [ -f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then |
看来可能是ORACLE_HOME_LISTNER环境变量引起的,查找 ORACLE_HOME_LISTNER
grep ORACLE_HOME_LISTNER dbstart
返回结果
# 3) Set ORACLE_HOME_LISTNER |
其中有一段给ORACLE_HOME_LISTNER环境变量赋值,但是这个路径是不对的,编辑dbstart文件
vi dbstar
将ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
改为 ORACLE_HOME_LISTNER=$ORACLE_HOME
保存退出,然后执行dbstart就没问题了。