ORA-30926: unable to get a stable set of rows in the source tables
Oracle의미
MERGE(또는 갱신 가능한 조인) 문에서 소스 측이 같은 대상 행에 대해 둘 이상의 매칭 행을 생성했다. Oracle이 어느 소스 값으로 갱신할지 결정할 수 없어 작업을 중단했다.
원인
MERGE ... USING 소스에 ON 조건에 대한 중복 매칭이 있음. 소스 쿼리가 대상 키 기준으로 고유하지 않음. 여러 소스 행이 같은 대상 행에 매핑됨.
해결 방법
소스 쿼리를 대상 키 기준으로 고유하게 만든다. 중복 매칭을 찾는다: SELECT key_col, COUNT(*) FROM (source_query) GROUP BY key_col HAVING COUNT(*) > 1; DISTINCT 또는 집계/분석 함수(ROW_NUMBER)로 소스의 중복을 제거한 뒤 MERGE를 다시 실행한다. ON 조건이 충분히 선택적인지 확인한다.
같은 데이터베이스의 다른 항목
- ORA-04068existing state of packages has been discarded
- ORA-01427single-row subquery returns more than one row
- ORA-12899value too large for column
- ORA-08103object no longer exists
- ORA-01843not a valid month
- ORA-14400inserted partition key does not map to any partition
- ORA-01536space quota exceeded for tablespace