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

时间:2011-11-16 23:36:07

标签: sql-server sql-server-2005 plsql oracle-sqldeveloper

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

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

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

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

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

由于

- 编辑 -

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

2 个答案:

答案 0 :(得分:10)

是的,这是可能的。 SQL Developer中的连接对您没有帮助 - 您必须从Oracle数据库到SQL Server数据库设置database link

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

一般步骤包括:

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

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

  • 测试ODBC驱动程序以确保与SQL Server数据库建立连接。

  • 通过在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

进一步阅读:

答案 1 :(得分:2)

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

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

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