如何监视plsql块语句

如何监视plsql块语句,plsql,oracle11g,Plsql,Oracle11g,我试图找出为什么insert和update语句在生产服务器上运行比在测试服务器上运行要长得多。我不知道如何监控块的状态,因为它正在SQLDeveloper中运行。插入这么多行之后,像rownum加sysdate这样的输出将是一个良好的开端 块运行时,是否有方法输出dbms_output.put_line语句 我目前正在Oracle 11g上运行SQL Developer 3.1.07 编辑以添加解决方案: PROCEDURE log_timestamp ( PI_trans_num

我试图找出为什么insert和update语句在生产服务器上运行比在测试服务器上运行要长得多。我不知道如何监控块的状态,因为它正在SQLDeveloper中运行。插入这么多行之后,像rownum加sysdate这样的输出将是一个良好的开端

块运行时,是否有方法输出dbms_output.put_line语句

我目前正在Oracle 11g上运行SQL Developer 3.1.07

编辑以添加解决方案:

PROCEDURE log_timestamp (
    PI_trans_num    number  
) IS
    PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    INSERT INTO timestamp_log (log_timestamp, trans_num)
    VALUES (SYSTIMESTAMP, PI_trans_num);
    COMMIT;
END log_timestamp;

dbms\u output.put\u line
语句仅在执行pl/sql块后才会显示,因此它们不适合在代码运行时识别问题

如果要跟踪长时间运行的进程,可以使用自治事务(这样就不会干扰当前事务)登录到数据库表并监视日志表


采用另一种方法,您可以查看在测试服务器和生产服务器上运行的insert和update语句的explain计划。这可能会识别生产系统上的差异,这将解释时间差异。

dbms\u输出。put\u行
语句仅在执行pl/sql块后显示,因此它们不适合在代码运行时识别问题

如果要跟踪长时间运行的进程,可以使用自治事务(这样就不会干扰当前事务)登录到数据库表并监视日志表


采用另一种方法,您可以查看在测试服务器和生产服务器上运行的insert和update语句的explain计划。这可能会确定生产系统上的差异,从而解释时间差异。

逐行监控PL/SQL性能的更好方法之一是使用DBMS_Profiler,它将为您提供每行的执行统计信息以及执行次数


当然,它不会诊断SQL执行问题,但会突出显示执行每条语句所花费的执行时间。

逐行监控PL/SQL性能的更好方法之一是使用DBMS_Profiler,它将为您提供每行的执行统计信息以及执行次数


当然,它不会诊断SQL执行问题,但会突出显示执行每条语句所花费的执行时间。

另一种方法是使用DBMS\u Application\u Info


通过设置“操作名称”,并通过v$session\u longops维护进度报告,您可以在v$session中向会话添加元数据以共享进度。

另一种方法是使用DBMS\u应用程序\u信息


您可以在v$session中将元数据添加到会话中,通过设置“操作名称”和通过v$session_longops维护进度报告来共享进度。

谢谢您的提示。我的编辑是否正确地将自治事务用作子流程?今天上午进行测试。工作起来很有魅力。再次感谢,这正是我想要的。谢谢你的提示。我的编辑是否正确地将自治事务用作子流程?今天上午进行测试。工作起来很有魅力。再次感谢,这正是我想要的。谢谢,这将有助于解决问题。我仍然需要自治_事务来跟踪block语句,看看是否需要终止作业。如果没有它,我很难估计语句需要多长时间才能运行。谢谢,这将有助于解决问题。我仍然需要自治_事务来跟踪block语句,看看是否需要终止作业。如果没有它,我很难估计这个声明需要多长时间才能运行。哇。谢谢你给我指这个包裹。这正是我想要的。用于监视会话对象的内置功能。哇。谢谢你给我指这个包裹。这正是我想要的。用于监视会话对象的内置功能。