查看Oracle对象使用历史记录

时间:2014-07-23 15:32:48

标签: oracle database-administration

我们正在清理我们的数据库,我们有一些数据库对象已经使用了近5年。所以它已经过时了。

有没有办法查看视图的使用次数以及上次使用时的时间?

    ObjName   | Num times used  | Last Used |
---------------------------------------------
    vw_PSEUDO |  23             | 13/06/2014
    vw_ABC123 |  9999           | 23/07/2014

1 个答案:

答案 0 :(得分:1)

  SELECT   *
    FROM   V$SQLAREA
   WHERE   UPPER (SQL_TEXT) LIKE '%NAME_OF_YOUR_VIEW%'
ORDER BY   FIRST_LOAD_TIME DESC;

V $ SQLAREA是一个系统视图,用于存储所有已启动的查询,因此,如果某个实体查询了您的视图,您将在V $ SQLAREA中找到包含视图名称的记录。

字段FIRST_LOAD_TIME是一个字符串,显示您的视图使用的日期和时间。

这是为了查找Oracle用户最近未使用的视图:

SELECT   ALFA.VIEW_NAME,
         (SELECT   COUNT ( * )
            FROM   V$SQLAREA
           WHERE   UPPER (SQL_TEXT) LIKE '%' || ALFA.VIEW_NAME || '%')
  FROM   USER_VIEWS ALFA;

这是为了查找Oracle用户最近未使用的对象,将搜索范围限制为前100个对象(rownum< = 100):

  SELECT   ALFA.OBJECT_NAME,
           (SELECT   COUNT ( * )
              FROM   V$SQLAREA
             WHERE   UPPER (SQL_TEXT) LIKE '%' || ALFA.OBJECT_NAME || '%')
              COUNT
    FROM   USER_OBJECTS ALFA
   WHERE   ROWNUM <= 100
ORDER BY   COUNT DESC;

警告:在我的系统中,2014年7月23日,最低FIRST_LOAD_TIME为:

select min(first_load_time) from v$sqlarea;

2014-06-14/19:29:33

所以我系统中的v $ sqlarea保留了大约39天。

请不要忘记夜间批次可以使用APPARENTLY UNUSED表进行数据库备份,因此您无法在V $ SQLAREA中查找有关备份表的查询或语句,尽管这些表在夜间使用为了备份主表。