您的位置:首页 > 数据库 > Oracle

Oracle视图user_tab_modifications

2014-03-27 20:35 337 查看
user_tab_modifications收集自采集信息以来被改变表的dml操作量数据,一个表只有数据量被改变10%以上才会被定期采集信息,也可以执行过程

DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO进行实时采集。

由于user_tab_modifications收集的信息是自第一次收集以来的信息,所以要了解某一段时间对某表的dml操作情况,应该做个快照差。

下面给个例子

现在有表t1

SQL> select * from t2;

ID NAME

---------- --------------------------------

1 scott

2 fishcat

查询user_tab_modifications无记录说明没做任何信息收据

SQL> select * from user_tab_modifications where table_name='T2';

no rows selected

使用DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO更新下看看结果

SQL> conn / as sysdba

Connected.

SQL> grant ANALYZE any to scott;

Grant succeeded.

SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL procedure successfully completed.

SQL> select * from user_tab_modifications where table_name='T2';

no rows selected

可以看出依然没有结果

对t2插入一条数据看看

SQL> insert into t2 values(3,'xyc');

1 row created.

SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL procedure successfully completed.

SQL> select table_name,inserts,updates,deletes,timestamp,drop_segments from user_tab_modifications where table_name='T2';

TABLE_NAME INSERTS UPDATES DELETES TIMESTAMP DROP_SEGMENTS

------------------------------ ---------- ---------- ---------- ------------ -------------

T2 1 0 0 20-FEB-13 0

可以看到一条insert记录inserts为1,下面继续

SQL> update t2 set name='xycxyc' where id=3;

1 row updated.

SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL procedure successfully completed.

SQL> select table_name,inserts,updates,deletes,timestamp,drop_segments from user_tab_modifications where table_name='T2';

TABLE_NAME INSERTS UPDATES DELETES TIMESTAMP DROP_SEGMENTS

------------------------------ ---------- ---------- ---------- ------------ -------------

T2 1 1 0 20-FEB-13 0

SQL> insert into t2 values(3,'xyc');

1 row created.

SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL procedure successfully completed.

SQL> select table_name,inserts,updates,deletes,timestamp,drop_segments from user_tab_modifications where table_name='T2';

TABLE_NAME INSERTS UPDATES DELETES TIMESTAMP DROP_SEGMENTS

------------------------------ ---------- ---------- ---------- ------------ -------------

T2 2 1 0 20-FEB-13 0

可以看到inserts和updates的更改

USER_TAB_MODIFICATIONS还记录了表是否被truncate和分区,子分区是否有删除过的记录,参考:

Related Views

DBA_TAB_MODIFICATIONS
describes such information for all tables in the database.

USER_TAB_MODIFICATIONS
describes such information for tables owned by the current user. This view does not display the
TABLE_OWNER
column.

Note:
These views are populated only for tables with the
MONITORING
attribute. They are intended for statistics collection over a long period of time. For performance reasons, the Oracle Database does not populate these views immediately
when the actual modifications occur. Run the
FLUSH_DATABASE_MONITORING_INFO
procedure in the
DBMS_STATS
PL/SQL package to populate these views with the latest information. The
ANALYZE_ANY
system
privilege is required to run this procedure.

ColumnDatatypeNULLDescription
TABLE_OWNER
VARCHAR2(30)
Owner of the modified table
TABLE_NAME
VARCHAR2(30)
Name of the modified table
PARTITION_NAME
VARCHAR2(30)
Name of the modified partition
SUBPARTITION_NAME
VARCHAR2(30)
Name of the modified subpartition
INSERTS
NUMBER
Approximate number of inserts since the last time statistics were gathered
UPDATES
NUMBER
Approximate number of updates since the last time statistics were gathered
DELETES
NUMBER
Approximate number of deletes since the last time statistics were gathered
TIMESTAMP
DATE
Indicates the last time the table was modified
TRUNCATED
VARCHAR2(3)
Indicates whether the table has been truncated since the last analyze (
YES
) or not (
NO
)
DROP_SEGMENTS
NUMBER
Number of partition and subpartition segments dropped since the last analyze
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: