问题描述
嗨,
在我们使用的应用程序中 (使用Oracle作为数据库来存储数据),当我们更新和保存数据时,它会在内部调用plsql包或调用update语句的过程。
我们已经使用db级sql跟踪跟踪了UPDATE语句。但是我们要跟踪在保存期间触发UPDATE语句的plsql包或过程。
我做了一些研究,发现我们可以使用 “ALTER SESSION SET plsql_debug = TRUE;” 启用PLSQL跟踪,然后跟踪所有调用。
但是我意识到此方法仅适用于特定会话,在该会话中我们启动会话,启用plsql跟踪,然后调用包或过程。
那么,有没有办法从数据库中跟踪plsql代码,它是由应用程序调用的?
请帮忙!
山姆
在我们使用的应用程序中 (使用Oracle作为数据库来存储数据),当我们更新和保存数据时,它会在内部调用plsql包或调用update语句的过程。
我们已经使用db级sql跟踪跟踪了UPDATE语句。但是我们要跟踪在保存期间触发UPDATE语句的plsql包或过程。
我做了一些研究,发现我们可以使用 “ALTER SESSION SET plsql_debug = TRUE;” 启用PLSQL跟踪,然后跟踪所有调用。
但是我意识到此方法仅适用于特定会话,在该会话中我们启动会话,启用plsql跟踪,然后调用包或过程。
那么,有没有办法从数据库中跟踪plsql代码,它是由应用程序调用的?
请帮忙!
山姆
专家解答
如果您控制代码,那么最好的选择就是对其进行操作。
http://asktom.oracle.com/Misc/instrumentation.html
但是,如果不能,那么您仍然可以从plsql跟踪中受益
1) 创建一个登录触发器来调用
dbms_trace.set_plsql_trace(dbms_trace.TRACE_ENABLED_CALLS dbms_trace.TRACE_LIMIT);
2) 仅在调试模式下编译有问题的过程
使用 “trace_limit” 将意味着你只会得到最后8192个调用来阻止事情的弹道。
http://asktom.oracle.com/Misc/instrumentation.html
但是,如果不能,那么您仍然可以从plsql跟踪中受益
1) 创建一个登录触发器来调用
dbms_trace.set_plsql_trace(dbms_trace.TRACE_ENABLED_CALLS dbms_trace.TRACE_LIMIT);
2) 仅在调试模式下编译有问题的过程
使用 “trace_limit” 将意味着你只会得到最后8192个调用来阻止事情的弹道。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




