登陆PLSQL后总是报错:ORA-12154:TNS:could not resolve the connect identifier specified。环境变量:F:\oracle\bin;F:\oracle\jre\1.4.2\bin\client;F:\oracle\jre\1.4.2\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:\Program Files\Common Files\Adobe\AGL在SQL*Plus运行如下SQL*Plus: Release 10.1.0.2.0 - Production on 星期二 4月 21 16:14:17 2009Copyright (c) 1982, 2004, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining optionsSQL> 

解决方案 »

  1.   

    File: /opt/app/oracle/product/10.2.0/db_1/network/admin/listener.ora 
    # Generated by Oracle configuration tools. 
    LISTENER = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) 

    ------- 
    # tnsnames.ora Network Configuration File: /opt/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora 
    # Generated by Oracle configuration tools. 
    ~ = ~ 
    FLOWRT = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = IP地址1)(PORT = 1521)) 
    (CONNECT_DATA = 
    (SERVER = DEDICATED) 
    (SERVICE_NAME = AAA) 


    ------- 1,确定监听器已经起来 
    2, 
    [oracle@localhost admin]$ sqlplus /nolog 
    SQL*Plus: Release 10.2.0.1.0 - Production> -------------------------------------------------------------------------------- 
    客户端在异机试一试,你的监听器不一定起来了,因为本地通信可能不会通过监听器连接(而使用进程间通信),你的sqlplus /nolog就是用进程间通信连接的。在主机执行$ORACLE_HOME/bin/lsnrctl status试一下,看看监听器到底起没起来. 
    -------------------------------------------------------------------------------- 
    监听器确定起来了,因为将这个访问数据库的程序放到另外一台主机中,该程序能正常的执行,并完成对数据库的操作。 
    -------------------------------------------------------------------------------- 
    如果是这样,说明listener没有问题,你同一台主机上运行程序有可能没有通过监听器连接,试一试将程序的oracle连接改成user/passwd,不使用tnsnames.ora解析。 
    -------------------------------------------------------------------------------- 
    解决方法: 
    1. 打开<OracleHome>/network/admin/listener.ora文件,找到: SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
    (SID_NAME = PLSExtProc) 
    (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/) 
    (PROGRAM = extproc) 


    2. 添加: 
    (SID_DESC = 
    (GLOBAL_DBNAME = ORACLE) 
    (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/) 
    (SID_NAME = ORACLE) 

    3. 最后变成: 
    SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
    (SID_NAME = PLSExtProc) 
    (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/) 
    (PROGRAM = extproc) 

    (SID_DESC = 
    (GLOBAL_DBNAME = AAA) 
    (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/) 
    (SID_NAME = AAA) 

     )
      4. 保存文件,重启服务中的TNSListener,OK!新闻来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2008/0921/61362.html
      

  2.   

    是不是你的连接串里有什么特殊字符导致plsql认不出来啊,没用过plsql,我猜的
      

  3.   

    http://www.blogjava.net/wahahacj/archive/2007/11/19/161689.html
      

  4.   

    1.你的sqlplus能正常联接吗
    2.你的plsql是如何连接的,服务名创建了吗
      

  5.   

    看看你的TNS配置有没有问题,IP,PORT,SID
    可以用tnsping + tnsName测试一下
      

  6.   

    1.不能正常连接
    2.服务名不是跟数据库名一样的么
    (第一次装oracle,许多东西不董,表见笑就是了)
      

  7.   

    有没有配置tnsnames啊????
      

  8.   


    检查一下$oracle_home/network/admin目录下的tnsnames.ora,listener.ora,sqlnet.ora
    看看这几个文件的内容
      

  9.   

    可能是因为你没建 PL SQL连接数据库的实例。Oracle-->enterprise manage console-->右键数据库-->将数据库添加到树-->主机名:你要连接的数据库的IP地址-->SID:数据库名-->网络服务名随便取-->点击确定-->重启PL SQL,登录即可。
      

  10.   

    你的oracle 用户名是否已正常建立?
      

  11.   

    也碰到类似情况,奇怪的是本地sqlplus访问会出现12514的问题,其它机器sqlplus , pl/sql访问却没有问题。
      

  12.   

    Oracle客户端版本问题。64bit的要用10.2.0.3的客户端。