OS 환경 : Oracle Linux 6.8 (64bit)
DB 환경 : Oracle Database 11.2.0.4
방법 : 오라클 11g 자동통계정보수집 table lock , unlock
자동통계정보 수집 기능 테이블 단위 비활성화 (lock)
EXEC DBMS_STATS.LOCK_TABLE_STATS('유저명','테이블명');
|
1
2
3
|
SQL> EXEC DBMS_STATS.LOCK_TABLE_STATS('JSH','EMP');
PL/SQL procedure successfully completed.
|
수동 통계정보 수집
|
1
2
3
4
5
6
7
8
9
|
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('JSH','EMP');
BEGIN DBMS_STATS.GATHER_TABLE_STATS('JSH','EMP'); END;
*
ERROR at line 1:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 24281
ORA-06512: at "SYS.DBMS_STATS", line 24332
ORA-06512: at line 1
|
에러 발생하면서 수집되지 않음
통계정보 lock 확인
|
1
2
3
4
5
6
7
8
|
SQL>
select table_name, stattype_locked
from user_tab_statistics
where stattype_locked='ALL';
TABLE_NAME STATT
------------------------------ -----
EMP ALL
|
자동통계정보 수집상태가 LOCK 상태이면 LOCKSTATTYPE_LOCKED가 ALL로 표시된다.
11g 기준으로 LOCKSTATTYPE_LOCKED 의 값은 ALL, DATA, CACHE가 있는데
오라클 커뮤니티 유저의 말에 따르면 DATA와 CACHE값은 내부 오라클 커널 작업으로 수행된다고함
일반유저가 설정할 수 있는 값은 ALL 밖에 없다는 말임
자동통계정보 수집 기능 테이블 단위 활성화 (unlock)
|
1
2
3
|
SQL> EXEC DBMS_STATS.UNLOCK_TABLE_STATS('JSH','EMP');
PL/SQL procedure successfully completed.
|
수동 통계정보 수집
|
1
2
3
|
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('JSH','EMP');
PL/SQL procedure successfully completed.
|
정상 실행됨
+
자동통계정보 수집 기능 테이블 단위 비활성화(lock) 상태에도 수동으로 수집하는 방법
|
1
2
3
|
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('JSH','EMP', force=>true);
PL/SQL procedure successfully completed.
|
마지막 인자에 force=>true 을 사용해주면 정상 실행됨
참조 :
http://neo-orcl.tistory.com/m/104
https://community.oracle.com/message/12932876#12932876
'ORACLE > Performance Tuning ' 카테고리의 다른 글
| 오라클 오래걸리는 쿼리 LONG 쿼리 찾기 (5) | 2018.12.19 |
|---|---|
| [스크랩] SQL튜닝 방법론 (1) | 2018.12.18 |
| DISK IO를 많이 발생시키는 SQL 문장을 찾는 쿼리 (0) | 2018.12.12 |
| enq HW - contention (0) | 2018.12.05 |
| enq UL - contention, PLSQL lock Timer (0) | 2018.12.05 |
