Oracle 10g 新增的dba_tab_modifications檢視

hd_system發表於2016-10-13

今天無意中看到了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部落格 ” ,連結:http://blog.itpub.net/29209863/viewspace-2126264/,如需轉載,請註明出處,否則將追究法律責任。

相關文章