oracle工具:logminer的简单使用

我的环境:
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-308.el5xen #1 SMP Fri Jan 27 17:59:00 EST 2012 i686 i686 i386 GNU/Linux

sys@ORCL> select * from v$version where rownum=1;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

10g其实不需要生成dictionary文件了。只要直接把日志文件加载,然后分析即可。

1 产生数据库操作

  1. hr@ORCL>droptabletpurge;
  2. Tabledropped.
  3. hr@ORCL>createtablelogmnr_test(idnumber,namevarchar2(20));
  4. Tablecreated.
  5. hr@ORCL>insertintologmnr_testvalues(1,'think');
  6. 1rowcreated.
  7. hr@ORCL>insertintologmnr_testvalues(2,'water');
  8. 1rowcreated.
  9. hr@ORCL>commit;
  10. Commitcomplete.
  11. hr@ORCL>selectsequence#,statusfromv$log;
  12. SEQUENCE#STATUS
  13. --------------------------
  14. 14CURRENT
  15. 13INACTIVE
  16. 12INACTIVE
  17. hr@ORCL>updatelogmnr_testsetname='think_pad'whereid=2;
  18. 1rowupdated.
  19. hr@ORCL>commit;
  20. Commitcomplete.
  21. hr@ORCL>altersystemswitchlogfile;
  22. Systemaltered.
  23. hr@ORCL>selectsequence#,namefromv$archived_log;
  24. SEQUENCE#
  25. ----------
  26. NAME
  27. ----------------------------------------------------------------------------------------------------
  28. .............................
  29. 14
  30. /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_09_09/o1_mf_1_14_84qrj5co_.arc


2 为分析指定日志文件

  1. sys@ORCL>selectdb_name,thread_sqn,filename
  2. 2fromv$logmnr_logs;
  3. norowsselected
  4. sys@ORCL>execDBMS_LOGMNR.ADD_LOGFILE('/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_09_09/o1_mf_1_14_84qrj5co_.arc',dbms_logmnr.NEW);
  5. PL/SQLproceduresuccessfullycompleted.
  6. 若想接着分析更多的日志,把dbms_logmnr.NEW改成dbms_logmnr.addfile即可。
  7. sys@ORCL>selectdb_name,thread_sqn,filenamefromv$logmnr_logs;
  8. DB_NAMETHREAD_SQN
  9. ------------------
  10. FILENAME
  11. ----------------------------------------------------------------------------------------------------
  12. ORCL14
  13. /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_09_09/o1_mf_1_14_84qrj5co_.arc


3 启动logminer

  1. sys@ORCL>execDBMS_LOGMNR.START_LOGMNR(OPTIONS=>SYS.DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
  2. PL/SQLproceduresuccessfullycompleted.
  3. 若是大数据量的分析,可以指定SCN或者时间的范围。


4 分析日志的内容
1)检查数据更改的细节
数据库里面的数据可能意想不到的原因或者错误而发生改变,在重做日志文件中可以找到这些更改的细节,比如:谁做了这些改变?什么时候改的?怎么改的?

  1. selectoperation,timestamp,scnfromv$logmnr_contents
  2. whereseg_name='LOGMNR_TEST'and
  3. seg_owner='HR'and
  4. seg_type_name='TABLE';
  5. OPERATIONTIMESTAMPSCN
  6. -------------------------------------------------------------
  7. DDL2012/09/0908:20:47721905
  8. selectsql_redo,sql_undofromv$logmnr_contents
  9. whereseg_name='LOGMNR_TEST'and
  10. seg_owner='HR'and
  11. seg_type_name='TABLE';
  12. SQL_REDO
  13. ----------------------------------------------------------------------------------------------------
  14. SQL_UNDO
  15. ----------------------------------------------------------------------------------------------------
  16. createtablelogmnr_test(idnumber,namevarchar2(20));
  17. selectusername,session_infofromv$logmnr_contents
  18. whereseg_name='LOGMNR_TEST'and
  19. seg_owner='HR'and
  20. seg_type_name='TABLE'


2)执行容量分析
如分析表产生DML的频数和频率

  1. selectoperation,timestamp,count(*)totalfromv$logmnr_contents
  2. whereseg_name='LOGMNR_TEST'and
  3. seg_owner='HR'and
  4. seg_type_name='TABLE'
  5. groupbyoperation,timestamp;
  6. OPERATIONTIMESTAMPTOTAL
  7. -------------------------------------------------------------
  8. DDL2012/09/0908:20:471


3)寻找DDL命令的细节
例如,使用logminer,可以找出删除表的具体时间和scn,便于media recovery。

  1. selectseg_name,operation,scn,timestamp,count(*)
  2. fromv$logmnr_contents
  3. whereoperation='DELETE'
  4. groupbyseg_name,operation,scn,timestamp
  5. orderbyscn;


5 关闭logminer
如果需要进一步的分析,可将v$logmnr_contents内容保存下来
create table logmnr_contents as select * from v$logmnr_contents;
然后,执行关闭:
exec dbms_logmnr.end_logmnr;

附图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值