【问题标题】:How to find number of times record is accessed for oracle如何查找oracle访问记录的次数
【发布时间】:2014-04-28 21:12:44
【问题描述】:

我的应用程序中有 oracle 10g 数据库。如何找出特定记录在特定表中被访问了多少次。

【问题讨论】:

  • 你找不到。
  • @juergend 能否查到是否有记录根本没有被访问?
  • 我对此表示怀疑。你需要在你的程序逻辑中实现它。
  • 如果您在表中添加包含插入日期的列,则可以。您可以为任何列设置默认值。如果在插入时将其留空,则数据库将使用默认值。使用当前时间作为默认值,数据库会自动插入。

标签: oracle oracle10g


【解决方案1】:

通常,要做到这一点,您需要通过存储过程访问表中的记录,而不是通过 SELECT 语句。

但是,可以这样简化:

  1. 您添加了一个要求,即您的表中的任何 SELECT 都应该有一个函数调用:

    select yourtable.* from yourtable
    where yourfunct('yourtable', yourtable.key) = 'done'
    

    这可以通过查看和撤销读取表本身的权限轻松完成

  2. 在您的函数中,您可以将表/密钥对保存在包中的表中(您不需要启动事务来执行此操作),或者您启动自主事务并写入真实表。

    写入包中的变量并不安全,但要快得多。

    创建一个事务比较慢,但它会保证一个结果。

我个人的偏好是质疑原始任务。也许创建一种记录数据请求的“日志条目”表就足够了。

【讨论】:

  • #1 可能会通过使用virtual private database 实现自动化。 VPD 允许函数返回旨在控制访问的谓词。该函数可以始终返回 true,但会产生记录访问请求的副作用。但我怀疑是否有可能以 100% 的准确度记录所有访问,没有人真正知道 SQL 语句的各个部分将运行多少次。 VPD 只能用于粗略估计。
猜你喜欢
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多