表領域の空き容量に応じてアラートを生成する方法

この記事では表領域の空き容量に応じてアラートを生成する方法について解説します。

 アラートの生成閾値の確認

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
閾値が変更されたことが確認できました。