我在机子用netmanager建立了连接,
tnsnames.ora文件如下:
# TNSNAMES.ORA Network Configuration File: C:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.NC50 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = r51e)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = nc50)
    )
  )NC_DEV =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.40)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ncdev)
     )
  )NC_TEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.46)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = nctest)
    )
  )INST1_HTTP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = r51e)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = MODOSE)
      (PRESENTATION = http://HRService)
    )
  )EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )listener.ora如下:
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = r51e)(PORT = 1521))
      )
    )
  )SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\ora92)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = nc50)
      (ORACLE_HOME = C:\oracle\ora92)
      (SID_NAME = nc50)
    )
  )
//用pl/sql都是可以连接访问的
//////////////////////////////////////////////////////////////////
跨库连接语句如下:
-- 建立数据库连接
create public database link 
ncdev1 connect to ncdev identified by ncdev using 'ncdev';select * from bd_corp@ncdev1;
-- 删除数据库连接
DROP PUBLIC DATABASE LINK ncdev1;这个字符串用了两种'ncdev'和'nc_dev',都不行;///////////////////////////////////////////////
提示错误如下:ORA-12154: TNS: 无法解析指定的连接标识符
在网上找好多资料,还是没有搞好,请高手们指一点,谢谢.

解决方案 »

  1.   

    你机器上有几个地方有tnsname.ora?系统的环境变量指向哪个oracle的bin目录
      

  2.   


    要在创建dblink的库上的tnsnames.ora文件里,配置指向另一个实例的tns内容,你是这么做的吗?
      

  3.   

    你先配置到tnsnames里试试再说
    明显你配置的有问题
      

  4.   

    tnsnames,这都是netmanager自动生成的,而且是pl/sql是可以连通。有问题吗?
      

  5.   

    假设你的DB_LINK是想从DB1连接到DB2,你需要配置DB1机器上的tnsnames正确指向DB2。如果你确认DB1上的tnsnames中配置正确;那么再确认你正确的tnsnames被使用了,也就是说DB1机器上系统的环境变量指向哪个oracle的bin目录,使用的是不是你配置正确的那个tnsnames文件。
      

  6.   

    感放各位,C:\oracle\ora92\bin;这是环境变量中的
    tnsnames.ora 的位置:
     C:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora ;
    要改成这样的吗?
    C:\oracle\ora92\bin改为:\oracle\ora92\NETWORK\ADMIN????
    谢谢
      

  7.   

    SQL> show parameter global
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    global_context_pool_size             string      
    global_names                         boolean     TRUE当值为TRUE时, 你创建的dblinkName必须和Connection_Server(想要连接的数据库)的 global_name相同.( 想要连接的数据库的global_name通过查询  select * from global_name;)--更改本自参数,不要求必须和连接的数据库global_name相同,即可以自行创建想要的名称.
    alter system set global_names =false;
    create public database link 
    ncdev1 connect to ncdev identified by ncdev using 'ncdev';