1. SYSAUX表領域とは
SYSAUX表領域は、Oracleデータベースの補助的な表領域であり、主に以下のコンポーネントのデータを格納します。
- AWR(自動ワークロードリポジトリ)
- Statspack
- Oracle Text
- Oracle Streams
- SQL Tuning Advisor
- その他のデータベースコンポーネント
SYSAUX表領域が肥大化すると、ディスク領域を圧迫し、データベースのパフォーマンスにも影響を与える可能性があります。本記事では、その対処方法について解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
2. SYSAUX表領域の使用状況を確認する
SYSAUX表領域のサイズや使用率を確認するには、以下のSQLを実行します。
SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mb, maxbytes/1024/1024 AS max_size_mb
FROM dba_data_files
WHERE tablespace_name = 'SYSAUX';
また、SYSAUX表領域内のコンポーネントごとの使用状況を確認するには、以下のSQLを使用します。
SELECT occupant_name, space_usage_kbytes/1024 AS space_usage_mb
FROM v$sysaux_occupants
ORDER BY space_usage_mb DESC;
この結果をもとに、どのコンポーネントが表領域を大量に使用しているかを特定します。
SQL> SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mb, maxbytes/1024/1024 AS max_size_mb
2 FROM dba_data_files
3 WHERE tablespace_name = 'SYSAUX';
TABLESPACE_NAME FILE_NAME SIZE_MB MAX_SIZE_MB
-------------------- ------------------------------------------- ---------- -----------
SYSAUX /u01/app/oracle/oradata/V19/sysaux01.dbf 760 32767.9844
SQL> SELECT occupant_name, space_usage_kbytes/1024 AS space_usage_mb
2 FROM v$sysaux_occupants
3 ORDER BY space_usage_mb DESC;
OCCUPANT_NAME SPACE_USAGE_MB
-------------------------------------------------- --------------
SDO 231.8125
XDB 68.375
SM/AWR 60.0625
SM/OTHER 48.875
AO 45.8125
AUDSYS 44.4375
LOGMNR 11
SM/OPTSTAT 9.9375
SM/ADVISOR 9.4375
WM 6.5625
PL/SCOPE 2.8125
SQL_MANAGEMENT_BASE 2.6875
TEXT 2.6875
JOB_SCHEDULER 1.9375
STREAMS 1.6875
LOGSTDBY 1.5625
AUTO_TASK .5625
EM_MONITORING_USER .375
SMON_SCN_TIME .3125
ORDIM/ORDDATA 0
ORDIM/ORDPLUGINS 0
ORDIM/SI_INFORMTN_SCHEMA 0
EM 0
XSAMD 0
ULTRASEARCH 0
ULTRASEARCH_DEMO_USER 0
EXPRESSION_FILTER 0
TSM 0
AUDIT_TABLES 0
STATSPACK 0
XSOQHIST 0
ORDIM 0
32行が選択されました。
2.1 v$sysaux_occupants で確認できる主なコンポーネント
| コンポーネント名 | 説明 |
|---|---|
| AWR (Automatic Workload Repository) | 自動ワークロードリポジトリのスナップショットデータ |
| Statspack | パフォーマンス監視のためのスナップショット |
| SQL Tuning Advisor | SQLチューニングアドバイザのデータ |
| SQL Access Advisor | SQLアクセスアドバイザのデータ |
| Oracle Text | テキスト検索機能のメタデータ |
| Oracle Streams | ストリームレプリケーションのメタデータ |
| XDB | XMLデータベースのメタデータ |
| Workspace Manager | バージョニングやワークスペース管理のデータ |
| Enterprise Manager Repository | Oracle Enterprise Manager のデータ |
| Unified Auditing | 統合監査のログデータ |
この表を参考にして、不要なコンポーネントを削除または設定変更することで、SYSAUX表領域の使用量を管理できます。
3. AWRスナップショットの確認と削除
3.1 保存されているAWRスナップショットの確認
SELECT snap_id, begin_interval_time, end_interval_time
FROM dba_hist_snapshot
ORDER BY begin_interval_time DESC;
SQL> SELECT snap_id, begin_interval_time, end_interval_time
2 FROM dba_hist_snapshot
3 ORDER BY begin_interval_time DESC;
SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME
---------- ----------------------------------- -----------------------------------
19 25-02-11 18:40:20.104 25-02-11 19:00:24.833
18 25-02-11 18:20:15.495 25-02-11 18:40:20.104
17 25-02-11 18:00:10.560 25-02-11 18:20:15.495
16 25-02-11 17:40:05.824 25-02-11 18:00:10.560
15 25-02-11 17:20:01.157 25-02-11 17:40:05.824
14 25-02-11 17:00:56.584 25-02-11 17:20:01.157
13 25-02-11 16:40:51.904 25-02-11 17:00:56.584
12 25-02-11 16:20:47.237 25-02-11 16:40:51.904
11 25-02-11 16:00:42.240 25-02-11 16:20:47.237
10 25-02-11 15:40:37.504 25-02-11 16:00:42.240
9 25-02-11 15:20:32.775 25-02-11 15:40:37.504
8 25-02-11 15:00:27.847 25-02-11 15:20:32.775
7 25-02-11 14:40:23.177 25-02-11 15:00:27.847
6 25-02-11 14:20:18.185 25-02-11 14:40:23.177
5 25-02-11 14:00:13.190 25-02-11 14:20:18.185
4 25-02-11 13:40:08.265 25-02-11 14:00:13.190
3 25-02-11 13:21:04.308 25-02-11 13:40:08.265
2 25-02-11 13:10:03.000 25-02-11 13:21:04.308
1 25-02-11 01:29:46.000 25-02-11 01:40:49.795
19行が選択されました。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
3.2 AWRスナップショットの保持期間を確認
SELECT retention FROM dba_hist_wr_control;
SQL> SELECT retention FROM dba_hist_wr_control;
RETENTION
----------------------------------------
+00010 00:00:00.0
3.3 保持期間を短縮(例: 7日間に変更)
BEGIN
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 11520, -- 8日(分単位)
interval => 60 -- 1時間ごとにスナップショットを取得
);
END;
/
SQL> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 retention => 11520, -- 8日(分単位)
4 interval => 60 -- 1時間ごとにスナップショットを取得
5 );
6 END;
7 /
PL/SQLプロシージャが正常に完了しました。
SQL> SELECT retention FROM dba_hist_wr_control;
RETENTION
----------------------------------------
+00008 00:00:00.0
3.4 古いスナップショットの削除
exec dbms_workload_repository.drop_snapshot_range(1, 5);
例)SNAP_IDの1~5を削除する場合
この処理を定期的に実施することで、SYSAUX表領域の肥大化を防ぐことができます。
SQL> SELECT snap_id, begin_interval_time, end_interval_time
2 FROM dba_hist_snapshot
3 ORDER BY begin_interval_time DESC;
SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME
---------- ----------------------------------- -----------------------------------
19 25-02-11 18:40:20.104 25-02-11 19:00:24.833
18 25-02-11 18:20:15.495 25-02-11 18:40:20.104
17 25-02-11 18:00:10.560 25-02-11 18:20:15.495
16 25-02-11 17:40:05.824 25-02-11 18:00:10.560
15 25-02-11 17:20:01.157 25-02-11 17:40:05.824
14 25-02-11 17:00:56.584 25-02-11 17:20:01.157
13 25-02-11 16:40:51.904 25-02-11 17:00:56.584
12 25-02-11 16:20:47.237 25-02-11 16:40:51.904
11 25-02-11 16:00:42.240 25-02-11 16:20:47.237
10 25-02-11 15:40:37.504 25-02-11 16:00:42.240
9 25-02-11 15:20:32.775 25-02-11 15:40:37.504
8 25-02-11 15:00:27.847 25-02-11 15:20:32.775
7 25-02-11 14:40:23.177 25-02-11 15:00:27.847
6 25-02-11 14:20:18.185 25-02-11 14:40:23.177
5 25-02-11 14:00:13.190 25-02-11 14:20:18.185
4 25-02-11 13:40:08.265 25-02-11 14:00:13.190
3 25-02-11 13:21:04.308 25-02-11 13:40:08.265
2 25-02-11 13:10:03.000 25-02-11 13:21:04.308
1 25-02-11 01:29:46.000 25-02-11 01:40:49.795
19行が選択されました。
SQL> exec dbms_workload_repository.drop_snapshot_range(1, 5);
PL/SQLプロシージャが正常に完了しました。
SQL> SELECT snap_id, begin_interval_time, end_interval_time
2 FROM dba_hist_snapshot
3 ORDER BY begin_interval_time DESC;
SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME
---------- ----------------------------------- -----------------------------------
19 25-02-11 18:40:20.104 25-02-11 19:00:24.833
18 25-02-11 18:20:15.495 25-02-11 18:40:20.104
17 25-02-11 18:00:10.560 25-02-11 18:20:15.495
16 25-02-11 17:40:05.824 25-02-11 18:00:10.560
15 25-02-11 17:20:01.157 25-02-11 17:40:05.824
14 25-02-11 17:00:56.584 25-02-11 17:20:01.157
13 25-02-11 16:40:51.904 25-02-11 17:00:56.584
12 25-02-11 16:20:47.237 25-02-11 16:40:51.904
11 25-02-11 16:00:42.240 25-02-11 16:20:47.237
10 25-02-11 15:40:37.504 25-02-11 16:00:42.240
9 25-02-11 15:20:32.775 25-02-11 15:40:37.504
8 25-02-11 15:00:27.847 25-02-11 15:20:32.775
7 25-02-11 14:40:23.177 25-02-11 15:00:27.847
6 25-02-11 14:20:18.185 25-02-11 14:40:23.177
14行が選択されました。
4. Statspackのデータの確認と削除
4.1 保存されているStatspackのスナップショットを確認
SELECT snap_id, snap_time
FROM stats$snapshot
ORDER BY snap_time DESC;
SQL> alter session set nls_date_format='YYYY/MM/DD HH24:MI:SS';
セッションが変更されました。
SQL> SELECT snap_id, snap_time
2 FROM stats$snapshot
3 ORDER BY snap_time DESC;
SNAP_ID SNAP_TIME
---------- -------------------
31 2025/02/11 19:28:08
26 2025/02/11 18:58:08
25 2025/02/11 18:28:08
24 2025/02/11 17:58:08
23 2025/02/11 17:28:08
22 2025/02/11 16:58:08
21 2025/02/11 16:28:08
14 2025/02/11 15:58:08
13 2025/02/11 15:28:08
12 2025/02/11 14:58:08
11 2025/02/11 14:28:09
1 2025/02/11 13:58:09
12行が選択されました。
4.2 Statspackのスナップショット数を確認
SELECT COUNT(*) FROM stats$snapshot;
4.3 古いスナップショットを削除
EXEC statspack.purge(i_num_days => 7);
Statspackのスナップショットを削除することで、SYSAUX表領域の使用量を減らすことができます。
5. 未使用のコンポーネントを削除
SYSAUX表領域に格納されている不要なコンポーネントを削除することで、空き領域を確保できます。
5.1 使用されていないコンポーネントの確認
SELECT occupant_name, space_usage_kbytes/1024 AS space_usage_mb
FROM v$sysaux_occupants
ORDER BY space_usage_mb DESC;
5.2 その他のコンポーネントの削除
使用していない機能がある場合は、適宜コンポーネントを無効化または削除してください。
6. まとめ
SYSAUX表領域が肥大化した場合、以下の対策を実施することで、使用量を削減できます。
- SYSAUX表領域の使用状況を確認する
- AWRスナップショットの確認・削除を行う
- Statspackの古いデータを削除する
- 不要なコンポーネントを削除する
- SYSAUX表領域を縮小する
これらの対応を定期的に実施することで、データベースのパフォーマンスを維持し、ディスク領域を適切に管理できます。
適宜、データベースの運用方針に合わせて設定を調整し、無駄な領域を削減することが重要です。
[参考]
Oracle Databaseデータベース管理者ガイド 19c




コメント