【发布时间】:2022-03-06 08:00:40
【问题描述】:
我最近在 Merge 语句上遇到了一个奇怪的问题。它因 ORA 30926 错误而失败。
我已经检查了以下陷阱,
- 在源表和目标表中检查重复记录 - 干净了
- 源表和目标表分析结构 - 干净利落
- 源表和目标表索引分析结构 - 干净利落
- 当 DBA 在 SYS 用户中尝试时,使用相同的合并 SQL – 有效。仍然令人费解
- Same Merge SQL 在 Target 的 Copy 表中成功运行 - 已工作。仍然令人费解
- DBA 退回了 TEST 服务器。虽然没有说服力,但想尝试一下,因为这个问题似乎很奇怪——没有锻炼
- 收集统计数据
- 截断原始目标表并从复制表重新加载并再次尝试合并 - 没有锻炼。失败并出现同样的错误
简而言之脚本:
MERGE INTO TGT_SCHEMA.EMP T
USING SRC_SCHEMA.S_EMP S
ON
(
T.EMPLOYEE_NO = S.EMPLOYEE_NO AND
T.START_DATE = S.START_DATE
)
目标表上存在唯一索引 (EMPLOYEE_NO, START_DATE),源表上存在相同组合的正常索引。目标表是一个分区表,并且有一些 VPD 策略应用于其他列。
我的数据库版本:Oracle 11.2.0.3.0
【问题讨论】:
-
您的更新部分是否尝试更新目标表上的employee_no 或start_Date 字段?您无法更新匹配的 ON 子句中引用的字段....
标签: oracle