본문 바로가기

통계정보7

통계정보 수집시 no_invaildation 옵션 새로 수집시 바뀐 통계정보가 바로 수집되었을때 즉시 cursor들에게 기존것을 무효화하고 새로운 통계정보를 적용할지(false) shared pool이 flush되고 적용할지(true) 결정하는 명령어입니다.default는 auto입니다.auto는 일정시간동안 모든 cursor를 무효화하고 새로운 통계정보를 적용합니다. Controls the invalidation of dependent cursors when statistics are gathered. The parameter takes the following values:TRUE: Dependent cursors are not invalidated.FALSE: Dependent cursors are marked for immediate invali.. 2024. 8. 27.
ORA-20005: object statistics are locked (stattype = ALL) 테이블 통계정보를 수집할 때 발생한 에러통계정보를 수집하는것에 대한 lock이 걸려있으므로 lock을 풀어주면 됩니다. exec dbms_stats.unlock_table_stats(ownname => '오너',tabname => '테이블명');PL/SQL executed. exec DBMS_STATS.GATHER_TABLE_STATS(ownname => '오너',tabname => '테이블명',degree => 8);PL/SQL executed. 2024. 5. 30.
히스토그램(Histogram) (아래 출처의 글을 번역하고 테스트하여 정리한 것입니다.) 출처 : https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/histograms.html#GUID-FFA0C0AF-3761-4829-995E-9AFA524F96CE 히스토그램 히스토그램은 테이블 열의 데이터 분포에 대한 더 자세한 정보를 제공하는 특수한 유형의 컬럼 통계입니다. "버킷"이라고 부르는 공간에 정렬된 값들을 넣습니다. NDV(Number of distinct values)와 데이터의 분포에 따라 데이터베이스는 히스토그램의 유형을 선택하게 됩니다. (경우에 따라 히스토그램을 생성할때 내부적으로 미리 지정된 수의 행을 샘플링하기도 합니다.) 유형은 아래와 같습니다. F.. 2024. 1. 4.
같은 SQLID 다른 PLAN (Histogram 차이) 운영 중에 일어나 해결한 것을 정리하였습니다. 바인드변수만 다르게 해서 동일한 SQLID로 수행되는 쿼리가 특정 바인드변수가 들어오면 끝나지 않고 오래걸리는 현상이 발생하였습니다. 확인해보니 오래걸릴 때에는 실행계획이 달라졌고, SQLID는 동일했었습니다. 해결으로는 해당 SQLID에 대해서는 무조건 같은 실행계획을 타게 profile을 이용하여 고정시켜줬고, 오래걸리는 쿼리도 빠르게 끝나게 되었습니다. 처리 후에 SQLID가 같은데 실행계획이 다르게 나오는 경우는 어떤경우인지 테스트를 통해 정리해보도록 하겠습니다. 시나리오 참고 : https://aprakash.wordpress.com/2011/02/07/same-sql_id-with-different-execution-plans/ Cursor_sha.. 2023. 12. 22.