ORACLE 10g SYSAUX 표 공간 이 빠르게 증가 하 는 WRH $ACTIVE_SESSION_HISTORY 편

최근 에 생산 데이터 뱅 크 의 표 공간 사용 상황 을 모니터링 한 결과 SYSAUX 표 공간 이 매우 크다 (17g 의 많 음) 는 것 을 알 게 되 었 고 매일 수 십 M 의 증가 가 있 었 다. 이 현상 을 보고 이것 이 매우 정상 적 이지 않다 고 생각 했다. SYSAUX 표 공간 에 있 는 segments 가 차지 하 는 공간 이 비교적 크다 는 것 을 분석 했다.
SELECT SUM(T.BYTES)/1024/1024 segments_SIZE,T.segment_name  FROM Dba_Segments t WHERE t.tablespace_name='SYSAUX'     AND ROWNUM<21 GROUP BY T.segment_name ORDER BY 1 DESC;
segments_size
segment_name
10631.0625
WRH$_ACTIVE_SESSION_HISTORY
2683.0625
WRH$_ACTIVE_SESSION_HISTORY_PK
1026.0625
WRH$_LATCH_MISSES_SUMMARY_PK
730.0625
WRH$_LATCH_MISSES_SUMMARY
618.0625
WRH$_SQLSTAT
564.0625
WRH$_LATCH
496.9375
WRH$_LATCH_PK
490
I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST
471.8125
WRH$_SYSSTAT_PK
395
SYS_LOB0000009001C00038$$
378
WRI$_OPTSTAT_HISTGRM_HISTORY
371.5
WRH$_SEG_STAT
370.25
WRH$_PARAMETER_PK
305.125
WRH$_SYSSTAT
292.125
WRH$_PARAMETER
280
WRH$_SQL_PLAN
274
WRH$_SYSMETRIC_SUMMARY
268
SYS_LOB0000008995C00004$$
257.75
WRH$_SYSTEM_EVENT_PK
247
I_WRI$_OPTSTAT_H_ST
233.75
WRH$_SYSTEM_EVENT
205.4375
WRH$_SERVICE_STAT_PK
WRH $ 발견ACTIVE_SESSION_HISTORY 표 와 색인 은 대부분의 공간 을 차지 합 니 다. 이 표 는 Oacle 10g 으로 AWR 에 관 한 정 보 를 저장 합 니 다. 해당 하 는 보 기 는 dba 입 니 다.hist_active_sess_history                                                                                        주: Oacle 이 제공 하 는 dbahist 시작 보기 에 서 는 wrh $로 시작 하 는 시계, wrm $로 시작 하 는 시계 및 부분 dbahist 시작 표 가 연결 되 어 있 습 니 다.
스냅 샷 정보 보기:
SELECT COUNT(*) FROM WRM$_SNAPSHOT;또는 SELECT COUNT (*) FROM dbahist_snapshot;
25043 개의 스냅 샷 이 저장 되 어 있 는 것 을 발견 하 였 습 니 다!
가장 오래된 스냅 샷 이 언제 인지 보 세 요.
SELECT * FROM WRM$_SNAPSHOT t ORDER BY t.snap_id ASC;
관련 스냅 샷 을 발견 한 것 은 2 년 전 이 었 다!
이 라 이브 러 리 의 awr 에 대한 매개 변수 설정 보기:
SELECT * FROM wrm$_wr_control;아니면 selecta. snapinterval,a.retention,a.topnsql from dba_hist_wr_control a;
SNAP_INTERVAL
RETENTION
TOPNSQL
+00000 01:00:00.0
+00007 00:00:00.0
DEFAULT
과거 기록 스냅 샷 을 유지 하 는 시간 은 7 일 입 니 다. Oacle 기본 값 과 일치 합 니 다. 왜 데이터 베 이 스 는 만 료 된 스냅 샷 정 보 를 삭제 하지 않 았 습 니까?그리고 모든 역사의 스냅 샷 정보 가 연속 적 인 것 이 아니 라 는 것 을 발견 했다. 이것 은 Oacle 의 bug 인가? 아니면 누군가가 역 사 를 삭제 한 스냅 샷 정보 가 Oacle 의 bug 를 초래 한 것 인가?이 데이터 베 이 스 는 원래 다른 팀 이 유지 하 는 것 이 었 는데 중간 에 물리 적 인 이전 과 업 그 레이 드 를 한 적 이 있 습 니 다. 그들 에 게 또 어떤 조작 을 했 습 니까?많은 의문.
sysaux 표 공간 이 거의 꽉 차 있 는 것 을 보면 서 먼저 이 표 의 데 이 터 를 정리 하고 적어 서 sysaux 표 공간의 크기 를 낮 출 수 밖 에 없습니다.
metalink 글 참조: WRH $ACTIVE_SESSION_HISTORY Does Not Get Purged [ID 387914.1]
select table_name,partition_name 
from dba_tab_partitions
where table_name = 'WRH$_ACTIVE_SESSION_HISTORY';
 
 
alter session set "_swrf_test_action" = 72;      
 
 
set serveroutput on 
declare
CURSOR cur_part IS
SELECT partition_name from dba_tab_partitions
WHERE table_name = 'WRH$_ACTIVE_SESSION_HISTORY';

query1 varchar2(200);
query2 varchar2(200);

TYPE partrec IS RECORD (snapid number, dbid number);
TYPE partlist IS TABLE OF partrec;

Outlist partlist;
begin
dbms_output.put_line('PARTITION NAME SNAP_ID DBID');
dbms_output.put_line('--------------------------- ------- ----------');

for part in cur_part loop
query1 := 'select min(snap_id), dbid from sys.WRH$_ACTIVE_SESSION_HISTORY partition ('||part.partition_name||') group by dbid';
execute immediate query1 bulk collect into OutList;

if OutList.count > 0 then
for i in OutList.first..OutList.last loop
dbms_output.put_line(part.partition_name||' Min '||OutList(i).snapid||' '||OutList(i).dbid);
end loop;
end if;

query2 := 'select max(snap_id), dbid from sys.WRH$_ACTIVE_SESSION_HISTORY partition ('||part.partition_name||') group by dbid';
execute immediate query2 bulk collect into OutList;

if OutList.count > 0 then
for i in OutList.first..OutList.last loop
dbms_output.put_line(part.partition_name||' Max '||OutList(i).snapid||' '||OutList(i).dbid);
dbms_output.put_line('---');
end loop;
end if;

end loop;
end;
/
 
 
DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE( 
low_snap_id IN NUMBER,
high_snap_id IN NUMBER
dbid IN NUMBER DEFAULT NULL);
 
 
 WRH$_ACTIVE_SESSION_HISTORY segment       。

좋은 웹페이지 즐겨찾기