使用 DBMS_APPLICATION_INFO 进行实时监控
dbms_application_info 包,用于交换环境中执行处理的时间点信息。
让一个长时间运行的PL/SQL程序提供处理信息。以下代码段每隔1000 行记录就更新应用程序的信息,内容主要是处理的记录数和花费的时间。
SQL> select count(*) from s_employee_test; COUNT(*)---------- 475136SQL> select username,sid,serial#,module,action from v$session where username='PLSQL'; USERNAME SID SERIAL# MODULE ACTION------------------------------ ---------- ---------- ------------------------------------------------ --------------------------------PLSQL 9 309 PL/SQL Developer SQL Window - select username,sidPLSQL 132 64 PL/SQL Developer Command Window - NewPLSQL 192 187 records Processed:74000 Elapsed :20.37 secPLSQL 197 239 PL/SQL Developer Main sessionSQL> select username,sid,serial#,module,action from v$session where username='PLSQL'; USERNAME SID SERIAL# MODULE ACTION------------------------------ ---------- ---------- ------------------------------------------------ --------------------------------PLSQL 9 309 PL/SQL Developer SQL Window - select username,sidPLSQL 132 64 PL/SQL Developer Command Window - NewPLSQL 192 187 records Processed:94000 Elapsed :25.82 secPLSQL 197 239 PL/SQL Developer Main session......SQL> select username,sid,serial#,module,action from v$session where username='PLSQL'; USERNAME SID SERIAL# MODULE ACTION------------------------------ ---------- ---------- ------------------------------------------------ --------------------------------PLSQL 9 309 PL/SQL Developer SQL Window - select username,sidPLSQL 132 64 PL/SQL Developer Command Window - NewPLSQL 192 187 records Processed:475136 Elapsed :130.18 secPLSQL 197 239 PL/SQL Developer Main session
最后一次查询的时间是在 PL/SQL 程序单元已经完成时。
以上演示了一种特定环境的有价值的技巧,并提供了实时监控的机制,这样能更容易地准确测量出程序已经运行的时间[/color],并可估算出程序还要多长时间才能完成[color=red]。