嗨,我正在尝试解决同步问题。我有三个相似的表,包含ID列+ 10列以上,在三个独立的数据库中,通过DB-link连接。每个表有12.88亿行
我所需要的,是在一个数据库创建证据表
预期结果:
| 识别号|数据库1中可用| db2 中可用|数据库3中可用|
| - ------|- ------|- ------|- ------|
| 一百二十三|“是”|“否”|“是”|
| 二百三十四|“否”|“否”|“否”|
| 三四五|“是”|“是”|“是”|
我想到了什么
- 第一步-为每个数据库创建本地索引组织表(IOT)-仅使用ID
- 第二步-使用Global_STATUS(包含所有ID和区域Y/N)填充/创建表
在第一步中,我使用了CTAS(创建表作为选择)使用parralel提示。和表创建约17分钟。-它相当不错
在第二步中,我尝试使用Merge语句...但是我的数据库运行完了UNDO。游标已经运行了很多个小时,仍然没有结果...操作必须快速,最好是2-3个小时,同时还要可靠。
我已经没有办法解决这个问题了。我会为任何想法或解决方案感到高兴!
1条答案
按热度按时间fhg3lkii1#
IOT可能不是一个好的选择。您将执行全表扫描,因此索引结构对您没有好处,并且它消除了应用压缩的能力。另外,任何其他索引都将更宽,因为它们必须在其叶块中保存PK值。
由于您只需要知道值是否存在,因此ID列是您需要跨链接拉取的唯一列。(就像所有数据库链接流量一样),然后过渡到并行连接。在旧版本中或者如果您在这方面有困难,您可以将ID写入临时表作为第一步,这样连接就可以是非分布式查询。
最后,因为你没有一个包含所有ID的master,你需要一个完全连接(或者其他类似的连接),这需要在网络上移动数据两次。所以,无论如何,在本地实体化都是一个好主意。尝试如下: