Oracle - 来自v $ session_longops的定时采样

时间:2010-04-27 20:49:49

标签: oracle sqlplus performance

我试图跟踪一些运行速度太慢的程序(并且似乎继续变慢)的性能。我正在使用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)

2 个答案:

答案 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。请参阅262728Oracle Database Administrator's Guide章节。