zoukankan      html  css  js  c++  java
  • 使用Oracle的logminer工具进行日志挖掘

    Logminer是oracle从8i开始提供的用于分析重做日志信息的工具,它包括DBMS_LOGMNR和DBMS_LOGMNR_D两个package,后边的D是字典的意思。它既能分析redo log file,也能分析归档后的archive log file。在分析日志的过程中需要使用数据字典,一般先生成数据字典文件后使用,10g版本还可以使用在线数据字典。
    *_V3ji BsK%B0
    )v5O8M0`*V.Q0Logminer可以分析其它数据库的重做日志文件,但是必须使用重做日志所在数据库的数据字典,否则会出现无法识别的乱码。另外被分析数据库的操作系统平台最好和当前Logminer所在数据库的运行平台一样,且block size相同。
    G*IZ2[:K8m*g0ITPUB个人空间0^']Ya`1M~
    1、运行以下2个脚本安装logminer功能,一般数据库都已经安装好了:ITPUB个人空间o ^7f)[n q)wK

    NtQ] pR2hAB8I f0p5b2@/u01/app/oracle/product/10.2/rdbms/admin$ ls -l dbmsl*
    [({c-mb d0-rw-r--r--   1 oracle   oinstall      17246 Oct 27 2006  dbmslm.sql
    wX H$Zgp5?,r0-rw-r--r--   1 oracle   oinstall       4663 Oct 27 2006  dbmslmd.sqlITPUB个人空间3B7gDqn7zErX
    ITPUB个人空间Zt4d4r ~F
    2、要生成数据字典文件,首先要修改一个utl_file_dir参数,修改为*或者想存放数据字典文件位置的目录:
    Guwk i}E.n0
    b!^?1Q'`&UE0u0SQL> show parameter utl_file_dir
    |-B-z?&Q/u0
    -^b,}7Wt)GK0NAME                                 TYPE        VALUEITPUB个人空间{SIY-K.RW-n0E^zl
    ------------------------------------ ----------- ------------------------------
    {y(oA%P6f)G0De*y0utl_file_dir                         string
    J|{]4E3{)s Y0
    y$rJe:ld h0SQL> alter system set utl_file_dir='*' scope=spfile;ITPUB个人空间EY)I8J7O?1S
    ITPUB个人空间w(P;bx"]%r I.G
    System altered.ITPUB个人空间U'am|X O
    ITPUB个人空间(I8o3rX B3h
    SQL> shutdown immediateITPUB个人空间(T^4~B Q5X)ao(E:s
    Database closed.
    $hRA,t$g0Database dismounted.
    CzOy-q/z@0ORACLE instance shut down.ITPUB个人空间9w|9asUkg,[n
    SQL> startup
    i&XBEdWvu0ORACLE instance started.
    a,q*D-Olf3U RP8K0ITPUB个人空间'c0dz,r-m(Aqh
    3、生成数据字典文件ITPUB个人空间)VV B'ef
    ITPUB个人空间s QO1^oZ
    SQL> show parameter utl_file_dirITPUB个人空间i(RRpn2P Eh
    ITPUB个人空间2UY-Xg ?xu
    NAME                                 TYPE        VALUE
    :W*{'R^iv kZ0------------------------------------ ----------- ------------------------------ITPUB个人空间+y}-RI^w#[
    utl_file_dir                         string      *
    3h&k7J:c7[ `9}v T2c0SQL> EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dict20090625.dat',dictionary_location => '/orabak');
    KfdW rb0
    t8Nl*o8D#nT7LRY0PL/SQL procedure successfully completed.
    $`7b;ntK6\.b"pf3l0ITPUB个人空间B]ST+O1xY'l3l
    4、可以先设置使用的表空间
    s O5nr1J0ITPUB个人空间$iA3rH~y;U#wyf!O
    SQL> EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE('erp')  
    $Pp)f#M"C,c3R3T-Ee^0ITPUB个人空间%BJpCz&h"g
    PL/SQL procedure successfully completed.
    -l/Y i8zv/K:C_"Q2w0ITPUB个人空间KZ2w!k6XJI"p
    5、填加要分析的日志文件ITPUB个人空间0wv E:]VT

    Yxcx6sz%cC0SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/orabak/testarch/1_89802_640266118.dbf',Options=>dbms_logmnr.new);
    D$^+Nr1D.j*B8s-C0
    G-W6z k&ab0PL/SQL procedure successfully completed.ITPUB个人空间3sw"xt T1DFy
    ITPUB个人空间A*@gB8VZ)Ii
    6、可以继续填加,用dbms_logmnr.removefile可以删除ITPUB个人空间#L\/MiM:bfs
    ITPUB个人空间oO(~l&_%g6I3~
    SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/orabak/testarch/1_89807_640266118.dbf',Options=>dbms_logmnr.addfile);ITPUB个人空间:vTCY4O tB{

    'wSA.M2D#s4U&F0PL/SQL procedure successfully completed.ITPUB个人空间 T$jW4hE0vA(E ]x?
    ITPUB个人空间 I|9CC8V
    7、开始分析日志ITPUB个人空间1Yjwa^J5Zp

    &{,F xU#f1W^6Dzc8z*P0SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/orabak/dict20090625.dat');ITPUB个人空间Y8IQ;e4]3X&dk(X0G

    +DC$t2maTv0G0PL/SQL procedure successfully completed.
    b;z2|)_3wP%t0
    #]ST \0Y0提取特定时间的日志:
    \kFE;kg0ITPUB个人空间'^(@G\fO&h7X)mN/U
    dbms_logmnr.start_logmnr(dictfilename=>'/orabak/dict20090625.dat',ITPUB个人空间$_O.p!i3Iv Jg;QN8e
    starttime=>to_date('2009-06-24 09:30:00','YYYY-MM-DD HH24:MI:SS'),ITPUB个人空间{ g0Y'@9uV
    endtime=>to_date('2009-06-24 12:00:59','YYYY-MM-DD HH24:MI:SS'))
    V$A,yx{u0
    F8f,Vz"S3BCUM PJ$V0使用在线数据字典:ITPUB个人空间8_2}%d v3QY'C!e
    ITPUB个人空间,v;w|0XBM3`(Z
    SQL> EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
    t7t}H'N0A v.b0ITPUB个人空间*Rv?%c@!ip
    PL/SQL procedure successfully completed.
    ]N/do_0ITPUB个人空间p1q_G)pZ ]j
    8、查看结果
    Ndr u6[F$L0i0ITPUB个人空间ch#kc#Go#K$h
    select timestamp,username,session#,sql_redo,operation from v$logmnr_contents;ITPUB个人空间/]JdS(R1N1G6J

    2sq;jcC09、结束分析,释放PGA内存资源ITPUB个人空间 i;WQ/g ~Z'i
    ITPUB个人空间5m+T#J0goX-WoW}kF%i
    SQL> exec dbms_logmnr.end_logmnr;ITPUB个人空间bl;q*Ot%_@:?

    Kd/]Sr:I8t0PL/SQL procedure successfully completed.
    ,m0p0^%djT0
    m)X5`(w1Zp0注意,v$logmnr_contents内容保存了日志的内容,只在当前会话有效,如果想长期保存分析,可以在当前会话用create table tablename as select * from v$logmnr_contents语句来持久保存。
  • 相关阅读:
    【已解决】github中git push origin master出错:error: failed to push some refs to
    好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
    THINKPHP 5.0目录结构
    thinkphp5.0入口文件
    thinkphp5.0 生命周期
    thinkphp5.0 架构
    Django template
    Django queryset
    Django model
    Python unittest
  • 原文地址:https://www.cnblogs.com/luoyx/p/2859644.html
Copyright © 2011-2022 走看看