ORA-12547: TNS:lost contact 错误处理

闲来无事,配置一下oracle数据库的随系统自动重启,查阅资料得知,主要需要配置/etc/oratab 和 rc.local。 配置oracle随系统自启动主要使用了$ORACLE_HOME/bin/dbstart文件。先把dbstart的内容贴出来,方便查看

#!/bin/sh
#
# $Id: dbstart.sh 22-may-2008.05:05:45 arogers Exp $
# Copyright (c) 1991, 2008, Oracle. All rights reserved.
#

###################################
#
# usage: dbstart $ORACLE_HOME
#
# This script is used to start ORACLE from /etc/rc(.local).
# It should ONLY be executed as part of the system boot procedure.
#
# This script will start all databases listed in the oratab file
# whose third field is a "Y".  If the third field is set to "Y" and
# there is no ORACLE_SID for an entry (the first field is a *),
# then this script will ignore that entry.
#
# This script requires that ASM ORACLE_SID's start with a +, and
# that non-ASM instance ORACLE_SID's do not start with a +.
#
# If ASM instances are to be started with this script, it cannot
# be used inside an rc*.d directory, and should be invoked from
# rc.local only. Otherwise, the CSS service may not be available
# yet, and this script will block init from completing the boot
# cycle.
#
# If you want dbstart to auto-start a single-instance database that uses
# an ASM server that is auto-started by CRS (this is the default behavior
# for an ASM cluster), you must change the database's ORATAB entry to use
# a third field of "W" and the ASM's ORATAB entry to use a third field of "N".
# These values specify that dbstart auto-starts the database only after
# the ASM instance is up and running.
#
# Note:
# Use ORACLE_TRACE=T for tracing this script.
#
# The progress log for each instance bringup plus Error and Warning message[s]
# are logged in file $ORACLE_HOME/startup.log. The error messages related to
# instance bringup are also logged to syslog (system log module).
# The Listener log is located at $ORACLE_HOME_LISTNER/listener.log
#
# On all UNIX platforms except SOLARIS
# ORATAB=/etc/oratab
#
# To configure, update ORATAB with Instances that need to be started up
#    Entries are of the form:
#    $ORACLE_SID:$ORACLE_HOME:<N|Y|W>:
#    An example entry:
#    main:/usr/lib/oracle/emagent_10g:Y
#
# Overall algorithm:
# 1) Bring up all ASM instances with 'Y' entry in status field in oratab entry
# 2) Bring up all Database instances with 'Y' entry in status field in
#    oratab entry
# 3) If there are Database instances with 'W' entry in status field
#    then
#      iterate over all ASM instances (irrespective of 'Y' or 'N') AND
#      wait for all of them to be started
#    fi
# 4) Bring up all Database instances with 'W' entry in status field in
#    oratab entry
#
#####################################

LOGMSG="logger -puser.alert -s "

trap 'exit' 1 2 3

# for script tracing
case $ORACLE_TRACE in
  T) set -x ;;
esac

# Set path if path not set (if called from /etc/rc)
SAVE_PATH=/bin:/usr/bin:/etc:${PATH} ; export PATH
SAVE_LLP=$LD_LIBRARY_PATH

# First argument is used to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=$1
if [ ! $ORACLE_HOME_LISTNER ] ; then
  echo "ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener"
  echo "Usage: $0 ORACLE_HOME"
