INSERT... SELECT 질문 드리겠습니다. 0 2 2,870

by 똥쟁이찰스 [SQL Query] [2012.12.06 14:56:41]


안녕하세요.

검색을 하다가 이해가 안되어서 질문을 드립니다.

제가 초보여서 못 알아 들었을 수도 있겠네요^^;

INSERT..SELECT문의 질문입니다.

오라클은 11gR2입니다.

APPEND 힌트를 사용하여 적게는 몇 만건대에서 많이 넣을 때는 십만건대의 데이터를 INSERT를 시킵니다.

찾아보니 APPEND힌트를 사용할시에는 몇 가지 조건에 따라 성능이 좌우 된다고 하는데요..

먼저 INSERT를 넣을 테이블에는 PK 1개와 결합 인덱스가 1개 잡혀 있습니다.

검색을 통하여 해당 테이블을 NOLOGGING상태로 하고 INDEX를 UNUSABLE을 하려는데 

ORA-14048에러가 발생하며, 분할영역 유지 작업이 다른 작업과 결합할 수 없습니다.

라는 에러 메시지가 나옵니다.

해결책을 찾지 못하여서 INDEX는 유지한 상태로 APPEND 힌트를 사용하여 INSERT를 해봤지만

APPEND힌트를 사용하지 않을때와 성능차이가 발생하지 않습니다.

이렇게만 말씀드리면 이해를 못 하실지 모르겠네요.

가장 궁금한 점이 ORA-14048에러가 발생하는 이유와 해결책이 가장궁금합니다.

해당 에러를 해결하고 난 후에 한번 테스트를 해보고 싶습니다.

그리고 혹시 제가 쓴 글이 이해가 되신다면 성능차이가 나지 않는 이유를 말씀해 주셨으면 감사하겠습니다.

이제 시작하는 개발자에게 많은 조언 부탁드리겠습니다.^^
by 보안관 [2012.12.07 17:17:18]
index와 관련 있는 지는 모르겠지만 APPEND힌트의 경우 10g에서는 인설트후 commit 명령을 하지 않는 경우 입력된 data를 참조하려고 할때 ORA-12838 오류와 PLS-...;;;(기억이) 관련 오류가 발생하였습니다.(join을 인용한 select, bypass_ujvc 힌트를 이용한 update) index도 이와 비슷한 경우가 발생할수 있으니 commit 관련 부분을 확인 해보세요.

추가적으로 위와 같은 이유로 템프테이블에서는 사용이 불가능했습니다.

by 똥쟁이찰스 [2012.12.13 15:47:55]
여러 방법을 통해서 어찌어찌 해결이 되었네요..^^
관심가져주시고 답변 달아주셔서 너무 감사합니다..^^
감사인사 늦어서 죄송하구요..
좋은 하루 되세요^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입