awr手工清理步骤

注意事项:
    1、严格跟踪删除awr会话是否阻塞其他回话,是否存在严重的等待事件
    2、时刻关注归档空间情况,删除awr操作会产生大量归档日志


1、查询sysaux表空间组件占用情况

SELECT occupant_name "Item", 
       space_usage_kbytes / 1048576 "Space Used (GB)", 
       schema_name "Schema", 
       move_procedure "Move Procedure" 
  FROM v$sysaux_occupants 
ORDER BY 1 ;

2、查询sysaux表空间大字段对象情况

select owner, segment_name, segment_type, bytes / 1024 / 1024
  from (select *
          from dba_segments
         where tablespace_name = 'SYSAUX'
         order by bytes desc)
 where rownum < 20;


 

3、确认awr的snap_id情况,awr基线情况

select * from sys.WRM$_SNAPSHOT_DETAILS where rownum<5;
select max(snap_id), min(snap_id) from sys.WRM$_SNAPSHOT_DETAILS;
select max(snap_id), min(snap_id) from sys.WRM$_SNAPSHOT;
select max(snap_id), min(snap_id) from dba_hist_snapshot;
select * from dba_hist_baseline_details;

--清理指定awr基线

EXECUTE DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'perfbl');

4、删除指定dbid、snap_id范围的快照

select sid from v$mystat where rownum=1;
select spid from v$process where addr in (select paddr from v$session where sid=&sid);
exec dbms_workload_repository.drop_snapshot_range(810,35550,2519839369);


5、观察清理awr会话sql执行情况

select sid,status,sql_id,sql_child_number,sql_exec_start,blocking_session,blocking_session_status,event,seconds_in_wait from v$session where sid=&sid;

重点:删除awr会话会按照以下sql_id顺序执行,中间有遗漏sql_id,执行时间长短不一
--期间可用以下sql跟踪会话具体sql的执行统计情况

select sql_id,child_number,executions,buffer_gets,disk_reads,buffer_gets/(executions+1),disk_reads/(executions+1) from v$sql where sql_id='5bvk329b8qz3p';

--用以下sql,查询具体删除对象的查询结果

select * from WRH$_EVENT_HISTOGRAM  tab
 where (35830 <= tab.snap_id and tab.snap_id <= 35831 and dbid = 2513064869)
   and not exists
 (select 1 from WRM$_BASELINE b where (tab.dbid = b.dbid)
   and (tab.snap_id >= b.start_snap_id)
   and (tab.snap_id <= b.end_snap_id));

--查看sql执行计划

select * from table(dbms_xplan.display_cursor('854knbb15976z',0));

c2a3w6dhws1v0
8n9fhq1rafbdy
40p1nuftyahzm
3wzq11a3p451a
f0vqzxggcjym5
bsbv3ch4gb4u4
6v0ggz9c764w0
btwc4xyd2zh9m
51u2p770s9uwp
39tn1f1n1xnt2
93dudrsmwtkbu
5bvk329b8qz3p
4uyb91vtx0c8p


6、清理awr完毕后,再次查询sysaux大字段对象情况,查看高水位线是否下降(正常情况下不会下降)

select owner, segment_name, segment_type, bytes / 1024 / 1024
  from (select *
          from dba_segments
         where tablespace_name = 'SYSAUX'
         order by bytes desc)
 where rownum < 20;


7、通过mv操作,降低大字段对象的高水位线
--查看mv表的索引状态、并导出索引ddl语句

select status from dba_indexes where index_name='WRH$_ACTIVE_SESSION_HISTORY_PK';
select dbms_metadata.get_ddl('INDEX','WRH$_ACTIVE_SESSION_HISTORY_PK','SYS') from dual;

--mv指定表

alter table WRH$_ACTIVE_SESSION_HISTORY move;

--mv指定分区表的分区

select 'alter table '||table_name||' move partition '||partition_name||' tablespace sysaux;' from dba_tab_partitions where table_name ='WRH$_ACTIVE_SESSION_HISTORY';


--mv表后,查看索引是否失效

select status from dba_indexes where index_name='WRH$_ACTIVE_SESSION_HISTORY_PK';

--索引失效,则重建索引

alter index sys.WRH$_SQL_BIND_METADATA_PK rebuild;

 

上一篇:HTML结合JSON做表格


下一篇:题解 [HAOI2018] 染色