我在oracle develop 的database link中建立了两个数据库的连接  
database link 
        owner:随便起个名字(user1)
        name:数据库连接的的名称(TEST_LINK)
connect to
        username:数据库2帐户名
        password:数据库2帐户密码
        database:数据库2名
authenticated by
        username:数据库1帐户名
        password:数据库1帐户密码
这样就可以了么?
如果这样就可以了,那我怎么在数据库1中访问数据库2的存储过程以及表呢?
如果不可以,我该如何建立两个数据库的连接呢?如何数据库1中访问数据库2的存储过程以及表呢?

解决方案 »

  1.   

    create public database link DB_CARD--dblink名
      connect to CARD--要连的数据库SID,要在你本地数据库的tnsnames.ora配置的
      using 'CARD'--要连的数据库的用户名
      identified by '1234';--要连的数据库用户的密码,然后就ok了
    访问表:
    select * from card.tablename@db_card;
      

  2.   

    库2访问库1在库2中建立
    create database link 库1的DBLINK名称
      connect to 用户 identified by 密码
      using '库1';
      

  3.   

    还有一种方式,就是建立同义词,其实我认为建立同义词的方式很好,以后还可以把这个表建立到User1中,而程序不需要更改
      

  4.   

    语句没问题,:),估计你是忘了首先要在tnsnames.ora里加上配下另外数据库的服务名
      

  5.   

    楼上的都说了
    建立dbLink的时候别忘了建要连接数据库的TNS要不然链路是链接不上的。
      

  6.   

    数据库1、数据库2的服务器名我都配置了啊~~~可是还是不行~~~我用select * from usr_db_links也能查到我建立的数据库连接~~在试图查询数据库1中的表时```我用
    select table_name,tablespace_name from usr_tables@database_link_name;
    就报错~~~TNS 无法解析~~~
      

  7.   

    在tnsnames.ora中配置了数据库的服务器1、2的服务器名:
    服务器1:
    dicc=  
         (DESCRIPTION =
          (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.111)(PORT = 1521))
          )
          (CONNECT_DATA =
             (SERVICE_NAME = dicc)
          )
       )
    服务器2:
    orcl=  
         (DESCRIPTION =
          (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.112)(PORT = 1521))
          )
          (CONNECT_DATA =
             (SERVICE_NAME = orcl)
          )
       )在服务器2中建立的database link 如下:
    在oracle develop 的database link中建立的连接  
    database link 
            owner:随便起个名字(user1)
            name:TEST_LINK_1 --数据库连接的的名称   
                 在勾选public/shared时  只能选shared  当选public时,创建不了连接
    connect to
            username:shi   ---数据库1中的帐户名
            password:***   ---数据库1中的帐户对应的密码
            database:dicc  ---数据库1中的服务名 
    authenticated by
            username:xyis  --数据库2中的帐户名
            password:**    --数据库2中的帐户对应的密码创建好后它的sql语句为:create database link test_link_1
                           connect to shi
                           using 'dicc';当我用select * from usr_db_links时  也能查到我建立的数据库连接~但当我想在数据库2中查询数据库1中的表(T_SHI_1)信息时``
    select table_name,tablespace_name from T_SHI_1@TEST_LINK_1; --报错:ORA-12154: TNS: could not resolve the connect identifier specified到底错在哪啊?该怎么改啊?
      

  8.   

     应该修改服务器2上(物理主机)所在的tnsnames.ora,在其上加服务器1的连接串.
    而不是修改你自己的机器的tnsnames.ora文件.
    然后用pl/sql developer的向导简单的创建即可.
      

  9.   

    欢迎加入本人的QQ群,群号5586686,身份认证输入如:JAVA、JSP、STRUTS等都可以,非软件开发人员勿加,谢谢合作!