我需要创建一个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以上。
这有可能吗?