Oracle 12c 企业版版本 12.1.0.2.0 版本
当前进程。
数据库 1 我有两个 Cursor SQL 查询(连接多个表),它们基本上使用 PL/SQL for 循环写入平面文件(两个文件具有相似的文件格式)。许多平面文件文件被创建并写入目标目录。
数据库 2 从目标目录中提取平面文件并将每个平面文件处理到它的系统中。
将许多大文件从一个数据库写入目录,然后再处理到第二个数据库中,我肯定会很耗时,公司正在寻找提高这种性能的方法。这个过程每月发生一次,创建 200 到 1500 个文件。每个文件的大小可以是 100k 到 5gig。
新流程。
我被要求研究创建一个新的解决方案来加快这个过程。
作为开发人员,我面临的任何解决方案的问题如下 a)这更快吗?b)这可以在 PL/SQL 脚本中完成c)如果我尝试这样做会遇到什么问题?d)有更好的解决方案吗?e)这种方法有任何性能/系统问题吗?
1. 可传输表- 可以在数据库 1 中创建一个暂存表,我将两个 SQL 查询查询中的所有数据批量收集到一个暂存表中。然后,我使用暂存表所在的表空间并将该表空间传输到数据库 2,以用于处理到数据库 2。然后,该表空间将在一周后从数据库 2 中删除。一周后我也从数据库 1 中清除了暂存表。
2. DataPump - 我非常不确定 datapump 作为你的写作导出 DMP 文件(可能使用查询来选择所需的数据)到一个目录,然后拿起该 DMP 文件导入到新数据库我假设它会在新系统中创建一个临时表,以便将其处理到主表中。这可能是一个大转储文件,这会是一个问题吗?
3. Golden Gate - 我不确定 Golden Gate,这不只是一个复制工具。不知道用这个工具去哪里。
4. 视图- 在数据库 1 上创建一个视图(这可能是一个实体化视图吗?),它将同时保存 SQL 查询(UNION ALL),第二个数据库将使用数据库链接调用此视图以将数据处理到第二个数据库。通过网络读取这些数据会有什么问题吗?
任何想法都会很棒?有没有人有上述经验?有没有比我需要看的上面更好的解决方案?
谢谢肖恩