Oracle その他

STATSPACK.PURGE をしても使用率が下がらない原因と対処|Oracle, 表領域肥大化

コンテンツ

事象

STATSPACK.PURGE という不要なスナップショットを削除する処理を行っているが、使用率が下がらない。

原因

STATSPACK.PURGE 処理には、とあるパラメタを設定しないと削除されない以下のようなセグメントが存在する。

  • stats$sqltext
  • stats$sql_plan

これらのセグメントを含める場合、i_extended_purge パラメタを TRUE とする必要がある。

exec statspack.purge(15, i_extended_purge=>true);

また、上記を指定しても表領域の肥大化が解消されない場合、表領域の縮小(move/rebuild)を実施する必要がある。

alter table perfstat.stats$sqltext move tablespace STATSTBS;
alter index perfstat.stats$sqltext_pk rebuild;

STATSPACK.PURGE 処理は内部ではDELETEが実行されているため

おまけ

STATSPACK 関連のセグメントの使用状況は以下SQLで確認可能。

col partition_name for a50
col owner for a30
col segment_name for a50
col segment_name for a50
select segment_type,owner,segment_name,partition_name,
bytes/1048576 "SIZE(MB)", trunc(bytes*100/t.tb, 2) "%" from dba_segments,
(select sum(bytes) tb from dba_segments where tablespace_name='<表領域名>') t
where tablespace_name='<表領域名>' order by 6 desc,1;

この記事が役に立ったという方は
ボタンをポチッとしてくれたら喜びます

-Oracle, その他
-