2009-12-02 4 views
4

주기적으로 실행되는 SQL 쿼리의 결과를 모니터링하고 쿼리가 결과를 반환한다는 사실을 기반으로 알림을 발생시키는 도구를 찾고 있습니다. (다른 필터도 환영합니다)SQL 쿼리 결과를 모니터링하는 도구

트랜잭션 테이블에서 오류를 관찰해야하며 내 sql 쿼리가 백그라운드에서 실행될 수 있으며 주기적으로 새로 고침하고 결과가있을 때 알림을 표시하는 것이 좋습니다.

Oracle DB에 연결해야하며 현재 PL/SQL Developer 또는 Oracle SQL Developer를 사용하고 있습니다.

가 바람직 나는 모든 데이터베이스 객체를 생성/수정하지 싶습니다 :

무료, OS 및 경량 솔루션 :

UPDATE를 선호했다. 우리는 이것을 고객 데이터베이스에서도 사용하고 싶습니다. 모든 고객이 Oracle Apps가 실행되는 DB를 수정할 수있는 라이센스를 가지고있는 것은 아닙니다.

고맙습니다.

+0

가 어떻게 알림을 원하는가 utl_mail.send 같은 것을 사용할 수 있습니까? 이메일? SMS? 화면의 메시지 상자? – APC

+0

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

+0

년, 만약 내가 물어 봐도, 어떻게 마침내 그것을 해결 했습니까? – kmonsoor

답변

0

저장 프로 시저에 쿼리를 넣으십시오. 거기에 모니터링/통지 코드를 작성하십시오.

3

DBMS_Scheduler를 사용하여 테이블을 쿼리 한 저장 프로 시저를 실행 한 다음 UTL_Mail을 사용하여 문제가 발생할 경우 전자 메일을 보내려면 어떻습니까?

0

저는 이것을 사용하고 아주 잘 작동합니다.

- 1. 프로그램을 만듭니다

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. 일정 프로그램을 만들기 :

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합니다. 그리고 마지막으로 작업을 만들기 위해 모두 함께 연결 :

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; 

이제

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' 
    ); 
관련 문제