比如:STEPDEVE 这个就不可以
STEPDEVE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.3.1.29)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = STEPDEVE)
    )
  )
比如STEPDEVE_1.1 这个就可以,只要STEPDEVE_1.1 中有一个符号“.”就可以,这是为什么?谢谢
STEPDEVE_1.1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.3.1.29)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = STEPDEVE)
    )
  )

解决方案 »

  1.   

    对于tnsname别名,不存在你说的这种情况,几乎可以输入任何合法的字符作为tnsname别名(当然没有具体研究过哪些字符不合法,哪些合法,但你说的两种形式都可以,这是可以确定的).针对你的问题,你仔细查一下tnsnames.ora文件里第一个配置最顶行STEPDEVE前面是不是有空格字符串,
    如果有的话,连接很难成功.
      

  2.   

    STEPDEVE =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.3.1.29)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = STEPDEVE)
        )
      )
    为什么不可以?我看了我的tnsnames.ora文件我觉得没有什么问题,以下是我的
    OEMREP =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = MYBILL)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = OEMREP)
        )
      )
      

  3.   

    我把STEPDEVE_1.1中的“.”删掉之后,用plsql登录数据库它就弹出ORA-12154错误
      

  4.   

    不会吧 我的TNS就没有用“.”也能连接成功呢,是不是有什么特殊字符啊
      

  5.   

    我怀疑你是不是同时把service_name=STEPDEVE也给改了,因为
    ORA-12154: TNS:could not resolve service name,那个service_name是不能随便改的,
    只有最顶行的那个名称才可以以任何形式的字串存在的.