ORACLE THRESHOLD (度量阀值)监控表空间

1、使用 DBMS_SERVER_ALERT.SET_THRESHOLD过程设置针对本地管理的表空间的相关阀值。 
2、DBA_OUTSTANDING_ALERTS告警信息可以查看这个视图
3、DBA_ALERT_HISTORY,如果告警信息解决后,DBA_OUTSTANDING_ALERTS中记录的告警信息会转换到DBA_ALERT_HISTORY视图中,但是reason字段的值会被修改为修正后的内容。
224508199.png 7 percent 是修正后计算的百分比

ORACLE设置THRESHOLD演示
--查看空间管理相关metric
SQL> col metric_name for a40
SQL> select metric_id,metric_name from v$metricname where metric_name like'%space%';
 METRIC_ID METRIC_NAME
---------- ----------------------------------------
      9001 Tablespace Bytes Space Usage
      9000 Tablespace Space Usage
SQL> COL WARNING_VALUE FOR A10
SQL> COL CRITICAL_VALUE FOR A10
SQL> COL STATUS FOR A10
SQL> COL OBJECT_NAME FOR A10
SQL> COL OBJECT_TYPE FOR A15
SQL> COL METRICS_NAME FOR A40
SQL>
SQL>--查看已设置的所有度量信息
SQL> SELECT METRICS_NAME,
  2 OBJECT_TYPE,
  3 OBJECT_NAME,
  4 WARNING_VALUE,
  5 CRITICAL_VALUE,
  6 STATUS
  7 FROM DBA_THRESHOLDS;
METRICS_NAME OBJECT_TYPE OBJECT_NAM WARNING_VA CRITICAL_V STATUS
---------------------------------------- --------------- ---------- ---------- ---------- --------
Tablespace Space Usage TABLESPACE TBS_METRIC 80 90 VALID
Tablespace Space Usage TABLESPACE 85 97 VALID

SQL>--当TBS_METRIC 表空间不足80%时,会在FROM DBA_OUTSTANDING_ALERTS视图中生成告警信息。
SQL> set linesize 300
SQL> col REASON for a50
SQL> col OBJECT_NAME for a15
SQL> col MESSAGE_LEVEL for 999
SQL> col MESSAGE_TYPE for a15
SQL> col METRIC_VALUE for 999
SQL> col CREATION_TIME for a20
SQL> col SUGGESTED_ACTION for a50
SQL> col ADVISOR_NAME for a15
SQL> SELECT REASON,
  2 OBJECT_NAME,
  3 MESSAGE_LEVEL,
  4 MESSAGE_TYPE,
  5 METRIC_VALUE,
  6 CREATION_TIME,
  7 SUGGESTED_ACTION,
  8 ADVISOR_NAME
  9 FROM DBA_OUTSTANDING_ALERTS;
REASON OBJECT_NAM MESSAGE_LEVEL MESSAGE_TYPE METRIC_VALUE CREATION_TIME SUGGESTED_ACTION ADVISOR_NAME
-------------------------------------------------- ---------- ------------- --------------- ------------ -------------------- -------------------------------------------------- ---------------
表空间 [TBS_METRIC] 已占用 [92 percent] TBS_METRIC 1 Warning 93 18-12月-13 09.44.41. 给表空间添加空间
                                                                                                         865000 上午 +08:00
SQL> --修改TEST_METRIC表空间数据文件的MAXSIZE
SQL> alter database datafile
  2 'G:\oracle\product\10.2.0\oradata\orcl\tbs_metric01.dbf' autoextend on maxsize 500M;
数据库已更改。

SQL> @E:\script\dba_tablespaces.sql

Tablespace basic Information
TABLESPACE_NAME MEGS_ALLOC MEGS_FREE MEGS_USED PCT_FREE PCT_USED MAX
------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
LMTEMP 100 100 0 100 0 0
SYSAUX 400 25 375 6 94 32768
SYSTEM 570 1 569 0 100 655
TBS_METRIC 38 1 37 2 98 500
TEMP 200 200 0 100 0 0
TESTBIGSP 50 50 0 100 0 33554432
TESTSP 150 150 0 100 0 33792
TS_CDCPUB 3000 920 2080 31 69 3000
UNDOTBS1 2605 2595 10 100 0 32768
USERS 4623 534 4089 12 88 34768
已选择10行。

SQL>--修改TEST_METRIC表空间数据文件的MAXSIZE之后,对应的告警被转移到DBA_ALERT_HISTORY视图中
SQL> SELECT REASON,
  2 OBJECT_NAME,
  3 MESSAGE_LEVEL,
  4 MESSAGE_TYPE,
  5 METRIC_VALUE,
  6 CREATION_TIME,
  7 SUGGESTED_ACTION,
  8 ADVISOR_NAME
  9 FROM DBA_OUTSTANDING_ALERTS;
