我试图跟踪一些运行速度太慢的程序(并且似乎继续变慢)的性能。我正在使用v $ session_longops来跟踪已完成的工作量,并且我有一个查询(sofar/((v$session_longops.LAST_UPDATE_TIME-v$session_longops.start_time)*24*60*60)
),它告诉我工作的完成率。
我希望能够捕捉到工作的速度以及它随时间的变化。现在,我只是手动重新执行查询,然后复制/粘贴到Excel。不是很理想,特别是当手机响铃或其他事情发生中断我的采样频率时。
有没有办法让SQL * Plus中的脚本运行查询evern n 秒,将结果假脱机到文件,然后继续执行此操作直到作业结束?
(Oracle 10g)
答案 0 :(得分:3)
Tanel Poder的鲷鱼script在积极监控表现方面做得非常出色。 它有
的参数<seconds_in_snap> - the number of seconds between taking snapshots
<snapshot_count> - the number of snapshots to take ( maximum value is power(2,31)-1 )
它使用PL / SQL并调用DBMS_LOCK.SLEEP
答案 1 :(得分:1)
如果您可以使用PL / SQL而不是SQL * Plus脚本,则可以考虑使用Oracle Scheduler。请参阅26的27,28和Oracle Database Administrator's Guide章节。