오라클DB SQL PLAN 변경에 의한 성능저하 재발 방지
1. 원인 : 오라클DB 재기동 등 SQL에 대한 파싱 수행 시, 옵티마이저의 판단에 따른 실행계획(PLAN) 변경
2. 장애 재발방지를 위한 방안
1) 요약 : 오라클DB의 작업에 대한 절차 개선 및 DB성능 관리 개선
2) 오라클DB 작업 시 절차
① 작업 전 반드시 현재 시점의 SQL PLAN을 백업 한다.
② 작업 후, 주요 이슈가 될 기능들에 대해서는 업무적으로 반드시 테스트를 수행한다.
③ 테스트 수행 후, 백업된 SQL PLAN과 비교하여 변경된 것이 있으며,
변경 후 성능이 저하된 것이 확인된다면, 반드시 튜닝을 실시한다.
고려사항) 해당 절차 포함으로 작업에 충분한 테스트시간을 반영하는 것이 필요함.
3) DB성능관리 개선
① 주요 관리사항
- 성능관점 주요 관리 SQL : 전체 성능에 영향을 줄수 있는 TOP SQL 관리 (실행횟수, CPU/IO 사용량 등)
. 사용중인 SQL : 성능에 민감한 SQL은 반드시 hint를 이용하여 SQL 실행계획이 변경되지 않도록 할 것.
. 신규 SQL : 반드시 hint를 사용할 것.
- 통계정보 관리
. 통계정보는 자동갱신이 아닌 수동갱신으로 관리 권고.
. 모든 테이블에는 반드시 통계정보가 존재하여야 함.
. 데이터가 0건인 상태로 통계정보 생성 금지.
② 통계정보에 대한 관리에 참고 사항
- 통계정보에 대한 관리 SQL : 통계정보가 없거나, 데이터가 0건인데 통계정보가 존재하는 테이블 조회
SELECT TABLE_NAME,
LAST_ANALYZED,
NUM_ROWS
FROM USER_TABLES
WHERE LAST_ANALYZED IS NULL
OR (LAST_ANALYZED IS NOT NULL AND NUM_ROSWS=0)