Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3673001
  • 博文数量: 715
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(715)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: Oracle

2021-11-24 23:12:25

log miner最常见的用途是:数据库发生数据丢失,需要挖掘出什么时间,谁干的。。。

通常是:
1. 找到相关时段归档文件
2. 导出生产库的数据字典
3. 传送到测试库上,挖掘
4. 将结果告知客户


  1. 生产库上:

  2. 找到所需的归档日志
  3. col name for a50
  4. set pages 100 lin 120
  5. select thread#,sequence#,name,to_char(completion_time,'yyyy-mm-dd hh24:mi:ss')riqi from v$archived_log where dest_id=1 and completion_time>sysdate-1 order by 1,2;

  6. 创建数据字典
  7. CREATE DIRECTORY my_dictionary_dir AS '/u01/app/oracle/oradata';
  8. EXECUTE dbms_logmnr_d.build( DICTIONARY_FILENAME=>'dictionary.ora', DICTIONARY_LOCATION=>'MY_DICTIONARY_DIR', options => dbms_logmnr_d.store_in_flat_file);

  9. 将归档文件和数据字典scp到测试库上/home/oracle目录下

  10. 测试库上:

  11. EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/home/oracle/1_42_1088407163.dbf', OPTIONS => DBMS_LOGMNR.NEW);
  12. EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/home/oracle/1_43_1088407163.dbf', OPTIONS => DBMS_LOGMNR.ADDFILE);
  13. EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/home/oracle/2_35_1088407163.dbf', OPTIONS => DBMS_LOGMNR.ADDFILE);
  14. EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/home/oracle/2_36_1088407163.dbf', OPTIONS => DBMS_LOGMNR.ADDFILE);

  15. ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-mm-dd HH24:MI:SS';
  16.    
  17. EXECUTE DBMS_LOGMNR.START_LOGMNR( -
  18.    DICTFILENAME => '/home/oracle/dictionary.ora', -
  19.    STARTTIME => '2021-11-24 00:59:53', -
  20.    ENDTIME => '2021-11-24 06:59:53'-
  21.    );

-- create table logminer1 tablespace users as 
  1. SELECT username AS USR, (XIDUSN || '.' || XIDSLT || '.' || XIDSQN) AS XID, SQL_REDO, SQL_UNDO FROM V$LOGMNR_CONTENTS where SEG_OWNER='A';

  2. EXECUTE DBMS_LOGMNR.end_logmnr;

如果需要的话可以将日志挖掘的结果放到一个表中,以便后期分析。

经初步测试,不开启最小附加日志,有可能无法挖掘出来。
所以,检查一下所有生产库:
SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
如果为 NO
赶紧 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;


  1. 参考: https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-logminer-utility.html#GUID-3417B738-374C-4EE3-B15C-3A66E01AE2B5


阅读(1022) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~