【问题标题】:How to create a DB link between two oracle instances如何在两个 oracle 实例之间创建数据库链接
【发布时间】:2012-11-07 09:54:28
【问题描述】:

如何在两个 Oracle 实例之间创建数据库链接。假设 A 和 B 是两个实例。我想从实例 A 访问实例 B 中的数据。

【问题讨论】:

    标签: oracle dblink


    【解决方案1】:

    如果您想从实例 A 访问实例 B 中的数据。那么这是查询, 您可以编辑各自的凭据。

    CREATE DATABASE LINK dblink_passport
    CONNECT TO xxusernamexx IDENTIFIED BY xxpasswordxx
    USING
    '(DESCRIPTION=
    (ADDRESS=
    (PROTOCOL=TCP)
    (HOST=xxipaddrxx / xxhostxx )
    (PORT=xxportxx))
    (CONNECT_DATA=
    (SID=xxsidxx)))';
    

    执行此查询后访问表

    SELECT * FROM tablename@dblink_passport;
    

    您可以执行任何操作DML、DDL、DQL

    【讨论】:

    • "+1" 这是解决我的问题的解决方案。我将 USING 子句设置为 tnsnames.ora 中存在的服务名称,但由于某种原因未映射。所以我将 USING 子句设置为整个连接描述符。
    【解决方案2】:

    举个简单的例子:

    创建数据库链接_dblink_name_ 连接到_用户名_ 由_passwd_识别 使用“$_ORACLE_SID_”

    更多信息: http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm

    【讨论】:

    • 两个问题。 1) 提供的链接表明您拥有_username_ 的位置应该是您要链接到的架构,而_passwd_ 的位置应该是该架构中要使用的表名。哪个是对的? 2)假设您的示例是正确的,您在哪里指定要连接的数据库? (我查看了那个 Oracle 页面,它一清二楚)
    • 同意@JMichael。 oracle 示例是:在以下语句中,远程数据库上的用户 hr 定义了一个名为 local 的固定用户数据库链接到本地​​数据库上的 hr 模式: CREATE DATABASE LINK local CONNECT TO hr IDENTIFIED BY hr USING 'local';
    【解决方案3】:

    创建数据库链接

    CREATE DATABASE LINK dblinkname
    CONNECT TO $usename
    IDENTIFIED BY $password
    USING '$sid';
    

    (注意:上面的单引号之间传递的是sid。)

    上述数据库链接的示例查询

    select * from tableA@dblinkname;
    
    insert into tableA(select * from tableA@dblinkname);
    

    【讨论】:

      【解决方案4】:

      创建DB链接后,如果两个实例存在于两个不同的数据库中,那么你需要在A机器上设置一个TNS入口,以便它解析B。check out here

      【讨论】:

        【解决方案5】:

        有几种方法可以创建数据库链接:

        1. 使用 tnsnames:

        第一步:

        将目标数据库服务详细信息添加到源的 tns 名称中:

         <addressname> =
          (DESCRIPTION =
            (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP)(Host = <hostname of target db>)(Port = <port of target db listener>))
            )
          (CONNECT_DATA =
            (SERVICE_NAME = <service name of target db>)
          )
         )
        

        第 2 步:

        数据库链接可以是公共的或私有的。公共数据库链接是任何用户都可以使用的链接。私有数据库链接只能由数据库链接的所有者使用。

        以下是创建私有和公共数据库链接的命令:

        公共数据库链接

        CREATE PUBLIC DATABASE LINK <dbklink name>
        CONNECT TO <target db userschemaname>
        IDENTIFIED BY <target db userschemapassword>
        USING '<addressname defined in tns>';
        

        私人数据库链接

        连接到我们需要私有数据库链接的用户架构:

        CREATE  DATABASE LINK <dbklink name>
        CONNECT TO <target db userschemaname>
        IDENTIFIED BY <target db userschemapassword>
        USING '<addressname defined in tns>';
        
        1. 使用完整的连接字符串。
        CREATE DATABASE LINK dblink 
            CONNECT TO <target db userschemaname> IDENTIFIED BY <target db userschemapassword>
            USING '(DESCRIPTION=
                        (ADDRESS=(PROTOCOL=TCP)(HOST=<hostname of target db>)(PORT=port of target db listener))
                        (CONNECT_DATA=(SERVICE_NAME=<service name of target db>))
                    )';
                    
        

        cdb配置步骤相同

        【讨论】:

          【解决方案6】:

          创建数据库链接 NAME 连接到用户名 由 PASSWORD 识别 使用“SID”;

          指定 SHARED 以使用单个网络连接来创建可以在多个用户之间共享的公共数据库链接。如果指定 SHARED,则还必须指定 dblink_authentication 子句。

          指定 PUBLIC 以创建可供所有用户使用的公共数据库链接。如果省略此子句,则数据库链接是私有的并且仅供您使用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-29
            • 1970-01-01
            • 2015-11-27
            相关资源
            最近更新 更多