我装的是Oracle10G企业版。数据库也在本机。已将DMP成功导入数据库,但是当用PL\SQL登录时,出现ORA-12154错误。我也查了一些资料,但是好像都没什么效果。下面把相关设置和问题描述一下,希望你们帮我解决下。1.环境变量。
查看了注册表,是正确的
ORACLE_HOME   c:\oracle\product\10.1.0\Db_12.SQLPLUS
输入connect,然后按照提示输入用户名和密码后,显示Connected
但是输入connect user/password@orcl后,显示的也是ORA-12154错误,并出现Warning: You are no longer connected to ORACLE.3.确定监听服务已经起来。
4.用户名和密码确定正确
5.我的tnsnames.ora文件内容如下:# tnsnames.ora Network Configuration File: c:\oracle\product\10.1.0\Db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XP-200907172259)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
6.sqlnet.ora文件内容如下
# sqlnet.ora Network Configuration File: c:\oracle\product\10.1.0\Db_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)7.listener.ora文件如下:# listener.ora Network Configuration File: c:\oracle\product\10.1.0\Db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = c:\oracle\product\10.1.0\Db_1)
      (PROGRAM = extproc)
    )
  )LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = XP-200907172259)(PORT = 1521))
      )
    )
  )
请帮我找出原因,这个问题搞的我快要吐了。。
谢谢!

解决方案 »

  1.   

    不知道TNSPING的结果怎么样儿,还是觉得是否服务名配置错误?sqlplus /as sysdba上去后show parameter ins实例名是什么呢?
      

  2.   

    再可以看看lsnrctl status是否正常,如果都是正确的
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = c:\oracle\product\10.1.0\Db_1)
          (PROGRAM = extproc)
        )
      )
    修改为:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          #(SID_NAME = PLSExtProc)
          (SID_NAME = orcl)  
          (ORACLE_HOME = c:\oracle\product\10.1.0\Db_1)
          #(PROGRAM = extproc)
        )
      )
    又如何,再不行的话,使用netca重建
      

  3.   

    我TNSPING了下~内容如下~好像有问题~我刚接触Oracle~请问是怎么回事?
    C:\Documents and Settings\Administrator>tnsping orcl
    TNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 - Production on 18-7月 -
    2009 14:48:53
    Copyright (c) 1997, 2003, Oracle.  All rights reserved.
    Used parameter files:
    c:\oracle\product\10.1.0\Db_1\network\admin\sqlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION =
    TNS-12533: TNS:illegal ADDRESS parametersshow parameter ins的结果如下:SQL> show parameter insNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    active_instance_count                integer
    cluster_database_instances           integer     1
    instance_groups                      string
    instance_name                        string      orcl
    instance_number                      integer     0
    instance_type                        string      RDBMS
    open_links_per_instance              integer     4
    parallel_instance_group              string
    parallel_server_instances            integer     1
    SQL>
      

  4.   

    tnsnames.ora只留下面这段
    # tnsnames.ora Network Configuration File: c:\oracle\product\10.1.0\Db_1\network\admin\tnsnames.ora
    # Generated by Oracle configuration tools.ORCL =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = XP-200907172259)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = orcl)
    )
    )
    其它不要
      

  5.   


    运行lsnrctl status看看 实例注册的状态。服务名不解析的错误,多是listener启动,但是没有根据你的tnsname找到实例。
      

  6.   

    还是不行。。请看四楼~tnsping我觉得有问题~~
      

  7.   

    回inthirties~我运行了lsnrctl status~结果如下,请问该如何做?好像确实没有监听到这个实例~Copyright (c) 1991, 2004, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XP-200907172259)(PORT=15
    21)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - Produ
    ction
    Start Date                18-7月 -2009 15:34:11
    Uptime                    0 days 0 hr. 2 min. 20 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   c:\oracle\product\10.1.0\Db_1\network\admin\listener.o
    ra
    Listener Log File         c:\oracle\product\10.1.0\Db_1\network\log\listener.logListening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XP-200907172259)(PORT=1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XP-200907172259)(PORT=8080))(Present
    ation=HTTP)(Session=RAW))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XP-200907172259)(PORT=2100))(Present
    ation=FTP)(Session=RAW))
    Services Summary...
    Service "PLSExtProc" has 1 instance(s).
      Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Service "orcl" has 1 instance(s).
      Instance "orcl", status READY, has 1 handler(s) for this service...
    Service "orclXDB" has 1 instance(s).
      Instance "orcl", status READY, has 1 handler(s) for this service...
    The command completed successfullyC:\Documents and Settings\Administrator>
      

  8.   


    刚才没有看到你上面的回复,这里你的lsnrctl status的反馈是实例已经注册上去了,是orcl.看你后来的回复,好像是tnsname文件配置问题。把tnsname.ora文件备份一下,然后删除掉,重新用net manager建一个新的tnsname试试。
      

  9.   

    邪了,用netca把服务名删除掉,lsnrctl stop,将tnsname.ora,listener.ora移到别处去,lsnrctl stop,shutdown immediate, startup, lsnrctl start, 再netca配个
      

  10.   

    Linster.ora 文件可以备份一下删除,然后先起监听,再起数据库,10g可以自动注册上去.
    Listener 和 Tnsname中也许有其他隐性字符,删除后用netca或netmgr重配,其中的Host尽量用本机IP地址配置.
      

  11.   

    把tnsname重新创建一次,以避免有ctrl-M(^M)等类似于这样的字符.你的机器名是?
      

  12.   

    SQLNET.AUTHENTICATION_SERVICES= (NTS)
    改成:SQLNET.AUTHENTICATION_SERVICES= (NONE)
      

  13.   

    我用UE做了一下格式转换ASCII 到 UTF-8然后就解决这个问题了。还是不明白为什么啊。
      

  14.   

    我也遇到了这个问题,如16楼所讲,把TN文件转为UTF-8就可以了
      

  15.   

    不论怎么说 最终肯定是tmsnames.ora这个文件的问题,要么是环境变量没有设置正确,导致找不到这个文件爱你,要么是里面的设置有误。
      

  16.   

    我也遇到了  原因是tnsnames.ora配置里面前面有空格