如何查找上次在oracle中查询表的时间

时间:2011-10-06 08:15:13

标签: sql oracle oracle10g

我想获得有关何时在oracle中查询表的信息。 是否有任何登录oracle的日志显示查询。我正在环顾v $ sqlarea和v $ sqltext,但系统管理员不允许我访问这些表。

1 个答案:

答案 0 :(得分:2)

在默认安装中,我知道无法可靠地获取此信息。您可能能够捕获最近在v $ sql *视图中运行的SQL语句,但v $ sql *视图本质上是瞬态的,用于支持数据库的正常操作。声明可能会老化,因此它不是一种可靠的审计方式。

获取此信息的正确可靠方法是什么? Oracle审计。它包含记录有关如何触摸数据库对象的细粒度信息的功能。

在这种情况下,您需要调查AUDIT SELECT。在执行审计的基本配置(通常由DBA完成)之后,可以为特定的表设置SELECT审计,如下所示:

  

对员工进行审计选择;

当用户直接或通过视图从员工SELECTS时,记录将被写入审计跟踪(文本文件或SYS.AUD $,具体取决于配置)。该路径将包含用户名,时间戳,table_name和一些其他信息,以帮助您确定用户当时正在执行的操作。

以下是审计的9i参考,其中包含有关审计选项的信息:​​http://download.oracle.com/docs/cd/B10500_01/server.920/a96524/c25audit.htm

请注意细粒度审核可能会减慢速度。无论您正在审核什么,现在都必须完成一个新的活动层(写入审计跟踪)。如果您有业务需要知道谁可以看到哪些数据是可以理解的,但请确保了解性能影响。