如何从另一台机器/服务器中的另一个数据库进行查询

时间:2016-06-29 08:15:37

标签: oracle

我一直在寻找答案,但我似乎无法在网上找到正确的答案,我的问题就是这样。

我正在尝试从另一个表中查询一组记录,该表位于另一台机器中安装的另一个数据库中。为了更清楚:

我的存储过程在IP:192.168.XX.X1上运行。我可以在此服务器中检索我需要的所有信息,但是我有另一组信息或记录只能从IP检索:192.168.XX.X2。

我想要实现类似的目标:

DECLARE
    -- given that both queries will only return 1 record
    CURSOR IS curSample1
        SELECT * FROM Database1.Table1;
    colSample curSample1%ROWTYPE;

    CURSOR IS curSample2
        SELECT * FROM Database2.Table1;
    colSample curSample2%ROWTYPE;

    vText1 VARCHAR(20);
    vText2 VARCHAR(20);
BEGIN
    OPEN curSample1;

    LOOP
        FETCH curSample1 INTO colSample1;
        EXIT WHEN curSample1%NOTFOUND;
            vText1 := colSample1.Column1;
    END LOOP;

    CLOSE curSample1;

    OPEN curSample2;

    LOOP
        FETCH curSample2 INTO colSample2;
        EXIT WHEN curSample2%NOTFOUND;
            vText2 := colSample2.Column2;
    END LOOP;

    CLOSE curSample2;

    dbms_output.put_line(vText1 || ',' || vText2);
END;

我们非常感谢您提供的任何帮助。非常感谢你。

注意:我正在尝试这种方法,因为这是我们现在可以做到的唯一方法。再次感谢。

2 个答案:

答案 0 :(得分:3)

您必须在数据库1和数据库2之间创建数据库链接。对于创建数据库链接,不需要在同一服务器上同时拥有这两个数据库。因为在您的情况下,数据库位于不同的服务器上,您可以从以下步骤开始。

您需要在数据库1服务器上的tnsnames.ora文件中输入tns条目(指向数据库2)。您可以通过从数据库1计算机连接到SQLPLUS到数据库2来检查是否有此条目。

sqlplus <username>/<password>@<tnsnames of database2>

如果您能够从数据库1服务器连接,则可以继续执行以下步骤来创建数据库链接。

CREATE DATABASE LINK <dblink_name> CONNECT TO <username> IDENTIFIED BY <password> USING <tnsnames of database2>

发布此文件后,您可以通过运行以下SQL命令来测试数据库链接。

select * from Table@<dblink_name>;

答案 1 :(得分:1)

我知道你不能直接在数据库中查询数据。

1,也许您可​​以使用 DBlink DataSync 让其他数据库中的数据可以查询。

2,代替pl / sql程序,使用其他开发语言做跨数据库进程是个好主意(ex独立java程序)。

3,而不是pl / sql程序,使用 Oracle Java Procedure 来执行此操作。