DBA_TAB_MODIFICATIONS 视图学习

通过测试来学习DBA_TAB_MODIFICATIONS视图的作用

DBA_TAB_MODIFICATIONS describes modifications to all tables in the database that have been modified since the last time statistics were gathered on the tables. Its columns are the same as those in "ALL_TAB_MODIFICATIONS".

DBA_TAB_MODIFICATIONS描述的是收集完统计信息之后的数据库中所有表的DML操作。
Note:
This view is populated only for tables with the MONITORING attribute. It is intended for statistics collection over a long period of time. For performance reasons, the Oracle Database does not populate this view immediately when the actual modifications occur. Run the FLUSH_DATABASE_MONITORING_INFO procedure in the DBMS_STATS PL/SQL package to populate this view with the latest information. The ANALYZE_ANY system privilege is required to run this procedure.
SQL> desc dba_tab_modifications;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 TABLE_OWNER                                        VARCHAR2(128)
 TABLE_NAME                                         VARCHAR2(128)
 PARTITION_NAME                                     VARCHAR2(128)
 SUBPARTITION_NAME                                  VARCHAR2(128)
 INSERTS                                            NUMBER    ##插入
 UPDATES                                            NUMBER  ##更新
 DELETES                                            NUMBER  ##删除
 TIMESTAMP                                          DATE
 TRUNCATED                                          VARCHAR2(3)  ##截断
 DROP_SEGMENTS                                      NUMBER

SQL> 
SQL> select * from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
    CON_ID
----------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
         0
SQL> create table t1 as select *  from dba_objects;

Table created.
SQL> select table_owner,table_name,inserts,UPDATES,deletes,timestamp,truncated,drop_segments from sys.dba_tab_modifications where table_name=‘T1‘;

no rows selected

SQL> update t1 set object_id=1 where object_id=30;

1 row updated.

SQL> select table_owner,table_name,inserts,UPDATES,deletes,timestamp,truncated,drop_segments from sys.dba_tab_modifications where table_name=‘T1‘;

no rows selected

SQL> exec dbms_stats.flush_database_monitoring_info;

PL/SQL procedure successfully completed.

SQL> select table_owner,table_name,inserts,UPDATES,deletes,timestamp,truncated,drop_segments from sys.dba_tab_modifications where table_name=‘T1‘;

TABLE_OWNER
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
   INSERTS    UPDATES    DELETES TIMESTAMP               TRU DROP_SEGMENTS
---------- ---------- ---------- ----------------------- --- -------------
SYS
T1
         0          1          0 19-FEB-2018 06:59:33    NO              0

SQL> exec dbms_stats.flush_database_monitoring_info;

PL/SQL procedure successfully completed.

SQL> select table_owner,table_name,inserts,UPDATES,deletes,timestamp,truncated,drop_segments from sys.dba_tab_modifications where table_name=‘T1‘;

TABLE_OWNER
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
   INSERTS    UPDATES    DELETES TIMESTAMP               TRU DROP_SEGMENTS
---------- ---------- ---------- ----------------------- --- -------------
SYS
T1
         0          1          0 19-FEB-2018 06:59:33    NO              0

SQL> exec dbms_stats.gather_table_stats(‘SYS‘,‘T1‘);

PL/SQL procedure successfully completed.

SQL> select table_owner,table_name,inserts,UPDATES,deletes,timestamp,truncated,drop_segments from sys.dba_tab_modifications where table_name=‘T1‘;

no rows selected

SQL>

小结:
1、dml操作不提交,也会记录到视图中。
2、考虑到性能问题,我们需要手动flush,视图中才会有记录。
3、收集完统计信息,视图中相关表记录置空,与官方文档描述一样

测试二:

SQL> alter system set "_dml_monitoring_enabled"=false scope=memory;

System altered.

SQL> delete from t1;

90974 rows deleted.

SQL> select table_owner,table_name,inserts,UPDATES,deletes,timestamp,truncated,drop_segments from sys.dba_tab_modifications where table_name=‘T1‘;

no rows selected

SQL> exec dbms_stats.flush_database_monitoring_info;

PL/SQL procedure successfully completed.

SQL> select table_owner,table_name,inserts,UPDATES,deletes,timestamp,truncated,drop_segments from sys.dba_tab_modifications where table_name=‘T1‘;

no rows selected

SQL> 

小结:
关闭监视器以后,不管我们做任何操作,此视图都不会记录dml的相关操作。

原文地址:http://blog.51cto.com/roidba/2071855

时间: 2024-11-05 19:40:22

DBA_TAB_MODIFICATIONS 视图学习的相关文章

多视图学习(multiview learning)

多视图学习(multi-view learning) 前期吹牛:今天这一章我们就是来吹牛的,刚开始老板在和我说什么叫多视图学习的时候,我的脑海中是这么理解的:我们在欣赏妹子福利照片的时候,不能只看45度角的吧,要不那样岂不是都是美女了,这还得了.所以我们要看各个角度的照片,打击盗版美女,给大家创建一个真诚的少点欺骗的和谐世界.所以说,多视图学习就是360度,全方位无死角的欣赏(学习)然后得到最接近真实值的判定. 话说那么一天啊,一个人和一个蚂蚁在对话,他们看着一个米饭粒,人说,这个米饭粒胖嘟嘟的

转:oracle物化视图学习笔记

最近学习了一下物化视图,正好经理不在,把学习结果贴出来供大家一起研究一下吧. 先看一下物化视图的大概含义吧,感觉baidu的定义还不错 Baidu代码   物化视图,它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果.物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能:物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL 语句的正确性和有效性:物化视图需要占用存储空间:当基表发生变化时,物化视

【转】mysql的union、left join、 right join、 inner join和视图学习

1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样.此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all. 例...... 1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样.此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all. 例如: select id,sum(num) from (select * from ta union all select * f

15、DNS视图 学习笔记

view 视图,逻辑的DNS服务器,不一样的请求有意返回不一样的值 目标:120段解析返回120段的IP,其他解析返回130段IP 1.安装bind [[email protected] ~]# yum -y install bind 2.配置主配置文件 [[email protected] ~]# sed "/^\//d" /etc/named.conf options { directory       "/var/named"; dump-file      

WPF数据视图学习

当你绑定集合到ItemsControl,数据视图被安静地在幕后创造.视图位于数据源和绑定控件之间.数据视图是通往数据源的一个窗口.它跟踪当前项目,它支持诸如排序,过滤,和分组特征.这些特征独立于数据对象本身,意味着你能以不同的方式.在窗口的不同部分(或应用的不同部分)绑定相同的数据.例如,你能绑定相同的产品集合到两个不同的列表但是过滤他们显示不同的记录. 视图对象依赖于数据对象的类型.所有的视图派生自CollectionView,但是两个特殊的实现派生自CollectionView:ListCo

表视图学习笔记

//  MainViewController.m //  UI_TableView界面传值 // //  Created by dllo on 15/8/7. //  Copyright (c) 2015年 cml. All rights reserved. // #import "MainViewController.h" #import "SecondViewController.h" // 4.签订协议 @interface MainViewControlle

IOS 开发指南 第5章 委托协议 数据源协议 高级视图学习

1 委托对象负责控制控件的外观和对控件的事件和状态作出反应 数据源对象是控件与应用数据(model)的桥梁,一般是必须实现的. 2 选择器 UIPickerView 为用户提供选择 1)日期选择器 UIDatePicker 设置属性检查器中的各个属性-代码 -setDateFormat:设置日期格式 -stringFromDate:获取时间 - (IBAction)onclick:(id)sender { NSDate * theDate = self.datePicker.date;获取选中日

视图(学习笔记)

视图 视图是从一个或几个实体表(或视图)导出的表.它与实体表不同,视图本身是一个不包含任何真实数据的虚拟表.数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的实体表中.所以实体表中的数据发生变化,从视图中查询出的数据也就随之改变了.从这个意义上讲,视图就像一个窗口,通过它可以看到数据库中自己感兴趣的数据及其变化. 视图的优点: 视图能够简化用户的操作: 视图使用户能以多种角度看待同一数据: 视图对重构数据库提供了一定程度的逻辑独立性: 视图能够对机密数据提供安全保护: 适当

[转]mysql视图学习总结

转自:http://www.cnblogs.com/wangtao_20/archive/2011/02/24/1964276.html 一.使用视图的理由是什么?1.安全性.一般是这样做的:创建一个视图,定义好该视图所操作的数据.之后将用户权限与视图绑定.这样的方式是使用到 了一个特性:grant语句可以针对视图进行授予权限.2.查询性能提高. 3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大.那么可以使用虚拟表的形式达到少修改的效果. 这是在实际开发中比较有用的 例子:假如因为某