else
  LOG=$ORACLE_HOME_LISTNER/listener.log

  # Set the ORACLE_HOME for the Oracle Net Listener, it gets reset to
  # a different ORACLE_HOME for each entry in the oratab.
  export ORACLE_HOME=$ORACLE_HOME_LISTNER

  # Start Oracle Net Listener
  if [ -x $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then
    echo "$0: Starting Oracle Net Listener" >> $LOG 2>&1
    $ORACLE_HOME_LISTNER/bin/lsnrctl start >> $LOG 2>&1 &
    VER10LIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep "LSNRCTL for " | cut -d' ' -f5 | cut -d'.' -f1`
    export VER10LIST
  else
    echo "Failed to auto-start Oracle Net Listener using $ORACLE_HOME_LISTNER/bin/tnslsnr"
  fi
fi

# Set this in accordance with the platform
ORATAB=/etc/oratab
if [ ! $ORATAB ] ; then
  echo "$ORATAB not found"
  exit 1;
fi

# Checks Version Mismatch between Listener and Database Instance.
# A version 10 listener is required for an Oracle Database 10g database.
# Previous versions of the listener are not supported for use with an Oracle
# Database 10g database. However, it is possible to use a version 10 listener
# with previous versions of the Oracle database.
checkversionmismatch() {
  if [ $VER10LIST ] ; then
    VER10INST=`sqlplus -V | grep "Release " | cut -d' ' -f3 | cut -d'.' -f1`
    if [ $VER10LIST -lt $VER10INST ] ; then
      $LOGMSG "Listener version $VER10LIST NOT supported with Database version $VER10INST"
      $LOGMSG "Restart Oracle Net Listener using an alternate ORACLE_HOME_LISTNER:"
      $LOGMSG "lsnrctl start"
    fi
  fi
}

# Starts a Database Instance
startinst() {
  # Called programs use same database ID
  export ORACLE_SID

  # Put $ORACLE_HOME/bin into PATH and export.
  PATH=$ORACLE_HOME/bin:${SAVE_PATH} ; export PATH
  # add for bug # 652997
  LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${SAVE_LLP} ; export LD_LIBRARY_PATH
  PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora
  SPFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora
  SPFILE1=${ORACLE_HOME}/dbs/spfile.ora

  echo ""
  echo "$0: Starting up database \"$ORACLE_SID\""
  date
  echo ""

  checkversionmismatch

  # See if it is a V6 or V7 database
  VERSION=undef
  if [ -f $ORACLE_HOME/bin/sqldba ] ; then
    SQLDBA=sqldba
    VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk '
      /SQL\*DBA: (Release|Version)/ {split($3, V, ".") ;
      print V[1]}'`
    case $VERSION in
      "6") ;;
      *) VERSION="internal" ;;
    esac
  else
    if [ -f $ORACLE_HOME/bin/svrmgrl ] ; then
      SQLDBA=svrmgrl
      VERSION="internal"
    else
      SQLDBA="sqlplus /nolog"
    fi
  fi

  STATUS=1
  if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.dbf ] ; then
    STATUS="-1"
  fi
  if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.ora ] ; then
    STATUS="-1"
  fi
  pmon=`ps -ef | grep -w "ora_pmon_$ORACLE_SID"  | grep -v grep`
  if [ "$pmon" != "" ] ; then
    STATUS="-1"
    $LOGMSG "Warning: ${INST} \"${ORACLE_SID}\" already started."
  fi

  if [ $STATUS -eq -1 ] ; then
    $LOGMSG "Warning: ${INST} \"${ORACLE_SID}\" possibly left running when system went down (system crash?)."
    $LOGMSG "Action: Notify Database Administrator."
    case $VERSION in
      "6")  sqldba "command=shutdown abort" ;;
      "internal")  $SQLDBA $args <<EOF
connect internal
shutdown abort
EOF
        ;;
      *)  $SQLDBA $args <<EOF
connect / as sysdba
shutdown abort
quit
EOF
        ;;
    esac

    if [ $? -eq 0 ] ; then
      STATUS=1
    else
      $LOGMSG "Error: ${INST} \"${ORACLE_SID}\" NOT started."
    fi
  fi

  if [ $STATUS -eq 1 ] ; then
    if [ -e $SPFILE -o -e $SPFILE1 -o -e $PFILE ] ; then
      case $VERSION in
        "6")  sqldba command=startup ;;
        "internal")  $SQLDBA <<EOF
connect internal
startup
EOF
          ;;
        *)  $SQLDBA <<EOF
connect / as sysdba
startup
quit
EOF
          ;;
      esac

      if [ $? -eq 0 ] ; then
        echo ""
        echo "$0: ${INST} \"${ORACLE_SID}\" warm started."
      else
        $LOGMSG ""
        $LOGMSG "Error: ${INST} \"${ORACLE_SID}\" NOT started."
      fi
    else
      $LOGMSG ""
      $LOGMSG "No init file found for ${INST} \"${ORACLE_SID}\"."
      $LOGMSG "Error: ${INST} \"${ORACLE_SID}\" NOT started."
    fi
  fi
}

# Starts an ASM Instance
startasminst() {
  # Called programs use same database ID
  export ORACLE_SID
  ORACLE_HOME=`echo $LINE | awk -F: '{print $2}' -`
  # Called scripts use same home directory
  export ORACLE_HOME

  # For ASM instances, we have a dependency on the CSS service.
  # Wait here for it to become available before instance startup.

  # Is the 10g install intact? Are all necessary binaries present?
  if [ ! -x $ORACLE_HOME/bin/crsctl ]; then
    $LOGMSG "$ORACLE_HOME/bin/crsctl not found when attempting to start"
    $LOGMSG "  ASM instance $ORACLE_SID."

  else
    COUNT=0
    $ORACLE_HOME/bin/crsctl check css
    RC=$?
    while [ "$RC" != "0" ];
      do
      COUNT=`expr $COUNT + 1`
      if [ $COUNT = 15 ] ; then
        # 15 tries with 20 sec interval => 5 minutes timeout
        $LOGMSG "Timed out waiting to start ASM instance $ORACLE_SID"
        $LOGMSG "  CSS service is NOT available."
        exit $COUNT
      fi
      $LOGMSG "Waiting for Oracle CSS service to be available before starting "
      $LOGMSG " ASM instance $ORACLE_SID. Wait $COUNT."
      sleep 20
      $ORACLE_HOME/bin/crsctl check css
      RC=$?
    done
  fi
  startinst
}

# Start of dbstartup script
#
# Loop for every entry in oratab file and and try to start
# that ORACLE.
#
# ASM instances need to be started before 'Database instances'
# ASM instance is identified with '+' prefix in ORACLE_SID
# Following loop brings up ASM instance[s]

cat $ORATAB | while read LINE
do
case $LINE in
  \#*)                ;;        #comment-line in oratab
  *)
  ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
  if [ "$ORACLE_SID" = '*' ] ; then
    # same as NULL SID - ignore this entry
    ORACLE_SID=""
    continue
  fi
  # Proceed only if last field is 'Y'.
  if [ "`echo $LINE | awk -F: '{print $NF}' -`" = "Y" ] ; then
    # If ASM instances
    if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then
      INST="ASM instance"
      ORACLE_HOME=`echo $LINE | awk -F: '{print $2}' -`
      # Called scripts use same home directory
      export ORACLE_HOME
      # file for logging script's output
      LOG=$ORACLE_HOME/startup.log
      touch $LOG
      chmod a+r $LOG
      echo "Processing $INST \"$ORACLE_SID\": log file $ORACLE_HOME/startup.log"
      startasminst >> $LOG 2>&1
    fi
  fi
  ;;
esac
done

# exit if there was any trouble bringing up ASM instance[s]
if [ "$?" != "0" ] ; then
  exit 2
fi

