通过测试来学习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视图学习