Oracle检测长时间运行的SQL的过程

时间:2017-06-07 12:33:58

标签: sql oracle stored-procedures

我需要创建一个SQL过程,它可以检测运行时间超过特定时间段的非DBMS用户的任何长时间运行的SQL。我通过Select Statement获得了所有相关信息:

    select s.username, s.machine, db.name, s.last_call_et, sq.sql_fulltext, s.sql_id, s.status, s.serial#
    from v_$session s, v_$sql sq, dba_users d, v$database db
    where s.sql_id = sq.sql_id
    and s.username = d.username
    and s.status  = 'ACTIVE'
    and s.last_call_et > 50
    and d.default_tablespace <> 'SYSAUX'
    and d.default_tablespace <> 'SYSTEM';

我现在的问题是,如何将SELECT语句中的数据插入到两个表中(dba_long_sqlstat,dba_hist_long_sqlstat),如果长时间运行的SQL在同一个数据库中检测到一次以上,那么DBA_HIST_LONG_SQLSTAT中应该只有一个记录。在DBA_LONG_SQLSTAT表中,没有相同SQL的记录数,只是记录不应该保持24h以上。

这有可能吗?

0 个答案:

没有答案