#
# Following loop brings up 'Database instances'
#
cat $ORATAB | while read LINE
do
case $LINE in
  \#*)                ;;        #comment-line in oratab
  *)
  ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
  if [ "$ORACLE_SID" = '*' ] ; then
    # same as NULL SID - ignore this entry
    ORACLE_SID=""
    continue
  fi
  # Proceed only if last field is 'Y'.
  if [ "`echo $LINE | awk -F: '{print $NF}' -`" = "Y" ] ; then
    # If non-ASM instances
    if [ `echo $ORACLE_SID | cut -b 1` != '+' ]; then
      INST="Database instance"
      ORACLE_HOME=`echo $LINE | awk -F: '{print $2}' -`
      # Called scripts use same home directory
      export ORACLE_HOME
      # file for logging script's output
      LOG=$ORACLE_HOME/startup.log
      touch $LOG
      chmod a+r $LOG
      echo "Processing $INST \"$ORACLE_SID\": log file $ORACLE_HOME/startup.log"
      startinst >> $LOG 2>&1
    fi
  fi
  ;;
esac
done

#
# Following loop brings up 'Database instances' that have wait state 'W'
#
cat $ORATAB | while read LINE
do
case $LINE in
  \#*)                ;;        #comment-line in oratab
  *)
  ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
  if [ "$ORACLE_SID" = '*' ] ; then
    # same as NULL SID - ignore this entry
    ORACLE_SID=""
    continue
  fi
  # Proceed only if last field is 'W'.
  if [ "`echo $LINE | awk -F: '{print $NF}' -`" = "W" ] ; then
    W_ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
    # DB instances with 'W' (wait state) have a dependency on ASM instances via CRS.
    # Wait here for 'all' ASM instances to become available.
    cat $ORATAB | while read LINE
    do
    case $LINE in
      \#*)                ;;        #comment-line in oratab
      *)
      ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
      if [ "$ORACLE_SID" = '*' ] ; then
        # same as NULL SID - ignore this entry
        ORACLE_SID=""
        continue
      fi
      if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then
        INST="ASM instance"
        ORACLE_HOME=`echo $LINE | awk -F: '{print $2}' -`
        if [ -x $ORACLE_HOME/bin/srvctl ] ; then
          COUNT=0
          NODE=`olsnodes -l`
          RNODE=`srvctl status asm -n $NODE | grep "$ORACLE_SID is running"`
          RC=$?
          while [ "$RC" != "0" ]; # wait until this comes up!
          do
            COUNT=$((COUNT+1))
            if [ $COUNT = 5 ] ; then
              # 5 tries with 60 sec interval => 5 minutes timeout
              $LOGMSG "Error: Timed out waiting on CRS to start ASM instance $ORACLE_SID"
              exit $COUNT
            fi
            $LOGMSG "Waiting for Oracle CRS service to start ASM instance $ORACLE_SID"
            $LOGMSG "Wait $COUNT."
            sleep 60
            RNODE=`srvctl status asm -n $NODE | grep "$ORACLE_SID is running"`
            RC=$?
          done
        else
          $LOGMSG "Error: \"${W_ORACLE_SID}\" has dependency on ASM instance \"${ORACLE_SID}\""
          $LOGMSG "Error: Need $ORACLE_HOME/bin/srvctl to check this dependency"
        fi
      fi     # asm instance
      ;;
    esac
    done # innner while
  fi
  ;;
esac
done # outer while

# by now all the ASM instances have come up and we can proceed to bring up
# DB instance with 'W' wait status

cat $ORATAB | while read LINE
do
case $LINE in
  \#*)                ;;        #comment-line in oratab
  *)
  ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
  if [ "$ORACLE_SID" = '*' ] ; then
    # same as NULL SID - ignore this entry
    ORACLE_SID=""
    continue
  fi
  # Proceed only if last field is 'W'.
  if [ "`echo $LINE | awk -F: '{print $NF}' -`" = "W" ] ; then
    INST="Database instance"
    if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then
      $LOGMSG "Error: ${INST} \"${ORACLE_SID}\" NOT started"
      $LOGMSG "Error: incorrect usage: 'W' not allowed for ASM instances"
      continue
    fi
    ORACLE_HOME=`echo $LINE | awk -F: '{print $2}' -`
    # Called scripts use same home directory
    export ORACLE_HOME
    # file for logging script's output
    LOG=$ORACLE_HOME/startup.log
    touch $LOG
    chmod a+r $LOG
    echo "Processing $INST \"$ORACLE_SID\": log file $ORACLE_HOME/startup.log"
    startinst >> $LOG 2>&1
  fi
  ;;
