태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

SQL 튜닝은 쉽지만 ORA-4031 에러 해결은 어려운 이유

오라클 2009.09.14 16:13
주위에 SQL 튜닝에 능한 분들이 많습니다. 아무리 복잡한 Query라도 몇 십분이나 몇 시간 안에 튜닝 가능한 경우가 대부분입니다.

하지만 ORA-4031 에러의 원인을 찾아보라고 하면 대부분 며칠이 지나도 해결하지 못하는 경우가 많습니다. 나 같으면 ORA-4031 에러의 원인을 분석해보라고 하면 다른 일때문에 바쁘다고 일단 도망가겠습니다. :)

왜 이런 현상이 발생할까요? 제가 듣는 흔한 견해는 이렇습니다.

SQL 튜닝에 필요한 기술은 익히기 쉽지만 ORA-4031 에러 해결에 필요한 인터널한 지식을 익히는 것은 어렵기 때문이다.
이런 견해가 더 발전하면 "SQL 튜닝은 흔한 기술이지만, 인터널한 기술은 고급 기술이다" 이런 왜곡된 견해로까지 갈 수 있습니다. 하지만 진실은 전혀 그렇지 않습니다.
  • SQL 튜닝을 위해 익혀야 할 지식과 기법이 훨씬 많고 복잡하고 어렵습니다.
  • ORA-4031 에러를 해결하기 위해 필요한 지식은 생소할 수는 있지만 절대로 어렵지는 않습니다.
그러면 왜 ORA-4031 에러를 해결하는 것이 SQL 튜닝을 하는 것보다 훨씬 어렵다고 인식되고 있을까요? 그것은 엔지니어의 실력 문제가 아니라 "데이터"문제입니다.
  • SQL 튜닝을 위해 수집 가능한 데이터는 다양하고 정확합니다. 특히 10046 트레이스는 거의 만능이라고 할 수 있습니다. 특정 쿼리의 파스(Parse)부터 페치(Fetch) 과정을 단계별로 모조리 추적할 수 있습니다. 이런 데이터를 가지고도 튜닝을 못한다면 그때야말로 엔지니어의 실력을 의심해야하겠죠.
  • 반면 ORA-4031 에러 해결에 필요한 데이터 수집은 아주 제약적입니다. 기껏해야 SGA Heap Dump를 수행하는 것입니다. SGA Heap Dump는 1) 그 오버헤드때문에 수집하기도 어렵고 2) 덤프를 수행하는 현재 시점의 스냅샷 정보에 불과합니다. 3) 즉, 단계별 트레이스 정보가 없기 때문에 추리를 하기가 어렵습니다. 4) Call Stack 정보도 도움이 되지만 역시 현재 시점의 정보에 불과합니다.
즉 SQL 튜닝을 위해 필요한 데이터는 넘칠만큼 충분하지만, ORA-4031 에러를 위해 필요한 데이터는 너무나 부족합니다. 데이터가 부족하니까 판단하기가 어렵고 따라서 해결도 어려운 것입니다.

분석을 위해 필요한 충분한 데이터가 없는 상태에서 엔지니어로서의 실력을 논하는 것은 요행을 바라는 것에 불과합니다. 따라서 원인을 찾기 전에 해석에 필요한 데이터를 충분히 수집하는 것을 몸에 익힐 필요가 있습니다.

저 역시도 항상 충분한 데이터를 수집하지 못해서 잘못된 해석을 하는 경우가 많습니다. 제 경험에서 나오는 제 나름의 철학이라고 봐 주시면 좋겠습니다.

PS) 위와 같이 말한다고 해서 ORA-4031 에러가 해결 불가능한 문제라는 의미는 아닙니다. 적절한 데이터와 많은 경험, 좋은 자료(가령 메타링크 같은)가 있으면 많은 경우 유의미한 분석이 가능합니다.

Trackbacks 0 : Comments 0

Write a comment