数据库10201,OS :XP
通过USER_TAB_MODIFICATIONS检查表的DML操作:
首先插入和删除数据
SQL> INSERT INTO TEST VALUES(7,'ZHU','ZHU','DA');
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> SELECT * FROM USER_TAB_MODIFICATIONS WHERE TABLE_NAME='TEST';
未选定行
SQL> DELETE FROM TEST WHERE ID=7
2 ;
已删除 1 行。
SQL> COMMIT;
提交完成。
但是发现并没有查到TEST的DML操作,为什么呢?这是因为信息不会马上传输到这个VIEW可能需要几分钟的时间。
SQL> SELECT * FROM USER_TAB_MODIFICATIONS WHERE TABLE_NAME='TEST';
未选定行
SQL> SHOW USER
USER 为 "TEST"
我现在FLUSH掉数据库的监控信息
SQL> EXEC DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO();
PL/SQL 过程已成功完成。
SQL> SELECT * FROM USER_TAB_MODIFICATIONS WHERE TABLE_NAME='TEST';
未选定行
重新插入和删除数据
SQL> INSERT INTO TEST VALUES(7,'ZHU','ZHU','DA');
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> DELETE FROM TEST WHERE ID=7;
已删除 1 行。
SQL>
SQL> SELECT * FROM USER_TAB_MODIFICATIONS WHERE TABLE_NAME='TEST';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
SUBPARTITION_NAME INSERTS UPDATES DELETES TIMESTAMP
------------------------------ ---------- ---------- ---------- --------------
TRU DROP_SEGMENTS
--- -------------
TEST
1 0 0 27-10月-08
NO 0
SQL> SELECT * FROM USER_TAB_MODIFICATIONS WHERE TABLE_NAME='TEST';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
SUBPARTITION_NAME INSERTS UPDATES DELETES TIMESTAMP
------------------------------ ---------- ---------- ---------- --------------
TRU DROP_SEGMENTS
--- -------------
TEST
1 0 0 27-10月-08
NO 0
SQL>
OK,这里我们可以看到刚才我在TEST表上的DML的操作内容。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7882490/viewspace-478334/ ,如需转载,请注明出处,否则将追究法律责任。