我想获得有关何时在oracle中查询表的信息。 是否有任何登录oracle的日志显示查询。我正在环顾v $ sqlarea和v $ sqltext,但系统管理员不允许我访问这些表。
答案 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
请注意细粒度审核可能会减慢速度。无论您正在审核什么,现在都必须完成一个新的活动层(写入审计跟踪)。如果您有业务需要知道谁可以看到哪些数据是可以理解的,但请确保了解性能影响。