Oracle跟踪所有选择

Oracle跟踪所有选择,oracle,Oracle,我需要做一件事,但我不知道怎么做 问题是: 我在Oracle数据库上有大约1000个表和许多进程 每个进程在一个或多个表上执行一个或多个SELECT。 因为几乎不可能在源代码中找到哪个进程在哪个表上选择哪个进程,所以我希望在每个表上的SELECT上都有某种触发器。 我的想法是,我将一个接一个地启动流程,以便能够看到哪些表将被查询 我知道SELECT上没有触发器,但还有其他的吗 我需要一次性完成这项工作,只是为了恢复必要的信息,它不会每天都运行。假设您可以将术语中的“流程”映射到特定的Oracle

我需要做一件事,但我不知道怎么做

问题是:

我在Oracle数据库上有大约1000个表和许多进程

每个进程在一个或多个表上执行一个或多个SELECT。 因为几乎不可能在源代码中找到哪个进程在哪个表上选择哪个进程,所以我希望在每个表上的SELECT上都有某种触发器。 我的想法是,我将一个接一个地启动流程,以便能够看到哪些表将被查询

我知道SELECT上没有触发器,但还有其他的吗


我需要一次性完成这项工作,只是为了恢复必要的信息,它不会每天都运行。

假设您可以将术语中的“流程”映射到特定的Oracle会话,您可以。这将显示该会话执行的所有SQL语句


您还可以从任何客户机(请注意,三层环境中的“客户机”是应用程序服务器)执行S。然而,SQL*Net跟踪往往不那么容易使用。

假设您可以将术语中的“进程”映射到特定的Oracle会话,那么您可以。这将显示该会话执行的所有SQL语句

您还可以从任何客户机(请注意,三层环境中的“客户机”是应用程序服务器)执行S。然而,SQL*Net跟踪往往不那么容易使用。

您可以激活它。您可以使用以下选项审核所有选择项:

AUDIT SELECT TABLE;
您可以按会话指定
,以便每个会话访问的每个表只将一条记录写入审核跟踪

您的参数必须设置为
DB
OS
。如果设置为
DB
,审计跟踪将写入
SYS.AUD$
表。

您可以激活。您可以使用以下选项审核所有选择项:

AUDIT SELECT TABLE;
您可以按会话指定
,以便每个会话访问的每个表只将一条记录写入审核跟踪


您的参数必须设置为
DB
OS
。如果将其设置为
DB
,审核跟踪将写入
SYS.AUD$
表。

此解决方案不是最好的,因为我会有很多日志。每个过程都有很多选择,因此几乎不可能从日志文件(巨大的日志文件)@CC中检索到必要的信息-我不确定我是否遵循了反对意见。如果您想查看每个请求的文本SQL(以及可能的绑定变量),那么您似乎需要并且想要相当多的日志记录。若您只关心SQL的一个子集,那个么有更简单的方法,但这不是您最初要求的)。我只需要每个进程的表名。@CC-Ah,好的。那么Vincent关于启用审计的建议可能就是你想要的。这个解决方案不是最好的,因为我会有很多日志。每个过程都有很多选择,因此几乎不可能从日志文件(巨大的日志文件)@CC中检索到必要的信息-我不确定我是否遵循了反对意见。如果您想查看每个请求的文本SQL(以及可能的绑定变量),那么您似乎需要并且想要相当多的日志记录。若您只关心SQL的一个子集,那个么有更简单的方法,但这不是您最初要求的)。我只需要每个进程的表名。@CC-Ah,好的。那么Vincent关于启用审计的建议可能正是你想要的。是的,这可能是解决我问题的最好办法。我只需要和DBA谈谈,激活审计跟踪,因为目前它已被禁用。感谢您的回答。请注意,在*nix系统上,操作系统日志记录会转到您选择的目录。在windows上,它会转到事件日志。是的,这可能是解决我的问题的最佳解决方案。我只需要和DBA谈谈,激活审计跟踪,因为目前它已被禁用。感谢您的回答。请注意,在*nix系统上,操作系统日志记录会转到您选择的目录。在windows上,它会转到事件日志。