2009-12-02 4 views
4

Je cherche un outil pour surveiller les résultats d'une requête sql exécutée périodiquement et déclencher une notification basée sur le fait que la requête renvoie des résultats. (Tous les autres filtres sont les bienvenus)Outil de surveillance des résultats de requête SQL requis

J'ai besoin de regarder une table de transaction pour les erreurs, et ce serait génial si ma requête SQL pouvait s'exécuter en arrière-plan, se rafraîchir périodiquement et afficher une notification quand il y a des résultats.

J'ai besoin de me connecter à Oracle DB et j'utilise actuellement PL/SQL Developer ou Oracle SQL Developer.

solutions gratuites, OS et léger préféré :)

MISE À JOUR:

De préférence, je voudrais créer/modifier des objets de base de données. Nous aimerions également l'utiliser sur nos bases de données clients et tous n'ont pas la possibilité de modifier les bases de données sur lesquelles leurs applications Oracle s'exécutent.

Merci d'avance

+0

Comment voulez-vous que la notification? Email? SMS? Boîte de message sur votre écran? – APC

+0

http://no0p.github.io/postgresql/2014/10/21/postgresql-monitoring-framework.html plus http://oss.oetiker.ch/rrdtool/gallery/index.en.html –

+0

après tout cela années, si je peux demander, comment avez-vous enfin le résoudre? – kmonsoor

Répondre

0

Placez la requête dans une procédure stockée. Ayez votre code de surveillance/notification là.

3

Comment utiliser DBMS_Scheduler pour exécuter une procédure stockée qui interroge la table, puis utilise UTL_Mail pour envoyer un courrier électronique en cas de problème?

0

Je l'utilise et ça marche absolument bien.

- 1. Création du programme:

BEGIN 
DBMS_SCHEDULER.CREATE_PROGRAM(
     program_name=>'user.TABLESPACE_MANAGEMENT', 
     program_action=>'begin 
     EXECUTE IMMEDIATE 
'CREATE TABLE IDLE_TIME_TABLE 
LOGGING 
NOCOMPRESS 
NOCACHE 
NOPARALLEL 
MONITORING 
AS 
SELECT DISTINCT 
      SID, 
      OSUSER, 
      USERNAME, 
      STATUS, 
      TO_CHAR(LOGON_TIME, ''DDth DAY HH24:MI:SS'') LOGON_TIME, 
      FLOOR(LAST_CALL_ET/3600)||'':''|| FLOOR(MOD(LAST_CALL_ET,3600)/60)||'':''||MOD(MOD(LAST_CALL_ET,3600),60) IDLE, 
      PROGRAM 
FROM V$SESSION 
WHERE USERNAME IS NOT NULL 
AND STATUS = ''INACTIVE'' 
ORDER BY IDLE DESC', 
     program_type=>'PLSQL_BLOCK', 
     number_of_arguments=>0, 
     comments=>'TABLESPACE MANAGEMENT CREATES A TABLE CALLED TABLESPACE_MANAGEMNT ON DAILY BASIS', 
     enabled=>TRUE); 
END; 

- 2. Créer un programme horaire:

BEGIN 
    sys.dbms_scheduler.create_schedule( 
     repeat_interval => 
     'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=22; BYMINUTE=0; BYSECOND=0;', 
     start_date => 
     to_timestamp_tz('2011-07-26 US/Eastern', 'YYYY-MM-DD TZR'), 
     comments => 
     'Schedule for what ever u want', 
     schedule_name => '"user"."TABLESPACE_MANAGEMENT_SCHEDULE"'); 
END; 

--3. Et enfin lien à la fois pour créer un JOB:

BEGIN 
    sys.dbms_scheduler.create_job( 
     job_name => '"user"."SPACE"', 
     program_name => 'user.TABLESPACE_MANAGEMENT', 
     schedule_name => 'user.TABLESPACE_MANAGEMENT_SCHEDULE', 
     job_class => 'DEFAULT_JOB_CLASS', 
     comments => 'TABLESPCE_MANAGEMENT', 
     auto_drop => FALSE, 
     enabled => TRUE); 
END; 

Maintenant, vous pouvez utiliser quelque chose comme utl_mail.send

begin 
UTL_MAIL.SEND_ATTACH_VARCHAR2 
(
     sender => '[email protected]' 
     ,recipients => '[email protected],[email protected],[email protected],[email protected]' 
     ,cc => NULL 
     ,bcc => NULL 
     ,subject => 'send_attach_varchar2' 
     ,message => 'here is a test of send_attach_varchar2' 
     ,mime_type => 'text/plain; charset=us-ascii' 
     ,priority => 3 
     ,attachment => '<html> 
             <head> 
              <title>Test HTML message</title> 
             </head> 
             <body> 
              <p>This is a <b>HTML</b> <i>version</i> of the test message.</p> 
              <p><img src="http://whatever/images/site_logo.gif" alt="Site Logo" /> 
             </body> 
             </html>' 
     ,att_inline => TRUE 
     ,att_mime_type=>'application/html' 
     ,att_filename => 'cartesien.html' 
    );