DBA_TAB_MODIFICATIONS 视图学习
admin
2023-04-21 20:04:05
0

通过测试来学习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的相关操作。

相关内容

热门资讯

今日重大消息“新道游炸/金/花... 今日重大消息“新道游炸/金/花到底有挂吗?”(确实真的有挂)您好,新道游炸/金/花这个游戏其实有挂的...
重磅消息“鱼虾蟹透视到底是不是... 网上科普关于“鱼虾蟹透视有没有挂”话题很是火热,小编也是针对鱼虾蟹透视作*弊开挂的方法以及开挂对应的...
今日重大发现“万圣节消除大作战... 家人们!今天小编来为大家解答万圣节消除大作战透视挂怎么安装这个问题咨询软件客服徽9752949的挂在...
玩家最新攻略“陕西奇迹棋牌到底... 有 亲,根据资深记者爆料陕西奇迹棋牌是可以开挂的,确实有挂(咨询软件无需...
【第一消息】“陕麻圈到底有挂吗... 有 亲,根据资深记者爆料陕麻圈是可以开挂的,确实有挂(咨询软件无需打开直...
【第一资讯】“好玩贰柒拾是不是... 网上科普关于“好玩贰柒拾有没有挂”话题很是火热,小编也是针对好玩贰柒拾作*弊开挂的方法以及开挂对应的...
终于了解“新广西老友麻将到底有... 终于了解“新广西老友麻将到底有挂吗?”(透视曝光猫腻)您好,新广西老友麻将这个游戏其实有挂的,确实是...
今日重大通报“越乡游义乌麻将有... 网上科普关于“越乡游义乌麻将有没有挂”话题很是火热,小编也是针对越乡游义乌麻将作*弊开挂的方法以及开...
【第一财经】“推大石有没有挂?... 【第一财经】“推大石有没有挂?”(透视曝光猫腻)您好,推大石这个游戏其实有挂的,确实是有挂的,需要了...
最新引进“免安装麻将机控器好牌... 有 亲,根据资深记者爆料免安装麻将机控器好牌是可以开挂的,确实有挂(咨询...