有没有办法在Oracle SQL Developer中查询两个数据库(在单个查询中)?
我对Oracle不太熟悉 - 除了标准的CRUD语法之外无论如何。
我正在尝试从SQL Server表插入Oracle表。想做这样的事情:
INSERT INTO OracleDB.table (field1, 2, ...)
SELECT ... FROM SQLServerDB.schema.table
我在Oracle SQL Developer中为两个数据库创建了(工作)连接。
由于
- 编辑 -
我没有数据库本身的管理员权限。 (无法创建链接服务器等。)
答案 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。