• Oracle自动启动(解决了Failed to autostart Oracle Net Listene和Message 1053 not found错误)


    前两天在linux里成功的安装了Oracle10G,每次启动oracle数据库都是用oracle用户登陆然后执行dbstart启动数据库。每次启动时都会报错
    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
    将该行改为export ORACLE_HOME_LISTNER=$ORACLE_HOME
    保存退出,然后执行dbstart就没问题了。呵呵

    想系统启动是自动启动数据库可以通过修改/etc/rc.d/rc.local文件
    一开始我写的命令是
    su oracle -c ora_App/product/10.2.0/db_1/bin/lsnrctl start
    su oracle -c ora_App/product/10.2.0/db_1/bin/dbstart
    但是su oracle -c ora_App/product/10.2.0/db_1/bin/lsnrctl start是参数start不起作用,它进入了lsnrctl命令提示符,并没有启动,后来把命令用双引号引起来就可以了如下:
    su oracle -c "ora_App/product/10.2.0/db_1/bin/lsnrctl start"
    是可以启动了,但是启动时报错如下:
    Message 1053 not found; No message file for product=network, facility=TNSTNS-12541: Message 12541 not found; No message file for product=network, facility=TNS
    TNS-12560: Message 12560 not found; No message file for product=network, facility=TNS
    但是如果我用oracle用户登陆执行lsnrctl start就不报错,看来是在root用户中执行su oracle -c "ora_App/product/10.2.0/db_1/bin/lsnrctl start"有些Oracle环境变量没有设置。查了一下su 命令的参数,其中有个-l参数
     -.-l或--login  改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。此外,也会变更PATH变量。  
    加上参数
    su oracle -lc "ora_App/product/10.2.0/db_1/bin/lsnrctl start"
    正常了!呵呵,终于弄完了。总算是一晚上没白费。
  • 相关阅读:
    MySQL 中视图和表的区别以及联系是什么?
    MAC将根目录文件夹的权限赋给用户
    PHP 基础篇 PHP 中 DES 加解密详解
    软件构架师必修科(转)
    遍历指定文件夹下所有的xml文件并动态生成HTML页面!
    使用XML创建Excel文档
    XmlTextWriter创建XML文件
    什么是耦合?
    JavaScript经典效果集锦(一)
    软件最大的追求是什么?
  • 原文地址:https://www.cnblogs.com/interboy/p/1250077.html
Copyright © 2020-2023  润新知