1. 程式人生 > >【檢視】利用USER_TAB_MODIFICATIONS檢視輔助監控表的增刪改等操作

【檢視】利用USER_TAB_MODIFICATIONS檢視輔助監控表的增刪改等操作

USER_TAB_MODIFICATIONS檢視記錄了當前使用者中表自最後一次分析之後所有增、刪、改等操作資訊。通過對其查詢可以得到一個簡化版的審計功能效果。
因為該檢視中記錄的資訊會因表的分析自動清除,同時Oracle從效能上考慮並沒有保證這個檢視與表的操作實時保持一致,有一定的滯後,因此其中記錄的資訊僅可用於參考之目的。

在早期Oracle版本中,若要啟用這個功能需要使用“alter table t monitoring;”語句使表具有monitoring屬性。到了Oracle 10g時代,該功能已是預設行為,這主要歸功於STATISTICS_LEVEL引數,該引數共有三種取值(STATISTICS_LEVEL = { ALL | TYPICAL | BASIC }),當其值是“TYPICAL”或“ALL”時該功能就會生效,因其預設值是“TYPICAL”所以該功能預設被啟用。


這裡,我通過實驗給大家展示一下這個功能,並提出一點注意事項,供大家參考。

1.建立實驗表T
[email protected]> create table t (x int);

Table created.

2.向表T中插入一條記錄,注意這裡我們先不提交。
[email protected]> insert into t values (6);

1 row created.

3.嘗試查詢USER_TAB_MODIFICATIONS檢視
[email protected]> select TABLE_NAME,INSERTS,UPDATES,DELETES,TIMESTAMP from user_tab_modifications;


no rows selected

此時是沒有結果的,因為我們剛剛完成插入操作,維護到這個檢視是需要一段時間的。

4.如何縮短這個等待的過程呢?
執行DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO這個儲存過程可以瞬間得到結果。
1)執行儲存過程
注意,在普通使用者中想要執行這個儲存過程,需要被授予“analyze any”的系統許可權
[email protected]> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
BEGIN DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO; END;


*
ERROR at line 1:
ORA-20000: Insufficient privileges
ORA-06512: at "SYS.DBMS_STATS", line 2148
ORA-06512: at "SYS.DBMS_STATS", line 14135
ORA-06512: at line 1


[email protected]> conn / as sysdba
Connected.
[email protected]> grant analyze any to sec;

Grant succeeded.

[email protected]> conn sec/sec
Connected.
[email protected]> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL procedure successfully completed.

2)此時已經可以得到查詢結果,結果顯示T表在“2009-12-01 20:01:06”時被插入了一條記錄。
[email protected]> select TABLE_NAME,INSERTS,UPDATES,DELETES,TIMESTAMP from user_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TIMESTAMP
---------- ------- ------- ------- -------------------
T                1       0       0 2009-12-01 20:01:06

5.這裡要特別注意一點:在執行完FLUSH_DATABASE_MONITORING_INFO儲存過程之後,所有之前的操作都將被提交!
驗證如下
1)查看錶T中的資料
[email protected]> select * from t;

         X
----------
         6

2)嘗試回滾(之前沒有進行過提交和回滾操作)
[email protected]> rollback;

Rollback complete.

3)此時發現,即使顯式回滾也無濟於事,插入操作已經被提交。
[email protected]> select * from t;

         X
----------
         6

4)USER_TAB_MODIFICATIONS檢視中的記錄也被保留了下來
[email protected]> select TABLE_NAME,INSERTS,UPDATES,DELETES,TIMESTAMP from user_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TIMESTAMP
---------- ------- ------- ------- -------------------
T                1       0       0 2009-12-01 20:01:06

6.再來驗證一下表被分析之後的效果
1)分析前
[email protected]> select TABLE_NAME,INSERTS,UPDATES,DELETES,TIMESTAMP from user_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TIMESTAMP
---------- ------- ------- ------- -------------------
T                1       0       0 2009-12-01 20:01:06

2)分析中
[email protected]> analyze table t compute statistics;

Table analyzed.

3)分析後
[email protected]> select TABLE_NAME,INSERTS,UPDATES,DELETES,TIMESTAMP from user_tab_modifications;

no rows selected

實驗結論得證。

7.摘錄一些10gR2官方文件資料供參考
http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams211.htm#REFRN10214

相關推薦

檢視利用USER_TAB_MODIFICATIONS檢視輔助監控刪改操作

USER_TAB_MODIFICATIONS檢視記錄了當前使用者中表自最後一次分析之後所有增、刪、改等操作資訊。通過對其查詢可以得到一個簡化版的審計功能效果。因為該檢視中記錄的資訊會因表的分析自動清除,同時Oracle從效能上考慮並沒有保證這個檢視與表的操作實時保持一致,有一定的滯後,因此其中記錄的資訊僅可用

總結PySpark的DataFrame處理方法:刪改

基本操作: 執行時獲取spark版本號(以spark 2.0.0為例): sparksn = SparkSession.builder.appName("PythonSQL").getOrCreate() print sparksn.version 建

LinuxLinux下檢視伺服器配置的命令

目錄 一、伺服器型號 二、作業系統 三、CPU 四、記憶體 五、硬碟 六、其他 一、伺服器型號 dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product" 二