esac
done

从上面可以看出,oracle是通过rc.local来自启动的,启动的过程中会检测/etc/oratab来决定启动哪个实例。废话少说,动起来先,配置 rc.local文件如下

[[email protected] rc.d]# cat rc.local
#!/bin/bash
su - oraele -c "/home/app/oraele/product/11.2.0/db_1/bin/dbstart $ORACLE_HOME"

配置/etc/oratab文件如下

[[email protected] rc.d]# cat /etc/oratab
#                                                                                                                                             

# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.                                                                                                                                 

# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
oraten:/home/app/oraten/product/10.2.0/db_1:Y
oraele:/home/app/oraele/product/11.2.0/db_1:Y

oraten和oraele分别属于用户oraten 和oraele,用户属性如下:

[[email protected] rc.d]# id oraten
uid=1001(oraten) gid=1002(oinstall) 组=1002(oinstall),1001(dba)
[[email protected] rc.d]# id oraele
uid=1522(oraele) gid=1002(oinstall) 组=1002(oinstall),1001(dba)

手工测试dbstart脚本能否正常执行,

[[email protected] ~]$ dbstart $ORACLE_HOME

问题出现了,只有oraele实例启动,初步估计是用户权限的问题,在oraele用户下,设置oraten用户的环境变量,然后启动sqlplus,报如下错误:

[email protected] db_1]$ ./bin/sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on 星期四 12月 4 14:13:30 2014

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

SQL> conn / as sysdba
ERROR:
ORA-12547: TNS:lost contact

网络搜集资料如下:

1:缺少必要安装包,glibc glibc-devel libaio libaio-devel

2:$ORACLE_HOME/bin/oracle文件的权限不对

3:系统内核配置不正确,如文件数量限制等

4:环境变量设置不正确

5:检查$ORACLE_HOME/bin/oracle 和 $ORACLE_HOME/rdbms/lib/config.o 的文件大小是否为0,若为0需要重新编译

经查看oacle文件的权限不对,当前设置为:

[[email protected] bin]$ ll oracle
-rwxrwxr-x 1 oraten oinstall 125155528 8月  19 21:07 oracle

修改如下:

[[email protected] bin]# chmod 6751 oracle
[[email protected] bin]# ll oracle
-rwsr-s--x 1 oraten oinstall 125155528 8月  19 21:07 oracle

文件权限的详细说明如下:

u:User,即文件或目录的拥有者。
g:Group,即文件或目录的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
有关权限代号的部分,列表于下:
r:读取权限,数字代号为"4"。
w:写入权限,数字代号为"2"。
x:执行或切换权限,数字代号为"1"。
-:不具任何权限,数字代号为"0"。
s:当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限。

看来oracle文件的默认权限是具有s的,而我们手工对其进行了修改,看来在安装完数据库后,即使我们执行chmod -R 777 $ORACLE_HOME的操作也可能是有问题的,

修改权限后,重启系统,一切正常

时间: 2024-11-13 09:35:03

ORA-12547: TNS:lost contact 错误处理的相关文章

如何解决ORA-12547: TNS:lost contact错

执行环境:ubuntu+oracle 11.2.0 为了启动oracle时间,出现ORA-12547: TNS:lost contact错误. 中午好好的纳,下午就无论了.以为是链接失效,关机重新启动后还是不行.然后google了一把,找到了以下的解决方法. 回忆了一下,引起的原因是权限的问题,中午的时候不小心该了oracle安装文件夹的文件夹的权限.看来oracle的权限不能随便修改. Cause 1. This could be due to kernel parameters settin

Oracle 静默安装cadb错误 TNS-12547: TNS:lost contact

