oracle服务端装在linux中,客户端在本机xp
在服务端:[oracle@core admin]$ sqlplus cmdb_admin/cmdb_admin@cmdb
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor但是在客户端用plsql以相同的用户名,密码,sid登录,却可以登录请教各位这个是什么原因呢?

解决方案 »

  1.   

    [oracle@core admin]$ more tnsnames.ora
    truth=(DESCRIPTION=(ADDRESS=(HOST=core.company.com)(PORT=1521)(PROTOCOL=tcp))(CO
    NNECT_DATA=(SERVICE_NAME=truth)))
    cmdb=(DESCRIPTION=(ADDRESS=(HOST=core.company.com)(PORT=1521)(PROTOCOL=tcp))(CON
    NECT_DATA=(SERVICE_NAME=cmdb)))
    本机xp中:
    CMDB =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.51.77)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = cmdb)
          (SERVER = DEDICATED)
        )
      )
      

  2.   

    直接sqlplus cmdb_admin/cmdb_admin
      

  3.   

    你的那个是在客户端建的TNSname,不同的主机不可以使用同一个tnsname,除非你建的相同。
    你在服务器本地直接,不需要加tnsname的
      

  4.   

    在服务端:[oracle@core admin]$ sqlplus cmdb_admin/cmdb_admin; 
      

  5.   

    HOST=core.company.com --此处是你的机器名吗,如果不是则改为机器名或localhost
      

  6.   

    linux    (CONNECT_DATA=(SERVICE_NAME=cmdb))xp       (CONNECT_DATA=(SID = cmdb) ...   )==================================================
      

  7.   

    在服务器上,如果已经设置好了ORACLE_SID和ORACLE_HOME这两个环境变量
    可以直接这样
    sqlplus cmdb_admin/cmdb_admin
    而不用加服务名
    如果你一定要加服务名也行
    只要在tnsnames.ora里添加服务名即可
      

  8.   

    可能你服务器端的服务名不叫cmdb,但是客户端叫cmdb你不加cmdb试试看呢?
      

  9.   


    core.company.com是服务器的名字,本地的那个10.2.51.77就是core.company.com的IP
    直接用 conn cmdb_admin/cmdb_admin 能连接,里面的表也是对的。但这个是什么原因呢?为什么不需要指定SID?
      

  10.   

    [oracle@core oracle]$ echo $ORACLE_SID
    cmdb
    如果直接连接就是默认的cmdb SID了哦。
      

  11.   

    在你的的tnsnames.ora里,

    truth=(DESCRIPTION=(ADDRESS=(HOST=core.company.com)(PORT=1521)(PROTOCOL=tcp))(CO 
    NNECT_DATA=(SERVICE_NAME=truth)))
    --这几行注释掉.