この記事では表領域の空き容量に応じてアラートを生成する方法について解説します。
アラートの生成閾値の確認
Oracle Databaseには表領域の空き容量が少なくなった場合などにアラートを生成して通知する機能があります。
警告とクリティカルの2種類の閾値を設定でき、設定値を超えた場合にアラートが生成されます。
アラートの設定は下記のSQLで確認できます。
select * from dba_thresholds;
デフォルトだと85%以上で警告、97%以上でクリティカルとなるように設定されています。
アラートの生成閾値の設定
アラートの生成閾値はDBMS_SERVER_ALERTパッケージのSET_THRESHOLDプロシージャを使用して設定できます。
表領域の空き容量を監視するアラートを設定する場合は以下のように記載したプロシージャを実行します。
DBMS_SERVER_ALERT.SET_THRESHOLD(
metrics_id => dbms_server_alert.tablespace_pct_full,
warning_operator => dbms_server_alert.operator_ge,
warning_value => '<警告閾値>',
critical_operator => dbms_server_alert.operator_ge,
critical_value => '<クリティカル閾値>',
observation_period => 1,
consecutive_occurrences => 1,
instance_name => '<インスタンス名>',
object_type => dbms_server_alert.object_type_tablespace,
object_name => '');
実行例
警告閾値を50%、クリティカル閾値を80%に変更します。
SQL> BEGIN
2 DBMS_SERVER_ALERT.SET_THRESHOLD(
3 metrics_id => dbms_server_alert.tablespace_pct_full,
4 warning_operator => dbms_server_alert.operator_ge,
5 warning_value => '50',
6 critical_operator => dbms_server_alert.operator_ge,
7 critical_value => '80',
8 observation_period => 1,
9 consecutive_occurrences => 1,
10 instance_name => 'xe',
11 object_type => dbms_server_alert.object_type_tablespace,
12 object_name => '');
13 END;
14 /
PL/SQLプロシージャが正常に完了しました。
設定内容を確認します。
SQL> select * from dba_thresholds;
METRICS_NAME WARNING_OPERATOR WARNING_VALUE CRITICAL_OPERATOR CRITICAL_VALUE OBSERVATION_PERIOD CONSECUTIVE_OCCURRENCES INSTANCE_NAME OBJECT_TYPE OBJECT_NAME STATUS
---------------------- ---------------- ---------------------------- ----------------- -------------- ------------------- ------------------------ ------------- ----------- ----------- -------
Tablespace Space Usage GE 50 GE 80 1 1 database_wide TABLESPACE VALID
Tablespace Space Usage DO NOT CHECK <SYSTEM-GENERATED THRESHOLD> DO_NOT_CHECK 0 database_wide TABLESPACE UNDOTBS1 VALID
Tablespace Space Usage DO NOT CHECK <SYSTEM-GENERATED THRESHOLD> DO_NOT_CHECK 0 database_wide TABLESPACE TEMP VALID
Tablespace Space Usage DO NOT CHECK <SYSTEM-GENERATED THRESHOLD> DO_NOT_CHECK 0 database_wide TABLESPACE UNDOTBS2 INVALID
閾値が変更されたことが確認できました。