使用克隆安装oracle 11g 以后,然后使用cadb建库报错:ORA-12547: TNS:lost contact 对于这么一个不明显的错误,实在很难定位确认问题,网上给了很多建议: 1.缺包,libiao.ksh等 2.配置文件错误 3.环境变量不对 4.Oracle目录权限不对 5.$ORACLE_HOME/bin/oracle文件权限或文件大小不对 针对以上问题做了比较认真的检查,都没有发现问题所在. 同时使用strace对执行sqlplus / as sysdba进行了跟踪,没有发

Win7x64中使用PowerDesigner连接Oralce数据库报“[Oracle][ODBC][Ora]ORA-12154:TNS:无法解析指定的连接标识符”错误解决方法

错误描述 操作系统是Win7 x64,Oracle服务端是Oracle11g x64,客户端是Oracle10gR2 x86. 使用PL-SQL Developer连接正常 使用系统ODBC连接正常.这里要注意的是,64位系统默认启动的是64位ODBC数据源管理器,默认指向的是服务端连接,所以需要为Oracle服务端也配置TNS Service Name,否则同样会连接报错.PowerDesigner默认启动的是32位的ODBC数据源管理器,程序路径为“%SystemRoot%\SysWOW64

ORACLE中的Net Configuration Assistant 点击后无反应, sqlplus登录数据库提示Oracle11g ORA-12560: TNS: 协议适配器错误

首先是对于点击无反应问题: 如果是客户端下的Net Configuration Assistant可用,而服务器端的Net Configuration Assistant等工具不可用的原因如下. 环境变量中Oracle_Home的配置错误可能是一方面,此时可直接删除Oracle_Home系统变量.此外,系统PATH中,如果Client的Orale 路径和DB的Oracle路径依次出现,可能启动数据库目录下的[配置和移植工具]时,启动的Net Mannget可能是你客户端Oracle_Home路径

ORA-12560: TNS: 协议适配器错误的解决方法

造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务. 2.database instance没有起起来.windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID. 3.注册表问题.regedit,然后进入HK

ORA-12547: TNS:lost contact报错的处理方法

最近两天在虚拟机上搞Oracle 12.2的安装,安装的过程挺顺利的.但虚拟机重启之后就无法连接数据库,执行sqlplus / as sysdba报错ORA-12547: TNS:lost contact 为什么呢?安装完后测试都好好的,怎么重启之后会这样呢.在网上找了很多方法来处理: 网上给出的解决思路如下: 1.查看操作系统内核参数是否无误   [[email protected] database]$ ulimit -a core file size          (blocks, -

oracle11g RAC 下DBCA建库失败:ORA-12547: TNS:lost contact

sqlplus / as sysdba敲回车,也是报ORA-12547: TNS:lost contact 追踪错误 /u01/app/oracle/product/11.2.0/db_1/rdbms/log下找trc文件 -rw-r-----  1 oracle asmadmin 439570 Mar 23 14:50 orcl_ora_25781.trc vi进去查看,报错:ORA-600 [spstp: ORACLE_HOME uid does not match euid],应该还是权限

安装完ODTwithODAC112012,出现ORA-12560:TNS:协议适配器错误

参考:http://blog.csdn.net/tan_yixiu/article/details/6762357 操作系统:windows2008 Enterprise 64位 开发工具:VS2010 数据库:oracle11g 安装ODAC :ODTwithODAC112012后,出现ORA-12560:TNS:协议适配器错误 进入系统环境变量设置,查看Path路径,发现在安装ODAC时,同时安装了oracle客户端, 安装完成后发现在Path路径的最前面多了两个安装ODAC时产生的路径 F

TNS-12560: TNS: 协议适配器错误

Microsoft Windows [版本 5.2.3790] (C) 版权所有 1985-2003 Microsoft Corp. C:\Documents and Settings\user1>lsnrctl LSNRCTL for 32-bit Windows: Version 9.2.0.7.0 - Production on 27-8月 -2008 09:33 :43 Copyright (c) 1991, 2002, Oracle Corporation. All rights re