Oracle12c企业版版本12.1.0.2.0
电流处理.
数据库1我有两个游标SQL查询(它们连接了许多表),这些查询基本上是使用PL/SQL循环写入一个平面文件(两个文件都有类似的文件格式)。创建了许多Flatfile文件并将其写入目标目录。
数据库2从目标目录中获取平面文件,并将每个平面文件处理到其系统中。
将大量的大型文件从一个数据库写入一个目录,然后再处理成另一个数据库,我肯定会很费时,公司正在寻找提高这种性能的方法。此过程每月发生一次,并创建200至1500个文件。每个文件的大小可以是100到5G。
新工艺.
我被要求考虑创造一个新的解决方案,使这个过程更快。
作为一名开发人员,我面临的问题是:()这更快吗? b) 可以在PL/SQL脚本c中完成吗?如果我尝试这样做会遇到什么问题? d) 有更好的解决方案吗? e)使用这种方法可以解决性能/系统问题吗?E 213
1.可传输表--可以在数据库1中创建一个暂存表,其中我将两个查询中的所有数据批量收集到一个暂存表中。然后,我使用存在暂存表的表空间,并将该表空间传输到数据库2中,以便用于处理数据库2,然后在一周后从数据库2中删除该表空间。一周后,我也从数据库1中清除了暂存表。
2. DataPump --当您将DMP文件(可能使用查询来选择所需的数据)写到目录中时,我对DMP非常不确定,然后拿起要导入到新数据库中的DMP文件,我假设它会在新系统中创建一个临时表,以便将其处理到主表中。这可能是一个大转储文件,这是一个问题吗?
3.金门--我不确定金门,这不是一个复制工具吗?不知道该怎么用这个工具。
4.视图-在数据库1上创建一个视图(这是否是一个母化视图?)第二个数据库将使用数据库链接调用此视图,将数据处理到第二个数据库中。在网络上读取这些数据会有什么问题吗?
有什么好主意吗?有没有人有过以上的经验?有比我需要看的更好的解决方案吗?
谢了肖恩
发布于 2020-01-29 11:53:26
我肯定会选择选项4-通过DB链接获取所有数据。我几乎可以保证它会是最快的。在源DB中创建一个视图(如果需要多次运行查询,可以是MVIEW ),然后执行删除表和创建表作为SELECT或截断表并插入..。根据需要选择语句。CTAS和IAS都可以使用并行功能。
如果选项4由于某些原因无法完成,则数据端口导入(选项2)可以是一个选项。在这种情况下,您应该研究如何通过数据库链接执行数据端口导入。这使得这个过程更加简单。
如果在两个数据库之间传输数据成为一个瓶颈,您可以考虑使用压缩(在这种情况下请检查您的许可证)。
https://stackoverflow.com/questions/59954425
复制相似问题