Oracle TNSPING正常,但sqlplus提供ORA-12154?

Oracle TNSPING正常,但sqlplus提供ORA-12154?,oracle,oracle11g,sqlplus,ora-12514,Oracle,Oracle11g,Sqlplus,Ora 12514,我在Windows服务器上运行Oracle 11,并且我登录到了同一台服务器上,试图使用SQL Plus。当我尝试连接时,我得到一个ORA-12154,即使TNSPING和其他各种诊断看起来正常 有人能提出原因吗?下面是大量的细节 如果我像这样使用EZCONNECT,我可以使用sqlplus sqlplus EST/EST@192.168.10.15/ORCL 。。。但是如果我试着用这样的网络连接 sqlplus EST/EST@ORCL 。。。我得到 ORA-12154: TNS:coul

我在Windows服务器上运行Oracle 11,并且我登录到了同一台服务器上,试图使用SQL Plus。当我尝试连接时,我得到一个ORA-12154,即使TNSPING和其他各种诊断看起来正常

有人能提出原因吗?下面是大量的细节

如果我像这样使用EZCONNECT,我可以使用sqlplus

sqlplus EST/EST@192.168.10.15/ORCL
。。。但是如果我试着用这样的网络连接

sqlplus EST/EST@ORCL
。。。我得到

ORA-12154: TNS:could not resolve the connect identifier specified
TNSPING工作正常

监听器如下所示:

C:\Documents and Settings\user1>lsnrctl services

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 14-NOV-2013 12:02:59

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:55 refused:0 state:ready
         LOCAL SERVER
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: MARIEL, pid: 2400>
         (ADDRESS=(PROTOCOL=tcp)(HOST=mariel)(PORT=1045))
The command completed successfully
以下是各种配置文件:

listener.ora

特斯奈姆斯·奥拉

sqlnet.ora


创建一个环境变量TNS_ADMIN,该变量指向tnsnames.ora文件所在的目录。然后尝试连接sqlplus

如果这样做有效,那么我猜您可能也安装了Oracle客户端软件,当您运行sqlplus时,它会在您的客户端主页中查找tnsnames.ora文件

-有关在windows中添加环境变量TNS_ADMIN的说明 1.转到控制面板/系统 2.选择高级系统设置 3.选择高级选项卡,环境变量按钮位于底部。
4.创建新变量TNS_ADMIN并给出存储.ora文件的路径。e、 g.C:\app\oracle\product\11.2.0\client\u 1\network\admin

如果您的密码中有at符号,Sqlplus将给出此错误,您可以这样做。Sqlplus认为您正在输入连接字符串作为参数。更改密码您可以使用SQL Developer进行此操作

寓意:不要在Oracle密码中使用at符号

tnslsnr上升,但数据库下降

检查数据库是否正在运行

ps aux | fgrep pmon
若并没有这样的过程,那个么尝试手动启动数据库

su - oracle
export ORACLE_SID=XE
sqlplus sys as sysdba
然后在sql控制台中

startup

确保密码上没有像@这样的特殊字符。我的案子也一样

检查下面,如果它显示一个无效的密码,那么特殊字符就是原因

sqlplus anyword/anyword@yourServiceName

在这里,我花了好几个小时来琢磨我做错了什么。SQL*Plus在密码字段中做了多么愚蠢的事情!!非常感谢你的回答,我自己是不会想到这一点的。这是我的问题。我不会猜到,因为我没有使用connect的单个命令输入密码。我等待提示。这太荒谬了!谢谢这起作用了。我仍然不明白tnsping是如何找到tnsnames.ora的,但sqlplus需要环境变量的帮助?!
# sqlnet.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_2\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ps aux | fgrep pmon
su - oracle
export ORACLE_SID=XE
sqlplus sys as sysdba
startup
sqlplus anyword/anyword@yourServiceName