我有一个由 DBMS_SCHEDULER 执行的 PL/SQL 块。它是上周开始的,现在应该已经完成了,但事实并非如此。我试图确定问题,但需要一些关于如何继续调试的建议。以下是事实。
1) 甲骨文 11g
2) PL/SQL 代码输出到日志表,我可以得到问题所在的一般区域,这就是我发现问题的方式。我无法获得关于它卡在哪里的行号。我不知道怎么做。
3) V$SESSION_LONGOPS 表显示用户/模式仍在运行,但日期都是过去几天。从那以后它就没有动摇过。
4) V$SESSION_LONGOPS 中的 OPNAME 在“收集表的索引统计”和“表扫描”之间拆分,用于一堆不同的表(第一个表 8 个,第二个表 8 个)。他们看起来是各种各样的桌子。对于每一行,SOFAR 和 TOTAL 值彼此相等。“Gather...”行全为零,而“Table Scan”行不为零但相等。
5) 如果我对 V$SESSION 进行查询,我的工作是活动的。
6) 我正在处理的表上有一个锁,但是我看不到在我的模式中正在播放的其他会话。
7) CPU 利用率很低。
是否可以更深入地查看正在执行的 PL/SQL 块?我可以在 V$SQL 中找到完整的 SQL,它向我显示了传入的原始块。我希望更深入地了解被调用的已编译自定义过程(行号等)。
关于锁,我可以看到 V$LOCKED_OBJECTS 中的锁分配给了我的一张表,是否有一张表可以显示被锁阻塞的进程?如果有的话,我想找到死锁。
非常感谢任何建议,
米