我已经使用 sql server 数据库多年,并且习惯于使用 sql server profiler 之类的工具来跟踪特定数据库上的所有查询。
我的问题是 - 如何用 oracle 数据库做同样的事情。我正在使用 sql oracle developer version 19.2,但我没有看到任何用于跟踪 DB 的选项。
我也检查了这个问题并在那里尝试了几个工具(这个问题很老)但没有成功。我真的需要 oracle 企业经理来做这样一个基本的事情吗?(这是答案之一的建议)。
我的应用程序是用 .NET 编写的 - 为什么在 oracle 中很难跟踪该应用程序正在触发的查询?
在 Oracle 数据库中进行跟踪很困难,原因如下:
如果您只需要没有执行计划和详细时间的 SQL 语句,您可以修改代码以使用“ALTER SESSION SET SQL_TRACE=TRUE”(在数据库服务器端生成的原始跟踪文件)启用 SQL 跟踪。
如果您有专用的数据库实例(如 Oracle XE),您可以在数据库级别启用 SQL 跟踪(ALTER SYSTEM SET SQL_TRACE=TRUE)并获取所有跟踪文件。
以下是 Oracle 中 SQL 跟踪选项的最佳总结之一: https ://oracle-base.com/articles/misc/sql-trace-10046-trcsess-and-tkprof
您不需要 OEM 来启用跟踪,但您需要 DBA 权限或与您的 DBA 一起使用 SQL 跟踪。
alter session set sql_trace=true
仅获取当前会话的 SQL 查询文本就足够了。导出/导入到本地系统也可以只获取 SQL 查询文本。