首页 文章

使用Oracle SQL Developer查询两个数据库

提问于
浏览
9

有没有办法在Oracle SQL Developer中查询两个数据库(在单个查询中)?

我对Oracle不是很熟悉 - 除了标准的CRUD语法之外无论如何 .

我正在尝试从SQL Server表插入Oracle表 . 想做这样的事情:

INSERT INTO OracleDB.table (field1, 2, ...)
SELECT ... FROM SQLServerDB.schema.table

我在Oracle SQL Developer中为两个数据库创建了(工作)连接 .

谢谢

  • 编辑 -

我没有数据库本身的管理员权限 . (无法创建链接服务器等)

2 回答

  • 2

    是的,'s possible. Connections in SQL Developer won' t帮助您 - 您必须从Oracle数据库设置database link到SQL Server数据库 .

    在创建数据库链接之前,您必须设置一个异构网关以连接到SQL Server .

    一般步骤包括:

    • 在将使用数据库链接访问远程SQL Server数据库的服务器上安装Oracle ODBC驱动程序 .

    • 使用Windows ODBC数据源管理器在本地Oracle数据库上设置ODBC连接

    • 测试ODBC驱动程序以确保与SQL Server数据库 Build 连接 .

    • 通过在Oracle数据库中创建initodbc.ora文件来配置Oracle异构服务 .

    • 修改 Listener.ora 文件 .

    SID_NAME is the DSN for the remote database.
        ORACLE_HOME is the actual Oracle home file path.
        PROGRAM tells Oracle to use heterogeneous services.
    
        SID_LIST_LISTENER =
        (SID_LIST =
        (SID_DESC =
        (SID_NAME=ora_sid) -- Enter the DSN on this line
        (ORACLE_HOME = c:\oracle10gdb) -- Enter your Oracle home on this line
        (PROGRAM = hsodbc) ) )
    
    • 修改 Tnsnames.ora file 以指向网关
    (DESCRIPTION=
        (ADDRESS_LIST=
        (Address=(PROTOCOL=TCP)
        (HOST=
        -- (Server x)
        (PORT=1521))) -- Enter the port on which the server x Oracle installation
        -- is listening
        (CONNECT_DATA=(SID=Cas30c)) - Enter the DSN name
        (HS=OK) -- Enter this value. It tells Oracle to use hetergeneous services
        )
    
    • 在本地Oracle数据库上重新加载侦听器

    • 在访问异构连接的本地Oracle安装上创建数据库链接,异构连接又连接到SQL Server .

    创建数据库链接后,您应该能够使用简单的方法插入数据库:

    insert into <oracle_tablename>
     select * from <sqlserver_table_name>@dblink_name
    

    进一步阅读:

  • 10

    您可以使用异构服务从ODBC连接读取数据 . 虽然设置起来有点痛苦 . 您必须在oracle安装中编辑多个文件以设置新的TNS监听器,然后在架构/全局内创建一个dlink .

    This guide适用于unix,但是最短/最少延迟的IMO .

    另一种选择是通过第三方程序管道数据 . 例如,我认为您可以在MS Access中创建查询,然后将数据导出到Oracle或SQL Server .

相关问题