如何自动将数据从SQL Server推送到Oracle?

时间:2012-02-16 16:13:19

标签: sql sql-server database oracle oracle-apex

我让用户在SharePoint(在SQL Server上运行)中输入数据,但我查看该数据的应用程序显然是在Oracle上运行的Oracle Apex应用程序。如何将数据自动推送到Oracle数据库?

3 个答案:

答案 0 :(得分:4)

首先,您确定需要将数据复制到Oracle吗? Oracle Heterogeneous Services允许您在Oracle中创建一个使用ODBC连接到非Oracle数据库的数据库链接(假设您使用免费的ODBC透明网关)。然后,您的APEX应用程序可以通过发出在数据库链接上运行的查询来查询和报告SQL Server中的数据。蒂姆·霍尔在configuring Heterogeneous Services上有一篇好文章(虽然它有点过时,一些组件已被重命名,一般方法仍然相同)。

如果确实需要复制数据,则可以在Oracle中创建实体化视图,使用您使用异构服务创建的数据库链接查询SQL Server中的对象,并安排这些实体化视图定期刷新。但是,物化视图需要进行完全刷新,这意味着每次刷新时都需要将每一行从SQL Server复制到Oracle。这通常会限制您实际刷新的频率。如果您需要将数据复制到Oracle数据库并且需要发送增量更改以便Oracle方面不会落后太多,您可以使用Streams from a non-Oracle database to an Oracle database但这需要更多的工作。

答案 1 :(得分:1)

在SQL Server中,您可以设置允许您查看其他数据库的数据的链接服务器。您可能会看到Oracle是否有类似的东西,如果不相同的话。或者,您可以使用sql的集成服务将数据推送到oracle表。不幸的是我只知道如何在SQL Server中设置链接服务器,我没有很多ssis的经验告诉你如何做到这一点,但这些是我能想到的前两个选项,你可以进一步探索。 / p>

以下是我发现的可能有用的链接:http://www.dba-oracle.com/t_connecting_sql_server_oracle.htm

答案 2 :(得分:0)

没有办法“自动”,我知道这将在DBMS中起作用。像Sql Server Integration Services这样的ETL工具可能有所帮助,但是会出现加载延迟(因为它必须轮询更改)。您可以在SharePoint数据库表上构建一些更新触发器,但这将变成支持噩梦。