DBA_TAB_MODIFICATIONS视图学习

  

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

  
 <代码> DBA_TAB_MODIFICATIONS描述修改数据库中的所有表,修改自上次统计数据收集表。它的列在“ALL_TAB_MODIFICATIONS”一样。
  
  DBA_TAB_MODIFICATIONS描述的是收集完统计信息之后的数据库中所有表的DML操作。 
  
 <代码>注意:
  这种观点是人口只有表监控属性。它是用于统计信息收集在很长一段时间。由于性能原因,Oracle数据库不实际的修改发生时立即填充这一观点。运行FLUSH_DATABASE_MONITORING_INFO过程在DBMS_STATS PL/SQL包来填充这个视图的最新信息。ANALYZE_ANY系统特权需要运行这个程序。 
  
 <代码>完成;desc dba_tab_modifications;
  的名字空?类型
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  TABLE_OWNER VARCHAR2 (128)
  TABLE_NAME VARCHAR2 (128)
  PARTITION_NAME VARCHAR2 (128)
  SUBPARTITION_NAME VARCHAR2 (128)
  插入号# #插入
  更新号码# #更新
  删除号码# #删除
  时间戳日期
  截断VARCHAR2(3) # #截断
  DROP_SEGMENTS数量
  
  完成; 之前
  
 <代码>完成;select * from v $版本rownum=1;
  
  横幅
  --------------------------------------------------------------------------------
  CON_ID
  ----------
  Oracle数据库12 c企业版发布12.1.0.2.0 - 64生产
  0
   之前
  
 <代码>完成;创建表t1从dba_objects select *;
  
  表创建。 
  
 <代码>完成;选择table_owner、table_name插入、更新、删除、时间戳、截断,drop_segments sys。dba_tab_modifications table_name=癟1”;
  
  没有行选择
  
  完成;更新t1组object_id=1, object_id=30;
  
  1行更新。
  
  完成;选择table_owner、table_name插入、更新、删除、时间戳、截断,drop_segments sys。dba_tab_modifications table_name=癟1”;
  
  没有行选择
  
  完成;exec dbms_stats.flush_database_monitoring_info;
  
  PL/SQL过程成功完成。
  
  完成;选择table_owner、table_name插入、更新、删除、时间戳、截断,drop_segments sys。dba_tab_modifications table_name=癟1”;
  
  TABLE_OWNER
  --------------------------------------------------------------------------------
  TABLE_NAME
  --------------------------------------------------------------------------------
  插入更新删除时间戳TRU DROP_SEGMENTS
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  SYS
  T1
  0 1 0 2018年- 2月19日06:59:33没有0
  
  完成;exec dbms_stats.flush_database_monitoring_info;
  
  PL/SQL过程成功完成。
  
  完成;选择table_owner、table_name插入、更新、删除、时间戳、截断,drop_segments sys。dba_tab_modifications table_name=癟1”;
  
  TABLE_OWNER
  --------------------------------------------------------------------------------
  TABLE_NAME
  --------------------------------------------------------------------------------
  插入更新删除时间戳TRU DROP_SEGMENTS
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  SYS
  T1
  0 1 0 2018年- 2月19日06:59:33没有0
  
  完成;exec dbms_stats.gather_table_stats (“SYS”、“T1”);
  
  PL/SQL过程成功完成。
  
  完成;选择table_owner、table_name插入、更新、删除、时间戳、截断,drop_segments sys。dba_tab_modifications table_name=癟1”;
  
  没有行选择
  
  完成;
   之前
  

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

  

测试二:

  
 <代码>完成;改变系统设置“_dml_monitoring_enabled”=false范围=记忆;
  
  系统的改变。
  
  完成;删除从t1;
  
  90974行删除。
  
  完成;选择table_owner、table_name插入、更新、删除、时间戳、截断,drop_segments sys。dba_tab_modifications table_name=癟1”;
  
  没有行选择
  
  完成;exec dbms_stats.flush_database_monitoring_info;
  
  PL/SQL过程成功完成。
  
  完成;选择table_owner、table_name插入、更新、删除、时间戳、截断,drop_segments sys。dba_tab_modifications table_name=癟1”;
  
  没有行选择
  
  完成;

DBA_TAB_MODIFICATIONS视图学习