4

定期的に実行される SQL クエリの結果を監視し、クエリが結果を返すという事実に基づいて通知を生成するツールを探しています。(他のフィルターは大歓迎です)

トランザクション テーブルでエラーを監視する必要があります。SQL クエリをバックグラウンドで実行し、定期的に更新して、結果があれば通知を表示できると便利です。

Oracle DB に接続する必要があり、現在 PL/SQL Developer または Oracle SQL Developer を使用しています。

無料、OS、および軽量のソリューションが推奨されます:)

アップデート:

できれば、データベース オブジェクトを作成/変更したくありません。これをクライアントのデータベースでも使用したいと考えていますが、すべてのクライアントが Oracle Apps が実行されている DB を変更するライセンスを持っているわけではありません。

前もって感謝します

4

3 に答える 3

3

DBMS_Scheduler を使用して、テーブルをクエリするストアド プロシージャを実行し、UTL_Mail を使用して問題が発生した場合に電子メールを送信するのはどうですか?

于 2009-12-02T15:08:35.217 に答える
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. 最後に、両方をリンクして 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;

これで、utl_mail.send のようなものを使用できます

begin
 UTL_MAIL.SEND_ATTACH_VARCHAR2
(
        sender => 'username@whatever.co.uk'
       ,recipients => 'username@whatever.co.uk,username@whatever.co.uk,username@whatever.co.uk,username@whatever.co.uk'
       ,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'
   );
于 2011-10-11T15:26:23.637 に答える
0

クエリをストアド プロシージャに入れます。そこに監視/通知コードを用意してください。

于 2009-12-02T13:14:19.813 に答える