ITPub博客

首页 > 数据库 > Oracle > Oracle 10g 新增的dba_tab_modifications视图

Oracle 10g 新增的dba_tab_modifications视图

Oracle 作者:hd_system 时间:2016-10-13 15:27:32 0 删除 编辑

今天无意中看到了dba_tab_modifications视图,里面包括了数据库表的DML操作统计,感觉挺有用的。
 
这个视图中记录数据库自上次执行dbms_stat 以来的表的数据量的变更的统计,包括insert、delete、update,为了性能优先这个视图不是实时跟新的,需要执行一个存储过程来刷新。
exec dbms_stats.FLUSH_DATABASE_MONITORING_INFO();
或者开启awr 功能也会自动调用这个过程刷新,这个过程执行很快,没有什么性能影响。
 
那这个视图的数据是哪里获取的?SMON后台进程的作用之一,就是维护MON_MODS$基表,当初始化参数STATISTICS_LEVEL 被设置为TYPICAL或ALL时默认会启用Oracle中表监控的特性,Oracle会默认监控表上的自上一次分析以后(Last analyzed)发生的INSERT,UPDATE,DELETE以及表是否被TRUNCATE截断,并将这些操作数量的近似值记录到数据字典基表 MON_MODS$中,我们常用的一个DML视图dba_tab_modifications的数据实际来源于另一个数据字典基表 MON_MODS_ALL$,SMON定期会将MON_MODS$中符合要求的数据MERGE到MON_MODS_ALL$中。
 
oracle 10g 的自动分析原则,就是根据这个数据量变动比率达到某个值后,触发dbms_stat来收集统计信息的。

ColumnDatatypeNULLDescriptionTABLE_OWNERVARCHAR2(30)
Owner of the modified table.TABLE_NAMEVARCHAR2(30)
Name of the modified tablePARTITION_NAMEVARCHAR2(30)
Name of the modified partitionSUBPARTITION_NAMEVARCHAR2(30)
Name of the modified subpartitionINSERTSNUMBER
Approximate number of inserts since the last time statistics were gatheredUPDATESNUMBER
Approximate number of updates since the last time statistics were gatheredDELETESNUMBER
Approximate number of deletes since the last time statistics were gatheredTIMESTAMPDATE
Indicates the last time the table was modifiedDROP_SEGMENTSNUMBER
Number of partition and subpartition segments dropped since the last analyze

###############################################################
dba_tab_modifications的刷新机制 
oracle 10g 的自动分析原则,就是看数据量变更超过了10% ,就触发dbms_stat 收集统计信息

这个10% 的就靠dba_tab_modifications 来统计的,

这个表是记录自上次执行dbms_stat 以来的表的数据量的变更的统计,insert, delete, update

为了性能优先这个表式不是实时跟新的, 需要执行一个存储过程来刷新 
[code]
dbms_stats.FLUSH_DATABASE_MONITORING_INFO();
[/code]

或者开启awr 功能也会自动调用这个过程刷新
这个过程执行很快,没有什么性能影响

可以考虑挂个crontab 定期执行。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29209863/viewspace-2126264/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: ps aux指令詳解
请登录后发表评论 登录
全部评论

注册时间:2016-10-12

  • 博文量
    149
  • 访问量
    99050