• 使用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语句来持久保存。
  • 相关阅读:
    Node.js中exports与module.exports的区别
    Node js : Best way to define entity class
    使用 mongodb 的 Docker Image 快速上手系列 lab
    CreateFont函数为什么改变不了字体?该怎么解决
    docker service ps打印出来的错误信息被截断了怎么办?
    Docker for windows可用性检查
    Express application generator的使用
    Docker: 如何将node.js的项目部署到docker的swarm上面去
    Docker worker nodes shown as “Down” after re-start
    Docker创建虚机和swarm
  • 原文地址:https://www.cnblogs.com/luoyx/p/2859644.html
Copyright © 2020-2023  润新知