我们使用闭源应用程序,但内置的报告工具不是很好,所以我们开始使用单独的数据库报告应用程序来生成我们的报告。
我需要将一份报告复制到我们的新报告应用程序中。
我想在我们的旧应用程序中运行报告并监控它发送到 Oracle 数据库的查询,以便我可以将这些查询复制到我们的新报告应用程序。
我怎样才能做到这一点?
我们使用闭源应用程序,但内置的报告工具不是很好,所以我们开始使用单独的数据库报告应用程序来生成我们的报告。
我需要将一份报告复制到我们的新报告应用程序中。
我想在我们的旧应用程序中运行报告并监控它发送到 Oracle 数据库的查询,以便我可以将这些查询复制到我们的新报告应用程序。
我怎样才能做到这一点?
启动旧应用程序并登录。在数据库中找到您的会话(假设:sid=12,serial#=3456),并为该会话启用 SQL 跟踪,例如:
启用 SQL 跟踪的方法有多种,这只是其中一种。启用捕获绑定值(如上)可能很有用,因此您可以将报表输入参数值与查询绑定变量相匹配。
您可以找到跟踪文件的名称:
您可以从应用程序开始运行您的报告,并按照跟踪文件的内容(甚至
tail -f
,但它对人类不友好)。完成后,禁用跟踪:您可以阅读原始跟踪文件(如果您有足够的耐心并且对更多细节感兴趣),但如果您只想要查询文本,您可以
tkprof
在跟踪文件上使用(例如:orcl_ora_6789.trc):添加后,tkprof将
aggregate=no
不会聚合 SQL 语句,它会生成一个输出,其中保留了语句执行的顺序。没有它,您可以聚合同一 SQL 的多个执行并对它们进行排序,典型的用例是按经过时间排序,因此您的输出从运行时间最长的查询开始:您可以使用 v$sessions 表查看所有活动查询。如果您使用的是 PL/SQL Developer,然后是工具 > 会话,然后是活动会话。
您可以在数据库中找到所有活动会话,如果查看这些会话的“SQL 文本”,您将在后端运行查询。
除此之外,您还可以参考以下列:机器、程序、登录时间、模式名称等以查明确切的会话