Title |
[ORACLE] MERGE INTO 사용 시 ORA-29886 발생 | Product |
Plug-In |
---|---|---|---|
Phenomenon |
ORACLE9i 이상에서 지원되는 새로운 SQL로 MERGE INTO 문장이 있다. 이는 값이 존재하는
경우에는 UPDATE를, 존재하지 않는 경우에는 INSERT를 수행할 수 있도록 하는 문장이며 PARALLEL 수행이 가능하다. 암호화가 수행되고 암호화 컬럼에 대한 INDEX가 생성된 TABLE에 대해 MERGE INTO 문장을 수행하면 다음과 같은 에러 메시지가 출력된다. “ORA-29886: DOMAIN INDEX에 기능이 제공되지 않습니다.” 암호화된 컬럼에 대한 색인 검색을 지원하는 CubeOne™의 ADVANCED INDEX는 DOMAIN INDEXES 기능의 일부를 사용하고 있다. |
||
Cause |
ORACLE에서는 DOMAIN INDEXES를 생성한 테이블
에 대해서는 MERGE INTO 문장을 지원하고 있지 않다. |
||
Solution |
현재까지의 ORACLE 버전에서는 MERGE INTO 문장을 지원하도록 하는 방법은 없다.
1) SQL 문 변경 : MERGE INTO 문장에서 사용되는 암호화된 TABLE을 사용하기 위한 VIEW 대신 암호화 테이블을 직접 ACCESS 하도록 수정하고 암호화된 컬럼은 암/복호 함수를 사용하도록 SQL문을 변경하여 사용한다. 2) 응용프로그램 변경 : MERGE INTO 절을 대신 응용 프로그램(APPLICATION) 을 변경하여 상황에 따라 UPDATE 또는 INSERT를 할 수 있도록 변경하여 사용한다. |