未选定行

SQL> set linesize 300
SQL> col SEQUENCE_ID FOR 9999999
SQL> col REASON_ID FOR 9999999
SQL> col OBJECT_NAME FOR a15
SQL> col OBJECT_TYPE FOR a15
SQL> col MESSAGE_TYPE FOR a15
SQL> col METRIC_VALUE FOR 999999.99
SQL> col REASON FOR a50
SQL> col SUGGESTED_ACTION FOR a50
SQL> SELECT T.SEQUENCE_ID,
  2 T.REASON_ID,
  3 T.OBJECT_NAME,
  4 T.OBJECT_TYPE,
  5 T.MESSAGE_TYPE,
  6 T.METRIC_VALUE,
  7 T.REASON,
  8 T.SUGGESTED_ACTION
  9 FROM DBA_ALERT_HISTORY T
 10 ORDER BY T.CREATION_TIME DESC;
SEQUENCE_ID REASON_ID OBJECT_NAME OBJECT_TYPE MESSAGE_TYPE METRIC_VALUE REASON SUGGESTED_ACTION
----------- --------- --------------- --------------- --------------- ------------ -------------------------------------------------- -------------------
       4010 9 TBS_METRIC TABLESPACE Notification 7.40 表空间 [TBS_METRIC] 已占用 [7 percent] 给表空间添加空间


维护度量

  --为TBS_METRIC表空间生成度量。
BEGIN
DBMS_SERVER_ALERT.SET_THRESHOLD(
   metrics_id => DBMS_SERVER_ALERT.TABLESPACE_PCT_FULL,
   warning_operator => DBMS_SERVER_ALERT.OPERATOR_GE,
   warning_value => '80',
   critical_operator => DBMS_SERVER_ALERT.OPERATOR_GE,
   critical_value => '90',
   observation_period => 1,
   consecutive_occurrences => 1,
   instance_name => NULL,
   object_type => DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE,
   object_name => 'TBS_METRIC');
END;
/
--删除metric,要将warning_operator ,warning_value,critical_operator,critical_value 置为NULL。
BEGIN
DBMS_SERVER_ALERT.SET_THRESHOLD(
   metrics_id => DBMS_SERVER_ALERT.TABLESPACE_PCT_FULL,
   warning_operator => NULL,
   warning_value => NULL,
   critical_operator => NULL,
   critical_value => NULL,
   observation_period => 1,
   consecutive_occurrences => 1,
   instance_name => NULL,
   object_type => DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE,
   object_name => 'TBS_METRIC');
END;
/
--取消对度量的检查,这时warning_value,critical_value需要设置为0。
BEGIN
DBMS_SERVER_ALERT.SET_THRESHOLD(
   metrics_id => DBMS_SERVER_ALERT.TABLESPACE_PCT_FULL,
   warning_operator => DBMS_SERVER_ALERT.OPERATOR_DO_NOT_CHECK,
   warning_value => 0,
   critical_operator => DBMS_SERVER_ALERT.OPERATOR_DO_NOT_CHECK,
   critical_value => 0,
   observation_period => 1,
   consecutive_occurrences => 1,
   instance_name => NULL,
   object_type => DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE,
   object_name => 'TBS_METRIC');
END;
/

--如果监控剩余空间量 为metrics_id设置DBMS_SERVER_ALERT.TABLESPACE_BYT_FREE
--warning_value的单位为MB
BEGIN
DBMS_SERVER_ALERT.SET_THRESHOLD(
   metrics_id => DBMS_SERVER_ALERT.TABLESPACE_BYT_FREE,
   warning_operator => DBMS_SERVER_ALERT.OPERATOR_LE,
   warning_value => '2310',
   critical_operator => DBMS_SERVER_ALERT.OPERATOR_LE,
   critical_value => '1000',
   observation_period => 1,
   consecutive_occurrences => 1,
   instance_name => NULL,
   object_type => DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE,
   object_name => 'USERS');
END;
/


observation_period

The period at which the metric values are computed and verified against the threshold setting. The valid range is 1 to 60 minutes.
consecutive_occurrences
The number of observation periods the metric value should violate the threshold value before the alert is issued. 

度量视图
The following dictionary views provide information about server alerts:
    DBA_THRESHOLDS lists the threshold settings defined for the instance.
    DBA_OUTSTANDING_ALERTS describes the outstanding alerts in the database.
    DBA_ALERT_HISTORY lists a history of alerts that have been cleared.
    V$ALERT_TYPES provides information such as group and type for each alert.
    V$METRICNAME contains the names, identifiers, and other information about the system metrics.
    V$METRIC and V$METRIC_HISTORY views contain system-level metric values in memory.

参考:Managing Tablespace Alerts
http://docs.oracle.com/cd/B19306_01/server.102/b14231/schema.htm#ADMIN10120