如何在oracle数据库中查找近期被修改的表

近期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;
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-12-18
  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个回答  2008-05-31
一般通过应用实现。
也可以用触发器或者用logmnr分析归档日志。
第3个回答  2015-10-24
user_tab_modifications
第4个回答  2008-06-01
用LOG MINER
你也可以用闪回FLASH BACK。两个东西针对的东西不同,一个是针对REDO,一个是UNDO

如何在oracle数据库中查找近期被修改的表
方法一:FLASH BACK 针对情况是:修改表的时间离你发现的时间不远。如果过了几天了基本上也就不能查到了。9i只能回闪查询。10G支持的功能更强大。例子:select * from scott.emp as of timestamp (systimestamp -interval '10'second);可以参考文档:http:\/\/warehouse.itpub.net\/post\/777\/397272 ...

如何知道oracle数据库中某段时间内,哪些表被修改了!
如果仅表示你修改的某个程序,相关的数量较多的表被修改, 你的要求是否要查到那些已经被修改的表的信息.(如果该程序可以重新执行, 可以在程序的前与后,对该会话增加SQL_TRACE, 就可以从生成的trace文件中知道你的程序究竟对哪些表作了修改

如何查看数据库数据表的修改记录 oracle
如何查看数据库数据表的修改记录 oracle 1. 用 sys 用户登录 Oracle 2. 创建记录用户登录信息的表 CREATE TABLE LOG$INFORMATION (ID NUMBER(10),USERNAME VARCHAR2(30),LOGINTIME DATE,TERMINAL VARCHAR2(50),IPADRESS VARCHAR2(20),OSUSER VARCHAR2(30),MACHINE VARCHAR2(64),PROGRAM VARCHAR2(64)...

在oracle中如何查看谁删了一个表格,是昨天或前天删的
1、创建数据字典文件(data-dictionary)1).首先在init.ora初始化参数文件中,添加一个参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:UTL_FILE_DIR = ($ORACLE_HOME\\logs) ,重新启动数据库,使新加的参数生效:SQL> shutdown;SQL>startup;2).然后创建数据字典文件 SQL> connect...

怎么查oracle存储过程更新记录
查oracle存储过程更新记录的方法是1、版本控制系统:如果你的存储过程是通过版本控制系统(如Git、SVN等)进行管理的,你可以通过版本控制系统的记录来查找存储过程的更新历史。版本控制系统会记录每次提交的变更,包括对存储过程的修改。2、数据库日志:Oracle数据库中的日志文件(如归档日志、重做日志)记录...

如何查询oracle数据库的操作记录?
select * from v$sql 即可。如果报错找不到v$sql,一般是权限问题,换sysdba就肯定能查到。但要注意的是“隐式sql”,很多sql语句是调用执行的,(比如,存储过程中对dbms包的调用,再如执行create 语句所触发的对系统表空间、数据字典的修改等等。),这些语句同样会展现在v$sql中。还有其它与sql历史...

如何查询oracle数据库修改的操作
查询到的结果可用for update来修改。如:select * from emp;查询到以下数据:此时语句可改写:select * from emp for update;然后点击如图图标:此时可以修改表中内容,如将empno为8888的改成4444。按图中所示进行操作即可。

如何查询用户修改oracle数据库中的数据
1. 用 sys 用户登录 Oracle 2. 创建记录用户登录信息的表 CREATE TABLE LOG$INFORMATION (ID NUMBER(10),USERNAME VARCHAR2(30),LOGINTIME DATE,TERMINAL VARCHAR2(50),IPADRESS VARCHAR2(20),OSUSER VARCHAR2(30),MACHINE VARCHAR2(64),PROGRAM VARCHAR2(64),SID NUMBER,SERIAL# ...

【北亚数据恢复】oracle误删除的表和oracle误删除的表数据如何恢复?
首先,从FLASHBACK_TRANSACTION_QUERY视图中查询所需恢复的数据库表名、关键字段、提交时间等,语法如下:查询表数据被删除的时间点,语法如下,或回忆大致时间点尝试查找前的时间点。基于查询到的数据丢失时间点,使用特定语句进行数据恢复。执行上述操作时,需允许Oracle修改分配给行的ROWID,以便为恢复数据...

Oracle数据恢复—Oracle数据库误删除的数据恢复方法
Oracle数据库在删除表时会将删除信息暂存于回收站,通过查询user_table和user_recyclebin视图找到被删除的表,使用`flashback table 原表名 to before drop`或直接按照回收站中的表名称恢复数据,再通过`flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename ...

相似回答