【问题标题】:Tool for monitoring SQL query results needed需要用于监控 SQL 查询结果的工具
【发布时间】:2010-12-22 08:23:15
【问题描述】:

我正在寻找一种工具来监视定期运行的 sql 查询的结果,并根据查询返回任何结果这一事实发出通知。 (欢迎使用任何其他过滤器)

我需要查看事务表是否有错误,如果我的 sql 查询可以在后台运行、定期刷新并在有任何结果时显示通知,那就太好了。

我需要连接到 Oracle DB,我目前使用 PL/SQL Developer 或 Oracle SQL Developer。

首选免费、操作系统和轻量级解决方案 :)

更新:

我最好不要创建/修改任何数据库对象。我们也想在我们的客户数据库上使用它,但并非所有客户都有权修改其 Oracle 应用程序所在的数据库。

提前谢谢你

【问题讨论】:

标签: sql oracle monitor


【解决方案1】:

如何使用 DBMS_Scheduler 运行一个查询表的存储过程,然后在出现问题时使用 UTL_Mail 发送电子邮件?

【讨论】:

    【解决方案2】:

    将查询放入存储过程中。把你的监控/通知代码放在那里。

    【讨论】:

      【解决方案3】:

      我使用它,它工作得非常好。

      -- 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'
         );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多