精华内容
下载资源
问答
  • 我们知道数据的任何操作都会记录到redo日志文件中,在8i以前我们是没有办法查看redo文件里面的内容的,但在9i以后,Oracle推出了logminer,通过logminer分析我们可以很清楚查看Oracle所做的任何操作,比如我删除一个表,在...

    分类: Oracle

    环境:
    OS:Red Hat Linux As 5
    DB:10.2.0.4
     
    我们知道数据的任何操作都会记录到redo日志文件中,在8i以前我们是没有办法查看redo文件里面的内容的,但在9i以后,Oracle推出了logminer,通过logminer分析我们可以很清楚查看Oracle所做的任何操作,比如我删除一个表,在logminer中可以看到很详细的操作记录.
     
    1.使用logminer需要运行如下两个文件
    $ORACLE_HOME/rdbms/admin/dbmslm.sql
    $ORACLE_HOME/rdbms/admin/dbmslmd.sql
    SQL> connect sys/sys as sysdba 
    Connected.
    SQL> @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/dbmslm.sql
    Package created.
    SQL> @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/dbmslmd.sql
    Package created.
     
    2.修改初始化参数utl_file_dir,指定分析数据的存放处
    SQL>alter system set utl_file_dir='/u01/logmine_dir' scope=spfile;
    SQL>shutdown immediate
    SQL>startup
     
    3.创建数据字典文件
    begin
    sys.dbms_logmnr_d.build(dictionary_filename =>'mylogmine.ora',dictionary_location =>'/u01/logmine_dir',options>=>dbms_logmnr_d.store_in_flat_file);
    end;
    mylogmine.ora是给字典文件起的文件名(可任意),字典文件的作用是将Oralce内部处理使用的对象编码和内部数据类型转换为可读的对象名称和类型.例如这个SQL
    INSERT INTO HR.JOBS(JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)  VALUES('IT_WT','Technical Writer', 4000, 11000);
    若没有创建数据字典文件的文件的话,logminer出来的记录内容如下:
    insert into "UNKNOWN"."OBJ# 45522"("COL 1","COL 2","COL 3","COL 4") values
    (HEXTORAW('45465f4748'),HEXTORAW('546563686e6963616c20577269746572'),
    HEXTORAW('c229'),HEXTORAW('c3020b'));
     
    4.这个时候我们使用某个用户登录数据库后删除某个表
    SQL>connect app_user/hxl
    SQL>drop table tb_test;
    SQL>conect / as sysdba
    SQL>alter system switch logfile;
    这个时候会产生一个归档日志文件,刚才删除表的操作就在这个文件里
     
    5.分析归档日志
    创建列表
    begin
      sys.dbms_logmnr.add_logfile(LogFileName => '/u01/arch_log/1_13_787769576.dbf',
                                  Options     => dbms_logmnr.new);
    end;
    这里的归档日志文件1_13_787769576.dbf就是我们刚才switch生成的日志文件.
    当然还可以添加其他归档日志,看分析的需要,我们这里只分析一个归档日志文件.
    添加其他归档日志分析的过程如下:
    begin
      dbms_logmnr.add_logfile(LogFileName => '/u01/arch_log/1_12_787769576.dbf',
                              Options     => dbms_logmnr.addfile);
    end;
    6.开始使用LogMiner进行日志分析
     
    分析整个日志文件(没有任何条件)
    begin
      sys.dbms_logmnr.start_logmnr(DictFileName =>'/u01/logmine_dir/mylogmine.ora');
    end;
     
    若大概知道某个操作发生的时间,可以按照需要时间分析的过程如下:
    begin
      sys.dbms_logmnr.start_logmnr(DictFileName =>'/u01/logmine_dir/mylogmine.ora',
                                  startTime => to_date('2012-07-04 15:00:00','YYYY-MM-DD HH24:MI:SS'),
                                  endTime => to_date('2012-07-04 16:00:00','YYYY-MM-DD HH24:MI:SS')
                                  );
    end;
    我们这里分析的是整个日志文件,分析完成后,查看V$LOGMNR_CONTENTS试图的内容就是我们刚才分析得到的内容.注意V$LOGMNR_CONTENTS的内容是保留在PGA中的,查看这个试图需要在跟执行分析的过程在一个session中,否则在另外开一个session是查看不到的,而且会报ORA-01306错误.
    从V$LOGMNR_CONTENTS视图中可以查看得到我们刚才删除表的操作:
    SQL>select sql_redo from V$LOGMNR_CONTENTS 
        where upper(sql_redo) like '%TB_TEST%'
    SQL_REDO
    -----------------------------------
    ALTER TABLE "APP_USER"."TB_TEST" RENAME TO "BIN$w/uEl9lUoujgQAB/AQAW2w==$0" ;
    "drop table tb_test AS ""BIN$w/uEl9lUoujgQAB/AQAW2w==$0""
     ;"
     
    7.结束分析
    begin
      sys.dbms_logmnr.end_logmnr;
    end;
     
    使用logminer的一些说明:
    1.分析日志所在的数据库平台必须跟产生日志的数据库平台保持一致;
    2.分析日志所在的数据库可以跟产生日志的数据库完全独立,或者是两者是同一个数据库;
    3.分析日志所在的数据库的版本比如高于产生日志的数据库的版本;
    4.分析日志所在的数据库的字符集必须跟产生日志的数据库的字符集保持一致;
    5.logminer数据字典文件必须在产生日志的数据库生成.
     
    -- The End --
    展开全文
  • 1、选定Logminer字典 Oracle提供了三种方式选定Logminer字典 ...(2)抽取字典到redo日志文件中 EXECUTE DBMS_LOGMNR_D.BUILD( OPTIONS=> DBMS_LOGMNR_D.STORE_IN_REDO_LOGS); (3)抽取字典到平面文件中 这

    1、选定Logminer字典

    Oracle提供了三种方式选定Logminer字典

    (1)使用在线目录

    EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

    (2)抽取字典到redo日志文件中

    EXECUTE DBMS_LOGMNR_D.BUILD( OPTIONS=> DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);

    (3)抽取字典到平面文件中

    这种方式需要设置UTL_FILE_DIR参数,并且重启数据库

    EXECUTE DBMS_LOGMNR_D.BUILD('dictionary.ora', '/oradata/', DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);

    2、Logminer中添加归档日志文件,也可以添加redo文件

    EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/arch/1_1_836472539.arch', OPTIONS => DBMS_LOGMNR.NEW);

    3、继续添加归档文件后者redo文件

    EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/arch/1_2__836472539.arch', OPTIONS => DBMS_LOGMNR.ADDFILE);
    EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/arch/2_3__836472539.arch', OPTIONS => DBMS_LOGMNR.ADDFILE);
    EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/arch/2_2__836472539.arch', OPTIONS => DBMS_LOGMNR.ADDFILE);

    4、开始日志挖掘

    根据选定Logminer字典的方式的不通,分别对应三种挖掘方式。

    (1)

    EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

    (2)

    EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_REDO_LOGS );

    (3)

    EXECUTE DBMS_LOGMNR.START_LOGMNR(DICTFILENAME =>'/oradata/dictionary.ora');

    5、查看结果

    select * from V$LOGMNR_CONTENTS;

    也可以将结果保存到临时表中

    create table tmp_logmnr as select * from v$logmnr_contents;

    6、停止日志挖掘

    EXECUTE DBMS_LOGMNR.END_LOGMNR;

    展开全文
  • 使用oracle LogMiner查看日志文件

    千次阅读 2008-05-12 23:22:00
    LogMiner的使用 =========================================================== 作者: tolywang(http://tolywang.itpub.net)发表于:2005.01.19 11:03分类: Oracle数据库管理 出处:...
    LogMiner的使用
    ===========================================================
               Logminer是每个Dba都应熟悉的工具,当一天由于用户的误操作你需要做不完全的恢复时,由于你无法确定这个操作是哪个时间做的,所以这对你的恢复就带来的很大的难度,丢失的数据也不能完全恢复回来。而LogMiner就可以帮你确定这个误操作的准确时间。

    测试环境是Aix4.3.3的操作系统,Oracle9.2.0.3的测试库。


    一、LogMiner的几点说明
    1、LogMiner可以帮你确定在某段时间所发的各种DML,DDL操作的具体时间和SCN号,它所依据的是归档日志文件及联机日志文件。
    2、它只能在Oracle8i及以后的版本中使用,不过它可以分析Oracle8的日志。
    3、Oracle8i只能用于分析DML操作,到Oracle9i则可以分析DDL操作了。
    4、LogMiner不支持索引组织表、Long、LOB及集合类型。
    5、MTS的环境也不能使用LogMiner.

    二、操作步骤
    1、设定用于LogMiner分析的数据文件存放的位置
     这是设定utl_file_dir参数的过程,我的示例:
     a、在initctc.ora文件中加入如下一行
        utl_file_dir=/u01/arch
     b、得启数据库
       oracle>sqlplus /nolog  
       sql>conn / as sysdba
       sql>shutdown immediate
       sql>statup

    2、生成数据字典文件,是通过dbms_logmnr_d.build()来完成。
      SQL> BEGIN
       2     dbms_logmnr_d.build(
       3       dictionary_filename => 'logminer_dict.dat',
       4       dictionary_location => '/u01/arch'
       5     );
       6  END;
       7 /
     
      dictionary_location指的是Logminer数据字典文件存放的位置,它必须匹配utl_file_dir的设定。
      其中的dictionary_filename指的是放于存放位置的字典文件的名字,名字可以任意取。

    3、建立一个日志分析表
      a、建立日志分析表数据库必须在mount或nomount状态,启动数据库到mount状态。
        sqlplus /nolog
        sql>conn / as sysdba
        sql>shutdown immediate
        sql>starup mount
     
      b、建立日志分析表,使用dbms_logmnr.add_logfile()
        SQL> BEGIN
         2     dbms_logmnr.add_logfile(
         3       options => dbms_logmnr.new,
         4       logfilename => '/u01/arch/arc_ctc_0503.arc'
         5     );
         6  END;
         7 /      
        其中的options有三种取值,dbms_logmnr.new用于建一个日志分析表;dbms_logmnr.addfile用于加入用于分析的的日志文件;dbms_logmnr.removefile用于移出用于分析的日志文件。
           

    4、添加用于分析的日志文件。
        SQL> BEGIN
         2     dbms_logmnr.add_logfile(
         3       options => dbms_logmnr.addfile,
         4       logfilename => '/u01/arch/arc_ctc_0504.arc'
         5     );
         6  END;
         7 /
     
      使用则可以把这个文件从日志分析表中移除,从而不进行分析。
        SQL> BEGIN
         2     dbms_logmnr.add_logfile(
         3       options => dbms_logmnr.removefile,
         4       logfilename => '/u01/arch/arc_ctc_0503.arc'
         5     );
         6  END;
         7 /  
        

    5、启动LogMiner进行分析。
        SQL> BEGIN
         2     dbms_logmnr.start_logmnr(
         3       dictfilename => '/u01/arch/logminer_dict.dat',
         4       starttime => to_date('20030501 12:15:00','yyyymmdd hh24:mi:ss'),
         5       endtime => to_date('20030501 15:40:30','yyyymmdd hh24:mi:ss')
         6     );
         7  END;
         8 /
       
        即分析2003年5月1日这天12:15至15:40这段时间,并把分析结果放到数据字典中以用于查询。还有两个参数StartScn(起始scn号)及EndScn(终止Scn)号。

    6、查看日志分析的结果,通过查询v$logmnr_contents可以查询到
      a、查看DML操作,示例:
        SELECT operation,
               sql_redo,
               sql_undo,
          FROM V$logmnr_contents
         WHERE seg_name = 'QIUYB';
      
         OPERATION     SQL_REDO                    SQL_UNDO
         ----------    --------------------------  --------------------------
         INSERT        inser into qiuyb.qiuyb ...  delete from qiuyb.qiuyb...
     
        其中operation指的是操作,sql_redo指的是实际的操作,sql_undo指的是用于取消的相反的操作。
     
      b、查看DDL操作,示例:
        SELECT timstamp,
               sql_redo
          FROM v$logmnr_contents
         WHERE upper(sql_redo) like '%TRUNCATE%';

    7、结束LogMiner的分析。
      SQL>BEGIN
       2     dbms_logmnr.end_logmnr;
       3   end;
       4 /

    三、与LogMiner相关的数据字典。
    1、v$loglist           它用于显示历史日志文件的一些信息
    2、v$logmnr_dictionary 因logmnr可以有多个字典文件,该视图用于显示这方面信息。
    3、v$logmnr_parameters 它用于显示logmnr的参数
    4、v$logmnr_logs       它用于显示用于分析的日志列表信息。

    展开全文
  • LogMiner是集成在Oracle8i/Oracle9i数据库产品中的日志分析工具,通过该工具可以分析重做日志和归档日志中的所有事务变化,并能准确地确定各种DML和DDL操作的具体时间和SCN值。对重做日志和归档日志进行分析的目 的...
  • 我们知道数据的任何操作都会记录到redo日志文件中,在8i以前我们是没有办法查看redo文件里面的内容的,但在9i以后,Oracle推出了logminer,通过logminer分析我们可以很清楚查看Oracle所做的任何操作,比如我删除一个表,在...
    我们知道数据的任何操作都会记录到redo日志文件中,在8i以前我们是没有办法查看redo文件里面的内容的,但在9i以后,Oracle推出了logminer,通过logminer分析我们可以很清楚查看Oracle所做的任何操作,比如我删除一个表,在logminer中可以看到很详细的操作记录.
    
     
    1.使用logminer需要运行如下两个文件
    $ORACLE_HOME/rdbms/admin/dbmslm.sql
    $ORACLE_HOME/rdbms/admin/dbmslmd.sql
    SQL> connect sys/sys as sysdba 
    Connected.
    SQL> @?/rdbms/admin/dbmslm.sql
    Package created.


    Grant succeeded.


    SQL> @?/rdbms/admin/dbmslmd.sql


    Package created.
     
    2.修改初始化参数utl_file_dir,指定分析数据的存放处
    SQL>alter system set utl_file_dir='/u01/logmine_dir' scope=spfile;
    SQL>shutdown immediate
    SQL>startup
     
    3.创建数据字典文件
    SQL> begin
      2  sys.dbms_logmnr_d.build(dictionary_filename =>'mylogmine.ora',dictionary_location =>'/u01/logmine_dir',options=>dbms_logmnr_d.store_in_flat_file);
      3  end;
      4  /


    PL/SQL procedure successfully completed.
      mylogmine.ora是给字典文件起的文件名(可任意),字典文件的作用是将Oralce内部处理使用的对象编码和内部数据类型转换为可读的对象名称和类型.例如这个SQL:INSERT INTO HR.JOBS(JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)  VALUES('IT_WT','Technical Writer', 4000, 11000);
       若没有创建数据字典文件的文件的话,logminer出来的记录内容如下:
    insert into "UNKNOWN"."OBJ# 45522"("COL 1","COL 2","COL 3","COL 4") values (HEXTORAW('45465f4748'),HEXTORAW('546563686e6963616c20577269746572'),HEXTORAW('c229'),HEXTORAW('c3020b'));
     
    4.这个时候我们使用某个用户登录数据库后删除某个表


    SQL> connect sys/oracle as sysdba 


    Connected.


    SQL> drop tablespace indx;


    Tablespace dropped.


    SQL> alter system switch logfile;


    System altered.
    这个时候会产生一个归档日志文件,刚才删除表的操作就在这个文件里
     
    5.分析归档日志
    创建列表
    SQL> begin                                                                                                                                             
      2  sys.dbms_logmnr.add_logfile(LogFileName =>'/u01/app/archive/14_0001_0817556102.log',  Options     => dbms_logmnr.new);
      3  end;
      4  /

    PL/SQL procedure successfully completed.
    这里的归档日志文件14_0001_0817556102.log就是我们刚才switch生成的日志文件.
    当然还可以添加其他归档日志,看分析的需要,我们这里只分析一个归档日志文件.
    添加其他归档日志分析的过程如下:
    begin
      dbms_logmnr.add_logfile(LogFileName => '/u01/archive/15_0001_0817556102.log',
                              Options     => dbms_logmnr.addfile);
    end;


     6.开始使用LogMiner进行日志分析
     
    分析整个日志文件(没有任何条件)
    begin
      sys.dbms_logmnr.start_logmnr(DictFileName =>'/u01/logmine_dir/mylogmine.ora');
    end;
     
    若大概知道某个操作发生的时间,可以按照需要时间分析的过程如下:
    begin
      sys.dbms_logmnr.start_logmnr(DictFileName =>'/u01/logmine_dir/mylogmine.ora',
                                  startTime => to_date('2012-07-04 15:00:00','YYYY-MM-DD HH24:MI:SS'),
                                  endTime => to_date('2012-07-04 16:00:00','YYYY-MM-DD HH24:MI:SS')
                                  );
    end;
    我们这里分析的是整个日志文件,分析完成后,查看V$LOGMNR_CONTENTS试图的内容就是我们刚才分析得到的内容.注意V$LOGMNR_CONTENTS的内容是保留在PGA中的,查看这个试图需要在跟执行分析的过程在一个session中,否则在另外开一个session是查看不到的,而且会报ORA-01306错误.
    从V$LOGMNR_CONTENTS视图中可以查看得到我们刚才删除表的操作:
    SQL>select sql_redo from V$LOGMNR_CONTENTS 
        where upper(sql_redo) like '%TB_TEST%'
    SQL_REDO
    -----------------------------------
    ALTER TABLE "APP_USER"."TB_TEST" RENAME TO "BIN$w/uEl9lUoujgQAB/AQAW2w==$0" ;
    "drop table tb_test AS ""BIN$w/uEl9lUoujgQAB/AQAW2w==$0"" ;"
     
    7.结束分析
    begin
      sys.dbms_logmnr.end_logmnr;
    end;
     
    使用logminer的一些说明:
    1.分析日志所在的数据库平台必须跟产生日志的数据库平台保持一致;
    2.分析日志所在的数据库可以跟产生日志的数据库完全独立,或者是两者是同一个数据库;
    3.分析日志所在的数据库的版本比如高于产生日志的数据库的版本;
    4.分析日志所在的数据库的字符集必须跟产生日志的数据库的字符集保持一致;
    5.logminer数据字典文件必须在产生日志的数据库生成.
    展开全文
  • Logminer解析日志

    千次阅读 2019-02-07 20:32:36
    Logminer解析日志一、开启最小附加日志二、安装logmnr三、Logminer工具使用3.1 使用在线联机日志(online_catalog)3.2 把字典放到在线日志文件(REDO_LOGS)3.3 把字典生成OS上的一个文件(FLAT_FILE) 如果需要...
  • 查看归档文件序号select sequence#,first_time from v...查看归档日志大小du -m 归档日志文件 用sql语句确定要分析的归档日志文件select t.first_time,t.name from v$archived_log t order by t.first_time desc; ...
  •  执行完成以后,可以从v$logmnr_logs和v$logmnr_contents分别查看加载的日志文件和SQL REDO内容。  注意:LogMiner 只对会话有效。   SELECT operation,sql_redo,sql_undo FROM V$logmnr_contents 查看sql...
  • Oracle11g的logminer是默认打开的,所以不需要额外开启, 1、Logminer环境准备 ...确定归档日志是否打开 SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled ...
  • 主要介绍了Oracle 日志挖掘(LogMiner)使用,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • dictory模式:这种模式是将数据库的数据字典抽取到操作系统的一个文件里,利用这种方法也可以使用其他数据库来分析生产库的日志,但是这种方式必须设置UTL_FILE_DIR参数,这个参数是静态参数,修改后必须重启数据库...
  • Oracle异机logminer日志分析 日志分析 挖掘日志 分析
  • Oracle中使用LogMiner进行日志分析.pdf
  • Oracle Redo Log就像Oracle数据库的录像带,记录了数据库中的所有改变,Oracle Logminer工具可以有效地挖掘并且呈现出Redo Log中的事务变化,从而可以实现数据恢复、Oracle Redo Log机制的研究、数据库监控和审计、...
  • LogMiner工具的主要用途有: (1)跟踪数据库的变化:可以离线的跟踪数据库的...(3)优化和扩容计划:可通过分析日志文件中的数据以分析数据增长模式。 安装LogMiner工具,这两个脚本必须均以SYS用户身份运行@$...
  • logminer挖掘日志

    2016-12-16 00:04:43
    通过logminer挖掘日志文件、有助于恢复数据库文件、 是因为日志文件中记录了数据块的信息。 ----查看日志的位置和状态 SQL> col member for a45 SQL> select group...
  • Logminer使用(追加日志模式)

    千次阅读 2017-02-24 11:12:48
    Oracle数据使用LogMiner查看执行SQL语句,其中需要进行如下四步骤是指: 1、设置数据库为归档模式; 2、设置LogMiner字典文件路径等; 3、创建数据同步用户(如用户名为LOGMINER,该用户拥有DBA权限); 4...
  • LogMiner 一、LogMiner的用途 日志文件中存放着所有进行数据库恢复的数据,记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句。 在Oracle 8i之前,Oracle没有提供任何协助数据库管理员来读取和...
  • LogMiner是Oracle数据库提供的一个工具,它用于分析重做日志和归档日志所记载的事务操作。它既能分析redo log file,也能分析归档后的archive log file。Logminer也可以分析其它数...
  • oracle日志分析工具LogMiner使用
  • LogMiner用于日志的分析

    千次阅读 2016-07-12 17:41:54
    LogMiner可以用于日志的分析,跟踪数据库变化,回退数据库变化,对部分误操作数据进行恢复,误操作人员账号定位查看,结合工具完成基于日志事物级别增量数据传输。 1、LogMiner的安装; 首先确认一下咱们数据库上...
  • 使用Logminer查看表变更记录问题描述步骤分析与代码实现 问题描述 查看数据库表结构变化记录。 步骤分析与代码实现 安装Logminer:文件在linux中$ORACLE_HOME/rdbms/admin目录下dbmslm.sql和dbmslmd.sql两个文件,先...
  • Oracle日志挖掘之LogMiner官方文档地址:http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL019本文转自:http://blog.itpub.net/26736162/viewspace-2141148/众所周知,所有对用户数据和...
  • 日志挖掘:logminer 作用: 通过对日志的分析,能够获得用户的dml操作语句,用来修复用户数据的丢失或者是错误; 能够通过日志挖掘,获得用户操作的反向操作(undo_sql)或者正向操作(redo_sql); 实现条件: 执行日志...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,352
精华内容 1,740
关键字:

logminer如何查看日志