ORA 12154 - 无法从toad / SQLplus

时间:2015-05-12 06:37:30

标签: oracle oracle10g

当我尝试连接我的TNSNAMES.ora文件中的任何数据库时,SQLPLUS抛出

ORA-12154: TNS could not resolve service name

我已经检查了这个东西:

TNS_ADMIN environment variable is defined as "C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN"  

"C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN\tnsnames.ora" was located  

The following connect descriptor was found for my_db in the tnsnames.ora file  

my_db=  
  (DESCRIPTION=  
    (ADDRESS=  
      (PROTOCOL=TCP)  
      (HOST=local.db)  
      (PORT=1521)  
    )  
    (CONNECT_DATA=  
      (SID=SCMPROD)  
    )  
  )  

"C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN\sqlnet.ora" was located  

NAMES.DIRECTORY_PATH specifies TNSNAMES in the sqlnet.ora file  

问题是:

缺少什么?

更新

现在在SqlPlus上使用the usr/pwd@SELFTEST连接字符串,它可以正常工作

In不能在服务器上出错,因为在我的旧PC上它仍然接受我的连接,我公司的所有工作都在上面。

tnsname.ora

SELFTEST=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=10.100.2.7)
      (PORT=1521)
    )
    (CONNECT_DATA=
      (SERVER=dedicated)
      (SERVICE_NAME=GOLDtest)
    )
  )

尝试从Toad for Oracle连接问题仍然存在......

2 个答案:

答案 0 :(得分:1)

  

ORA-12154:TNS无法解析服务名称

my_db=  
  (DESCRIPTION=  
    (ADDRESS=  
      (PROTOCOL=TCP)  
      (HOST=local.db)  
      (PORT=1521)  
    )  
    (CONNECT_DATA=  
      (SID=SCMPROD)  
    )  
  )

错误与服务名称不正确有关。我看到你的 tnsnames.ora 没有service_name,而是你提到了 SID 。可能这是错误的原因。

您可以将tnsnames.ora编辑为:

SCMPROD =
 (DESCRIPTION = 
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = SCMPROD)
 )
)

假设SCMPROD service_name

答案 1 :(得分:0)

来自source

  

ORA-12154 :TNS:无法解析指定的连接标识符
  原因:使用连接标识符请求与数据库或其他服务的连接,并且指定的连接标识符可以   不能使用其中一个命名解析成连接描述符   方法配置。例如,如果是连接标识符的类型   used是一个网络服务名称,然后网络服务名称不能   在命名方法存储库中找到,或者存储库不可能   位于或到达。
  行动

     
      
  • 如果您使用的是本地命名(TNSNAMES.ORA文件):

  •   
  • 确保" TNSNAMES"被列为Oracle Net配置文件(SQLNET.ORA)中NAMES.DIRECTORY_PATH参数的值之一

  •   
  • 验证TNSNAMES.ORA文件是否存在且位于正确的目录中且可以访问。

  •   
  • 检查TNSNAMES.ORA文件中是否存在用作连接标识符的网络服务名称。

  •   
  • 确保TNSNAMES.ORA文件中的任何位置都没有语法错误。寻找无与伦比的括号或流浪汉字符。一个错误   TNSNAMES.ORA文件可能使其无法使用。

  •   
  • 如果您使用的是目录命名:

  •   
  • 验证" LDAP"被列为Oracle Net配置文件(SQLNET.ORA)中NAMES.DIRETORY_PATH参数的值之一。

  •   
  • 验证LDAP目录服务器是否已启动且可以访问。

  •   
  • 验证在目录中是否配置了用作连接标识符的网络服务名称或数据库名称。

  •   
  • 通过指定完全限定的网络服务名称或完整的LDAP DN作为连接,验证所使用的默认上下文是否正确   标识符

  •   
  • 如果您使用简易连接命名:

  •   
  • 验证" EZCONNECT"被列为Oracle Net配置文件(SQLNET.ORA)中NAMES.DIRETORY_PATH参数的值之一。

  •   
  • 确保指定的主机,端口和服务名称正确无误。

  •   
  • 尝试在引号中包含连接标识符。请参阅“Oracle Net Services管理员指南”或Oracle操作系统   有关命名的更多信息的具体指南。

  •