ORACLE監控DML語句的一些資料的彙總
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".
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 DIMS_STATS PL/SQL package to populate this view with the latest information. The ANALYZE_ANY system privilege is required to run this procedure.
Oracle® Database Reference 10g Release 2 (10.2) Part Number B14237-04
--------------------------------------------------------------------------------
注:role dba中已有 ANALYZE ANY 許可權
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
DBA ANALYZE ANY YES
實驗中,即使是rollback,或者未commit的操作,只要重新整理了FLUSH_DATABASE_MONITORING_INFO 也會記入。
--------------------------------------------------------------------------------
我說的系統檢視,具體指的是dba_tab_modifications/all_tab_modifications/user_tab_modifications,這幾個檢視收集了表自從上一次分析之後的DML累積次數。但是要注意,考慮到效能的影響,Oracle並不是實時統計這個資料的,在Oracle9i之前,約3個小時SMON程式會重新整理一次資料,而Oracle9i以後這個時間間隔變成了15分鐘。
因此以較高的頻率來實時監控這個表的話,得到的並不是當前的準確資料。Oracle在dbms_stat包中提供了一個過程來手動重新整理統計資料,假如在一天的業務低峰期採集一次資料的話,可以先執行該過程,就能得到較為準確的資料。但是,不建議在業務高峰期執行該過程。
exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO; 在Oracle10g之前,必須手工開啟表的monitoring屬性,才會將DML統計資訊收集到這個檢視中。可以透過dba_tables.monitoring列檢視錶是否已經開啟了監控。
Oracle10g之後,只要statistics_level是TYPICAL(預設)或者ALL,就能自動收集資訊了,即使給表設定為nomonitoring也不能阻止,這個表的屬性已經被廢棄了。
--------------------------------------------------------------------------------
每15分鐘,smon會重新整理統計結果到資料字典中,oracle使用這些表的資料去判斷表的統計資料是否過期,
如果當表的資料改變超過10%,oracle就認為該表的統計資料已經過期.
Oracle 10g預設表是 monitoring,即使表在建立的時候指定是nomonitoring也是會被忽忽略的
這是由引數:statistics_level決定的, 預設值=TYPICAL
如果設定為BASIC將disable monitoring
系統將自動收集表的統計資訊(由GATHER_STATS_JOB完成,
可以透過 EXEC DBMS_SCHEDULER.DISABLE('GATHER_SCHEDULER_JOB')來取消系統自動收集),
且每3個小時由SMON寫入到資料字典(USER_TABLES.NUM_ROWS)裡。
經過更深入的研究,發現8i之前,資料庫是每3小時自動將SGA的資訊FLUSH到DBA_TAB_MODIFICATIONS中,而9i將這個時間改成每15分鐘.
在10.2.0.3中測試發現,這個檢視並不會自動重新整理,且透過exec dbms_stats.FLUSH_DATABASE_MONITORING_INFO手動重新整理時也存在一個bug,即timestamp 欄位的內容不會改變.在10.2.0.4中已修復了此bug.
http://jolly10.itpub.net/post/7268/453063
--------------------------------------------------------------------------------
MORE:
表監控一些實踐學習
http://blog.csdn.net/yuzhenhuan01/archive/2010/02/01/5277020.aspx
Gather Statistics with DBMS_STATS
http://www.idevelopment.info/data/Oracle/DBA_tips/Tuning/TUNING_17.shtml
How to statistics
記於2010年11月30日
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23650854/viewspace-682652/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 資料庫監控SQL語句Oracle資料庫SQL
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- 監控資料庫效能的SQL彙總資料庫SQL
- 資料庫常用的sql語句彙總資料庫SQL
- oracle 常用語句彙總Oracle
- oracle監控資料泵匯入和匯出的sql語句OracleSQL
- MySQL 的資料管理及 DML 語句MySql
- 監控oracle的觸發器語句(轉)Oracle觸發器
- Oracle常用效能監控語句解析Oracle
- Oracle-監控sql語句的過載率OracleSQL
- 效能監控方面的一些SQL語句SQL
- 資料庫DML監控一例資料庫
- oracle 監控 DML DDL 鎖 的4個檢視Oracle
- 值得白嫖的資料庫常用操作語句彙總(資料庫、資料表、資料操作)資料庫
- 常用SQL語句彙總SQL
- MySQL DML語句MySql
- 指令碼:監控當前活動的語句指令碼
- Oracle資料庫的監控內容Oracle資料庫
- 監控使用高cpu的sql語句指令碼SQL指令碼
- 運維監控指標彙總運維指標
- ORACLE:使用tcpdump 監控客戶端發過來的所有SQL語句OracleTCP客戶端SQL
- Oracle使用審計監控使用者執行過的SQL語句OracleSQL
- Nagois監控oracle資料庫注意的地方GoOracle資料庫
- oracle資料庫效能監控的SQL(轉)Oracle資料庫SQL
- 【彙總】語料庫資源
- MySql常用操作SQL語句彙總MySql
- 監控Oracle資料庫方法Oracle資料庫
- zabbix監控oracle資料庫Oracle資料庫
- 監控oracle效能的一些常用查詢Oracle
- [Sqlite] Sqlite的基本日常SQL操作語句彙總SQLite
- Oracle效能調整之--DML語句效能調整Oracle
- Oracle資料庫監控Index的使用情況Oracle資料庫Index
- 監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- oracle資料庫常用語句Oracle資料庫
- Oracle資料庫語句大全Oracle資料庫
- 處理DML語句的幾個階段
- Oracle資料庫中的多種SCN彙總Oracle資料庫
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