Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1852469
  • 博文数量: 524
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2483
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-25 18:36
个人简介

打杂

文章分类

全部博文(524)

文章存档

2022年(3)

2021年(9)

2019年(1)

2018年(32)

2017年(11)

2016年(152)

2015年(198)

2014年(118)

分类: 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”时,dbstartdbshut脚本才会被正常使用,HS2008为实例名

dbstartdbshut脚本存放位置是在ORACLE_HOMEbin目录下,可以使用下面的命令查看脚本的内容。

$ 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
start)
echo "Starting Oracle Database..."
su - oracle -c "dbstart"
echo "Done."
echo "Starting Oracle Listener..."
su - oracle -c "lsnrctl start"
echo "Done."
touch /var/lock/subsys/oracle
;;
stop)
echo "Shutting down Oracle Listener..."
su - oracle -c "lsnrctl stop">>/var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo "Shutting down Oracle Database..."
su - oracle -c "dbshut"
echo "Done."
echo ""
;;
restart)
$0 stop
$0 start
;;
*)
exit 1
esac

方法2

 case "$1" in
start)
echo "Starting Oracle Database..."
su - oracle -c dbstart   >>/var/log/oracle
echo "Done."
echo "Starting Oracle Listener..."
su - oracle -c "lsnrctl start"  >>/var/log/oracle
echo "Done."
touch /var/lock/subsys/oracle
;;
stop)
echo "Shutting down Oracle Listener..."
su - oracle -c "lsnrctl stop">>/var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo "Shutting down Oracle Database..."
su - oracle -c dbshut   >>/var/log/oracle
echo "Done."
date +"!%T%a %D : Finished.">>/var/log/oracle
echo "----------------------------">>/var/log/oracle
;;
restart)
echo -n "Restarting Oracle Databases:"
su - oracle -c dbshut >>/var/log/oracle
su - oracle -c dbstart >>/var/log/oracle
echo "Done."
echo -n "Restarting Oracle Listeners:"
su - oracle -c "lsnrctl stop" >>/var/log/oracle
su - oracle -c "lsnrctl start" >>/var/log/oracle
echo "Done."
touch /var/lock/subsys/oracle
;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
esac


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
    echo "Failed to auto-start Oracle Net Listene using $ORACLE_HOME_LISTNER/bin/tnslsnr"


看来可能是ORACLE_HOME_LISTNER环境变量引起的,查找 ORACLE_HOME_LISTNER
grep ORACLE_HOME_LISTNER dbstart
返回结果

 # 3) Set ORACLE_HOME_LISTNER
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
if [ ! $ORACLE_HOME_LISTNER ] ; then
echo "ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener"
LOG=$ORACLE_HOME_LISTNER/listener.log
if [ -f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then
    $ORACLE_HOME_LISTNER/bin/lsnrctl start >> $LOG 2>&1 &
    export VER10LIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep "LSNRCTL for " | cut -d' ' -f5 | cut -d'.' -f1`
    echo "Failed to auto-start Oracle Net Listene using $ORACLE_HOME_LISTNER/bin/tnslsnr"
        $LOGMSG "Restart Oracle Net Listener using an alternate ORACLE_HOME_LISTNER: lsnrctl start"

其中有一段给ORACLE_HOME_LISTNER环境变量赋值,但是这个路径是不对的,编辑dbstart文件
vi dbstar
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
   改为  ORACLE_HOME_LISTNER=$ORACLE_HOME
保存退出,然后执行dbstart就没问题了。

阅读(2125) | 评论(0) | 转发(0) |
0

上一篇:清除linux痕迹

下一篇:oracle软件下载地址

给主人留下些什么吧!~~