我有一个包含大约 7M 行的表和一个 SSIS 包,它使用如下语句更新该表中的 5.6M 行。
MERGE INTO Target t
USING
(
select ID,
Type
from SomeTable
) s
ON (t.ID = s.ID)
WHEN MATCHED THEN UPDATE SET t.Type = s.Type
然后,我启动了几个大型的选择语句,它们对Target
. 我从这些选择语句中得到了 ORA-01555(快照太旧:名称为“字符串”的回滚段编号字符串太小)。这在我看来就像 MERGE 语句在提交完成之前返回。我最初的想法是增加回滚段的大小(诚然这可能会引入完整性问题),但我们的 DBA 并不热衷于这个想法。他们建议我在开始选择语句之前等待 1 分钟。(对我来说,与人工等待同步是一个危险信号。)
我的问题是,有没有办法确保 MERGE 提交在 MERGE 语句返回之前完成?对我来说,这将解决问题。