ORACLE 检查表的数据变动
本知识点仅适用于Oracle 9i以上的版本。
查看表的数据变动情况请使用SQL语句:select * from user_tab_modifications;
user_tab_modifications表的字段如下,从这个表中能够轻松找到表中做的修改,删除,增加记录的情况
注意以及使用方法:
1、但这张表不是实时更新的,默认情况15分钟更新一次,所以你更新一张表,可能在 user_tab_modifications里不能立刻体现出来。
2、想要实时查看也有办法实现,那就是在执行select * from user_tab_modifications之前先执行exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;这个存储过程目的就是立刻刷新异动信息的
3、当执行上面的存储过程出错时候,错误如下:
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
哈哈错误很明显,没有权限,那么提权!
4、为用户提权,首先用管理员账号登陆,授予某个账户执行DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO的权限。
grant analyze any to epplm(这里是你的用户名)
5、OK提权成功,那么返回到原账号(epplm),再执行exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO,OK没问题
6、此时再执行select * from user_tab_modifications,记录出现了。
7、FLUSH_DATABASE_MONITORING_INFO存储过程之后,所有之前的操作都将被提交!
8、对于Oracle10i以及以上的版本,DML操作,都可以在该表中查到,因为这个功能默认是开启的,如果没有开启,可以通过这个方法开启:alter table t monitoring;
存储过程:
1 2 3 4 5 6 7 8 | create or replace procedure Pro_Analyze_And_TableModify is begin dbms_output.put_line( '开始执行,过程很长,请等待' ); DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO; --立刻刷新 insert into TableModifications select * from user_tab_modifications; --两个表结构一样 Pro_AnalyzeTables; --执行分析表(调用上一篇的存储过程) dbms_output.put_line( '执行成功' ); end Pro_Analyze_And_TableModify; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架