如何在oracle数据库中查找近期被修改的表
展开全部
方法一:FLASH BACK
针对情况是:修改表的时间离你发现的时间不远。如果过了几天了基本上也就不能查到了。9i只能回闪查询。10G支持的功能更强大。
例子:select * from scott.emp as of timestamp (systimestamp -interval '10'second);
可以参考文档:http://warehouse.itpub.net/post/777/397272
方法二:LOG MINER
针对情况是:只要数据库在归档方式就可以对这些日志进行分析,找到你那个时间点对数据库中表的操作。
操作步骤大概如下:
-----------------日志挖掘------------------------------
set directory:设置init.ora中的参数utl_fie_dir
alter system set utl_file_dir='/u01' scope=spfile;
begin
sys.dbms_logmnr_d.build('tanyunlin.log','/u01');
end;
/
添加日志文件列表
exec dbms_logmnr.add_logfile(logfilename => 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG',options => dbms_logmnr.new)
添加一个新的日志文件
execute dbms_logmnr.add_logfile(LogFileName => 'C:\oracle\product\10.1.0\oradata\orcl\REDO02.LOG',Options => dbms_logmnr.ADDFILE);
运行LOGMINER分析
1.使LOGMINER使用当前数据库的数据字典(OPEN状态、只用于跟踪DML操作)
exec dbms_logmnr.start_logmnr(options => dbms_logmnr.dict_from_online_catalog)
exec dbms_logmnr.start_logmnr(dictfilename=>'/u01/tanyunlin.log',options =>dbms_logmnr.ddl_dict_tracking)
2.无限制条件,即用数据字典文件对要分析的日志文件所有内容做分析
execute dbms_logmnr.start_logmnr(DictFileName => '/u01/tanyunlin');
3.带限制条件,可以用scn号或时间做限制条件,也可组合使用
execute dbms_logmnr.start_logmnr(startTime => to_date('20070228100000','yyyy-mm-dd hh24:mi:ss'),
endTime => to_date('20070228150000','yyyy-mm-dd hh24:mi:ss'),DictFileName => 'G:\oracle\logs\dict.ora');
查看日志分析结果
col username for a8
col sql_redo for a60
select username,to_char(timestamp,'yyyymmdd hh24:mi:ss'),sql_redo from v$logmnr_contents where sql_redo like '%delete%';
结束LOGMINER
exec dbms_logmnr.end_logmnr;
针对情况是:修改表的时间离你发现的时间不远。如果过了几天了基本上也就不能查到了。9i只能回闪查询。10G支持的功能更强大。
例子:select * from scott.emp as of timestamp (systimestamp -interval '10'second);
可以参考文档:http://warehouse.itpub.net/post/777/397272
方法二:LOG MINER
针对情况是:只要数据库在归档方式就可以对这些日志进行分析,找到你那个时间点对数据库中表的操作。
操作步骤大概如下:
-----------------日志挖掘------------------------------
set directory:设置init.ora中的参数utl_fie_dir
alter system set utl_file_dir='/u01' scope=spfile;
begin
sys.dbms_logmnr_d.build('tanyunlin.log','/u01');
end;
/
添加日志文件列表
exec dbms_logmnr.add_logfile(logfilename => 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG',options => dbms_logmnr.new)
添加一个新的日志文件
execute dbms_logmnr.add_logfile(LogFileName => 'C:\oracle\product\10.1.0\oradata\orcl\REDO02.LOG',Options => dbms_logmnr.ADDFILE);
运行LOGMINER分析
1.使LOGMINER使用当前数据库的数据字典(OPEN状态、只用于跟踪DML操作)
exec dbms_logmnr.start_logmnr(options => dbms_logmnr.dict_from_online_catalog)
exec dbms_logmnr.start_logmnr(dictfilename=>'/u01/tanyunlin.log',options =>dbms_logmnr.ddl_dict_tracking)
2.无限制条件,即用数据字典文件对要分析的日志文件所有内容做分析
execute dbms_logmnr.start_logmnr(DictFileName => '/u01/tanyunlin');
3.带限制条件,可以用scn号或时间做限制条件,也可组合使用
execute dbms_logmnr.start_logmnr(startTime => to_date('20070228100000','yyyy-mm-dd hh24:mi:ss'),
endTime => to_date('20070228150000','yyyy-mm-dd hh24:mi:ss'),DictFileName => 'G:\oracle\logs\dict.ora');
查看日志分析结果
col username for a8
col sql_redo for a60
select username,to_char(timestamp,'yyyymmdd hh24:mi:ss'),sql_redo from v$logmnr_contents where sql_redo like '%delete%';
结束LOGMINER
exec dbms_logmnr.end_logmnr;
2015-12-18 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
1、select uat.table_name from user_all_tables uat 该SQL可以获得所有用户表的名称
2、select object_name, created,last_ddl_time from user_objects 该SQL可以获得所有用户对象(包括表)的创建和最后修改时间
综合以上SQL,总结了如下语句:
代码如下:
select uat.table_name as 表名,(select last_ddl_time from user_objects where object_name = uat.table_name ) as 最后修改日期
from user_all_tables uat
通过该语句,可以得到所有表的最后修改时间。(大家可以根据实际情况在该SQL后面加上相应的条件表达式)
通过对查询结果中最后修改时间的降序排列,就可以知道那些表的结构修改过了。
2、select object_name, created,last_ddl_time from user_objects 该SQL可以获得所有用户对象(包括表)的创建和最后修改时间
综合以上SQL,总结了如下语句:
代码如下:
select uat.table_name as 表名,(select last_ddl_time from user_objects where object_name = uat.table_name ) as 最后修改日期
from user_all_tables uat
通过该语句,可以得到所有表的最后修改时间。(大家可以根据实际情况在该SQL后面加上相应的条件表达式)
通过对查询结果中最后修改时间的降序排列,就可以知道那些表的结构修改过了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般通过应用实现。
也可以用触发器或者用logmnr分析归档日志。
也可以用触发器或者用logmnr分析归档日志。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
user_tab_modifications
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用LOG MINER
你也可以用闪回FLASH BACK。两个东西针对的东西不同,一个是针对REDO,一个是UNDO
你也可以用闪回FLASH BACK。两个东西针对的东西不同,一个是针对REDO,一个是UNDO
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询