Creating alerts in OEM DB Control 11G

oracle-11g-logo

In the Oracle Enterprise Management you can create alerts for users. This alerts can be  OS_BASED (using scripts) or SQL_BASED (using PL/SQL queries). In this post  I will show an example about this alerts.

  • OS_BASED: For to do an alert using scripts , before you must do a script  to put it in the OEM metrics. Then, I will use a script from Oracle’s Documentation:

#!/usr/bin/perl

# Description: 5-min load average.

# Sample User Defined Event monitoring script.

$ENV{PATH} = “/bin:/usr/bin:/usr/sbin”;

$DATA = `uptime`;

$DATA =~ /average:s+([.d]+),s+([.d]+),s+([.d]+)s*$/;

if (defined $2) {

print “em_result=$2n”;

} else {

die “Error collecting datan”;

}

90

What does this script do? It shows the load average in Operating System.

Ok, we have a script and this script return a value. Now, we have to define the metrics in OEM.

Then…

  • Click “Database”
  • Home -> Click “Host”
  • Click “User-Defined Metrics”
  • Click “Create”

In “User-Defined Metrics” Page , you must complete the informations (Metric Name, Metric Type, Command Line ,Operating System Credentials,  Threshold , Schedule and Frequency ).

91

93

  • After complete the informations, click “OK” and we have the OS-BASED created.

98

Is it Ok? Let’s wait 15 minutes (the frequency that I choose ) …

99

It works!

Now we will have the alerts using SQL or PL/SQL (SQL_BASED).

  • Click “Database
  • Click “User-Defined Metrics”
  • Click “Create”

99

In the next page , as OS-BASED alerts, you must complete some informations. But now the difference it is in the SQL Query (where you must pass a SQL ). The SQL That I will use it is from Oracle’s documentation:

SELECT d.tablespace_name,

     round(((a.bytes - NVL(f.bytes,0))*100/a.maxbytes),2) used_pct

FROM   sys.dba_tablespaces d,

      (select tablespace_name, sum(bytes) bytes, sum(greatest(maxbytes,bytes)) maxbytes

         from sys.dba_data_files group by tablespace_name) a,

      (select tablespace_name, sum(bytes) bytes

         from sys.dba_free_space group by tablespace_name) f

WHERE d.tablespace_name = a.tablespace_name(+)

 AND d.tablespace_name = f.tablespace_name(+)

 AND NOT (d.extent_management = 'LOCAL' AND d.contents = 'TEMPORARY');


This script will return the tablespace name and percent used.

99

99





  •  Click “OK” and now your alert was created.

99

I hope this post can help you!

References:
Oracle Enterprise Manager Documentation, 11g Release 1 (11.1) Enterprise Manager Administration 4 User-Defined Metrics

icon2

Related posts

Leave a Comment