Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 重复将数据从SQL Server移动到Oracle_Sql Server_Database_Oracle - Fatal编程技术网

Sql server 重复将数据从SQL Server移动到Oracle

Sql server 重复将数据从SQL Server移动到Oracle,sql-server,database,oracle,Sql Server,Database,Oracle,定期将表数据从SQL Server移动到Oracle(on*nix)的最合理方法是什么? Oracle/与物化视图、PL/SQL或Java结合使用 或者:两者都可以计划,但都需要对SQL Server的只读访问权限 Java(可能在Oracle内部,但也可以在操作系统上)使用ODBC或SQLJ访问SQL Server,也可能访问Oracle SQL Server计划导出为CSV,Oracle计划从CSV导入 任何其他ETL工具(例如Informatica、Cognos) 可以同时访问两个数据库的

定期将表数据从SQL Server移动到Oracle(on*nix)的最合理方法是什么?

  • Oracle/与物化视图、PL/SQL或Java结合使用
  • 或者:两者都可以计划,但都需要对SQL Server的只读访问权限
  • Java(可能在Oracle内部,但也可以在操作系统上)使用ODBC或SQLJ访问SQL Server,也可能访问Oracle
  • SQL Server计划导出为CSV,Oracle计划从CSV导入
  • 任何其他ETL工具(例如Informatica、Cognos)
  • 可以同时访问两个数据库的各种语言中的任何一种(但需要维护第三个环境才能在其中运行应用程序)
日程安排:

  • 自动/不与物化视图重新对齐
  • Oracle DBMS_作业/DBMS_调度程序
  • 特定于操作系统(cron、Windows计划任务等)
  • 对于SSI、DTS或CSV导出,在SQL Server中计划

您可以通过SSI(或2k的DTS)直接与Oracle建立SQL Server接口。它将提供ETL功能,并且可以定期进行计划。

使用SQL Server集成服务(SSIS)可能是您的最佳选择。如果您不熟悉SSIS,最好的尝试方法是使用SQL Server导出向导,让它为您创建SSIS包。例如,如果进入SQLServerManagementStudio,右键单击数据库,然后选择任务->导出数据。从那里单击next,直到进入“选择目的地”步骤。选择“Microsoft OLE DB Provider for Oracle”,然后单击“属性”定义数据库连接。单击向导时,请在“保存并执行”页面上,确保选中下一屏幕上标记为“保存SSIS包”的复选框,指定保存SSIS包的位置。完成导出向导后,您的数据将被导出,您将拥有一个SSIS包,可以按原样使用,也可以进入并调整它以执行更具体的操作。
一旦有了SSIS包,就可以通过创建SQL Server代理作业来安排它。

我成功地在SQL Server端创建了到Oracle的链接服务器(我想是从Enterprise Manager内部创建的)。然后,我可以在两侧使用正常的存储过程来完成较小的数据移动和双向更新。这种方法可以绕过在数据库之外尝试和组合某些内容的需要

不过,请尽量在SQL Server端使用最新的Oracle客户端。我回忆起10.2.0.2客户端中的一些缺陷,获得10.2.0.4客户端需要您的“正式”Oracle注册或购买编号或其他信息


对于大数据移动(甚至可能是您希望每天或不太频繁地进行的移动/更新),一定要使用一种ETL工具。我们为ETL流程提供了Informatica,但如果SSI能够满足您的需要,那也没关系。

创建从Oracle到Sql Server的数据库链接(异构连接)。您可以使用此链接通过简单的select语句从Sql Server检索数据。如果要进行调度,可以使用物化视图或dbms_调度程序

另一种方法是将数据放在csv文件中,您可以使用外部表或sqlloader将此数据加载到Oracle数据库中

以下是我的工作: Oracle SQL developer使用以下链接连接到SQL Server:

添加SQL jar后,您将在连接窗口中看到SQL Server选项卡:

然后连接到SQL实例

然后打开SQL实例并选择要复制的数据库或表。右键单击任何数据库/表,然后单击此处的“复制到oracle”,并在“目标连接名称”处选择要复制表的正确用户[数据库]

您还可以在此处更改某些属性。 单击“确定”,就这样了


如果有任何问题,请告诉我。

您是指SQL Server的企业管理器,而不是Oracle的,对吗?是的,它位于SQL Server端。我不知道具体的细节,但我花了一点时间在谷歌上搜索,才弄清楚确切的过程;我以前没有听说过“异构连接”这个术语。听起来(至少在10g中)它包含了透明网关和通用连接代理(ODBC、OLE DB)。在阅读官方管理指南并看到另一篇关于使用物化视图的文章时,它意识到了该解决方案(异构连接+物化视图)是多么出色+1.