Linux 建立、檢視、刪除檔案

目錄 建立並檢視 單個刪除 從小白開始,記錄每一次遇到的問題,然後整理出來,我相信剛接觸Linux的人多多少少也會遇到類似的問題,如果看到了我的部落格,也是一種緣分。 今天想記錄下如何建立,檢視,以及刪除一個檔案。 建立並檢視 首先看看最普通的辦法,純粹使

linuxLinux下檢視CPU型號,記憶體大小,硬碟空間的命令(詳解)

1 檢視CPU 1.1 檢視CPU個數 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:刪除重複行;wc –l命令:統計行數** 1.2 檢視CPU核數 # cat /proc/c

LinuxLinux作業系統檢視伺服器配置資訊

檢視伺服器配置資訊 編寫bash shell指令碼檢視Linux作業系統的伺服器配置資訊 1 #!/bin/bash 2 echo "This lists the information of this computer." 3 echo 4 echo "Hostna

javaeclipse執行工程檢視jmx資訊

eclipse 啟動java專案預設沒有開啟jmx遠端檢視功能,如果需要看專案執行的執行緒記憶體使用量等資訊,可以在eclipse啟動引數中增加:(也可以單獨配置選項的jconsole資訊,在run-》run configurations-》選擇對應的java applica

ORACLE常用物化檢視相關元資料查詢語句

對物化檢視的狀態等資訊進行查詢,監控和管理時,需要對系統檢視進行查詢,以下列出了常用的物化檢視狀態、依賴關聯,批量維護時能用到的查詢語句,根據具體情況進行適當修改。 基本資訊查詢 -- 物化檢視基本資訊 SELECT OWNER

Swift模態檢視的動畫展示

1、業務需求:點選按鈕,自定義一個模態動畫,動畫大概,把上個介面一分為二,從中間分離然後顯示模態出來的介面 import UIKit // 列舉:present、dismiss的動畫區分 enum CNPresentOneTransitionType { case Prese

DB2效能管理檢視

1.效能管理部分檢視列表 可以使用命令db2 list tables for schema sysibmadm獲取所有的效能管理檢視 檢視名稱              模式名

Hadoop用web檢視hadoop執行狀態

上一篇文章(去部落格園,去CSDN),我們安裝完hadoop,下面我們從視覺上看看hadoop怎麼玩的。  我們可以在win7系統上,通過web介面,在瀏覽器位址列輸入地址,直接檢視hadoop的執

Linux檔案內容檢視——cat、more、less、head...

正向檢視——cat root@linux ~]# cat [-AEnTv] 檔案路徑 引數: -A :相當於 -vET 的整合引數,可列出一些特殊字元~ -E :將結尾的斷行字元 $ 顯示出來; -n :打印出行號; -T :將

spark命令列檢視parquet檔案內容

1,進入spark shell ./spark-shell 2,執行以下操作讀取parquet檔案 val sqlContext = new org.apache.spark.sql.SQLContext(sc) val parquetFile = sqlCont

Linuxstat命令檢視檔案的三個時間

stat命令   stat命令用於顯示檔案的狀態資訊。 語法 stat(選項)(引數) 選項    -L:支援符號連線;    -f:顯示檔案系統狀態而非檔案狀態;    -t:以簡潔方式輸出資訊;    –

zabbix利用LLD自動發現功能監控多Redis例項

使用方法:1)使用netstat來捕獲redis-server啟用的埠,但zabbix-agent執行在zabbix賬號下,故須給zabbix賬號授權執行netstat -nltp的許可權,在root使用者下執行如下命令:echo "zabbix ALL=(root)

案例利用innodb_force_recovery 解決MySQL服務器crash無法重啟問題

sock ogre ogr 事務 == format span caused his 一 背景 某一創業的朋友的主機因為磁盤陣列損壞機器crash,重啟MySQL服務時 報如下錯誤: InnoDB: Reading tablespace informatio

利用 selenium 的 webdrive 驅動 headless chrome

edr 使用 fin fire logs ble user () 穩定性 1.參考 使用 headless chrome進行測試 2.概念 Headless模式解決了什麽問題: 自動化工具例如 selenium 利用有頭瀏覽器進行測試,面臨效率和穩定性的影響,所以出現了 H

.相親過程:你有房子麽?你有錢麽?你有能力麽? 結婚吧先買房子在結婚先賺錢再買房子再結婚都沒有拜拜~~ 利用if嵌套做相親過程

javascrip text scrip script ext type ava 能力 != <script type="text/javascript"> var a = prompt("你有房子麽?"); if(a!=null) { if(a

jQuery利用jQuery實現“記住我”的功能

jquer sms sep jquery實現 .com script lis put bar 【1】先下載jQuery.cookie插件:使用幫助請參考鏈接(https://github.com/carhartl/jquery-cookie)。 【2】安裝插件:

MT16利用柯西不等式求三角的最大值

技術分享 com style img 不等式 bsp nbsp png 均值 評:此題也可以設$1+cos\theta=t$,平方後變成$t$的單變量利用均值去做. 柯西平衡系數法其實就是待定系數法,利用等號取到的條件。MT【16】利用柯西不等式求三角的最大值