返回顶部
首页 > 资讯 > 数据库 >LogMiner工具小结
  • 692
分享到

LogMiner工具小结

2024-04-02 19:04:59 692人浏览 独家记忆
摘要

(一)LogMiner工具的作用Logminer工具主要用来分析redo log和arcHive log文件。通过该工具,可以轻松获得oracle redo log和archive log文件的具体内容,甚

(一)LogMiner工具的作用
Logminer工具主要用来分析redo log和arcHive log文件。通过该工具,可以轻松获得oracle redo log和archive log文件的具体内容,甚至,可以获得用户对数据库进行的DDL、DML操作。另外还可分析得到一些需要回滚的sql语句。该工具特别适合调试、审计以及回退某个特定的对象。Logminer的作用总结如下:
1.跟踪数据库的变化,可以离线跟踪数据的变化,而不会影响在线的性能;
2.回退数据库的变化,回退特定的变化的数据,减少point-in-time recovery的执行 ;
3.确定事物级要执行的精细逻辑恢复操作,通过查询log,取得需要的undo语句;
4.审计,查看具体用户对数据库做的具体操作。

注意:
1.LogMiner不支持ioT表、Long、LOB及集合类型;

 

(二)如何使用
(1)安装LogMiner
通常在安装数据库后就已经安装了Logminer,要查看数据库是否安装了LogMiner,只需查看数据库中是否已经有了dbms_logmnr和dbms_logmnr_d这2个package,如果有了,则已经安装,如果没有,执行下面两个脚本即可:

$ORACLE_HOME/rdbms/admin/dbmslm.sql$ORACLE_HOME/rdbms/admin/dbmslmd.sql

需要注意,两个脚本须用DBA用户身份运行。第1个脚本用来创建dbms_logmnr包,该包用来分析日志文件,第2个脚本用来创建dbms_logmnr_d包,该包用来创建数据字典文件。

创建完成后数据库中将多出4个procedure和3个view,具体如下:
1. dbms_logmnr_d.build :创建一个数据字典文件;
2. dbms_logmnr.add_logfile :添加日志文件以供分析;
3. dbms_logmnr.start_logmnr :开始分析日志文件;
4. dbms_logmnr.end_logmnr :结束分析日志文件;

1.v$logmnr_dictionary :显示字典文件的信息;
2.logmnr_logs :在LogMiner启动时显示要分析的日志列表;
3.logmnr_contents :Logminer启动后,可以使用该view查看日志文件的内容。
需要注意,这里的view是session相关,其它session是查看不到的,仅仅可以在当前session中查看。

(2)如果要分析归档数据,需要数据库需处于归档模式下,通过如下命令查看归档模式

LogMiner工具小结

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            /home/app/oracle/oradata/orcl/arch_log
最早的联机日志序列     46下一个存档日志序列   49当前日志序列           49

LogMiner工具小结

(3)创建数据字典之前需要修改spfile参数utl_executefile_dir,由于是静态参数需要重启数据库

SQL> create directory utlfile as '/home/oracle/logmnr';
 
Directory created

SQL> alter system set utl_executefile_dir = '/home/oracle/logmnr' scope=spfile;

(4)生成数据字典文件(可选)
在使用LogMiner工具之前,可以使用dbms_logmnr_d.build创建一个数据字典文件,创建该文件的目的是将数据字典导出为一个文本文件,该文件是可选的,但是如果没有该文件,LogMiner解释出的关于数据字典中的部分,如表名、列名、元数据将会以16进制的形式展现,我们是无法理解的。
需要注意的是,如果我们要分析的数据库中的表发生了变化,影响到数据字典信息也发生了变化,那么我们在进行分析时,就需要重新生成数据字典文件。
创建数据字典文件需要以dba身份进行,创建到上面建好的logmnr文件中

LogMiner工具小结

begindbms_logmnr_d.build(dictionary_filename=>'dict.ora',
dictionary_location=>'/home/oracle/logmnr',
options=>dbms_logmnr_d.store_in_flat_file);end;/

LogMiner工具小结

(5)加入需要分析的日志文件
LogMiner可以对重做日志文件(redo log)和归档日志文件(archive log)进行分析,加入要分析的日志文件使用dbms_logmnr.add_logfile过程,第一个文件使用参数dbms_logmnr.NEW参数,后面的文件使用dbms_logmnr.ADDFILE参数。
step1:创建列表,添加第1个文件:

BEGIN
  dbms_logmnr.add_logfile(logfilename=>'/home/app/oracle/oradata/orcl/arch_log/1_49_936489730.dbf',options=>dbms_logmnr.NEW);END;/

step2:添加其它文件到列表

BEGIN
  dbms_logmnr.add_logfile(logfilename=>'/home/app/oracle/oradata/orcl/arch_log/1_50_936489730.dbf',options=>dbms_logmnr.ADDFILE);
  dbms_logmnr.add_logfile(logfilename=>'/home/app/oracle/oradata/orcl/arch_log/1_51_936489730.dbf',options=>dbms_logmnr.ADDFILE);END;/

(6)使用Logminer文件进行分析

LogMiner分析日志文件可以设置限制条件,也可不设置限制条件,不设置限制条件会对加载的全部日志文件进行分析,设置了限制条件,只会对符合条件的日志进行分析。

(6.1)不限制条件

EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dict.ora');

(6.2)有限制条件

通过对dbms_logmnr.start_logmnr中几个不同参数的设置,可以缩小要分析的日志文件的范围,通过设置起始时间和终止时间参数,我们可以限制只
分析某一个时间段内的日志文件。
参数:

参数                 类型               默认值                解释

--------------   -----------     --------------     ------------------------------------------------
StartScn          number         0                        分析日志文件中scn > StartScn的日志文件
EndScn            number         0                       分析日志文件中scn < EndScn的日志文件
StartTime         date             1998-01-01        分析日志文件中时间戳 > StartTime的日志文件
EndTime           date             2988-01-01        分析日志文件中时间戳 < EndTime的日志文件
DictFileName     varchar()                                数据字典文件的位置

(7)观察分析结果
通过第(6)步,我们已经得到了重做日志文件的内容,通过动态数据字典v$logmnr_contents可以查看到所有的信息。

select * from v$logmnr_contents;

v$logmnr_contents的部分栏位信息:

栏位                                          解释
---------------------------          ------------------------------------

SCN                                          查询的特定数据的SCN号
TIMESTAM                                 数据改变发生的时间
COMMIT_TIMESTAMP                  数据改变提交的时间
SEG_OWNER                             数据发生改变的段名称
SEG_NAME                                段的所有者的名称
SEG_TYPE                                 数据发生改变的段类型
SEG_TYPE_NAME                       数据发生改变的段类型名称
TABLE_SPACE                           变化段的表空间
ROW_ID                                   数据变化行的ID
SESSION_INFO                          数据发生变化时会话信息
OPERATION                               日志中记录的操作
SQL_REDO                               日志中记录的指定行变化的SQL语句(正向操作)
SQL_UNDO                               为重做日志记录回退或恢复制定行变化的SQL语句

 

(三)一次LogMiner使用测试

(1)查看归档,下一个归档log是53

LogMiner工具小结

SQL> archive log listDatabase log mode           Archive Mode
Automatic archival           Enabled
Archive destination           /home/app/oracle/oradata/orcl/arch_log
Oldest online log sequence     50Next log sequence to archive   53Current log sequence           53

LogMiner工具小结

(2)查看数据字典存放位置

SQL> show parameter utl_file_dir

NAME            TYPE        VALUE-------------   --------    -----------------------utl_file_dir    string      /home/oracle/LOGMNR

(3)创建一张测试用的表

LogMiner工具小结

SQL> create table test06 
  2  (  3  id number,  4  name varchar(15)  5  ); 
Table created
 
SQL> insert into test06 values(1,'lijiaman'); 
1 row inserted
 
SQL> insert into test06 values(2,'wangyujie'); 
1 row inserted

LogMiner工具小结

(4)将redo归档

SQL> alter system switch logfile;
 
System altered

(5)查看归档情况

LogMiner工具小结

SQL> archive log listDatabase log mode           Archive Mode
Automatic archival           Enabled
Archive destination           /home/app/oracle/oradata/orcl/arch_log
Oldest online log sequence     50Next log sequence to archive   53Current log sequence           53SQL> archive log list;Database log mode           Archive Mode
Automatic archival           Enabled
Archive destination           /home/app/oracle/oradata/orcl/arch_log
Oldest online log sequence     51Next log sequence to archive   54Current log sequence           54

LogMiner工具小结

(6)创建数据字典文件

LogMiner工具小结

begindbms_logmnr_d.build(dictionary_filename=>'dictionary.ora',
dictionary_location=>'/home/oracle/LOGMNR',
options=>dbms_logmnr_d.store_in_flat_file);end;/

LogMiner工具小结

(7)添加要分析的归档日志文件
(7.1)先到OS上找到归档文件:

[oracle@localhost LOGMNR]$ cd /home/app/oracle/oradata/orcl/arch_log
[oracle@localhost arch_log]$ ls1_49_936489730.dbf  1_50_936489730.dbf  1_51_936489730.dbf  1_52_936489730.dbf  1_53_936489730.dbf

(7.2)创建归档日志文件列表

LogMiner工具小结

SQL> begin
  2  dbms_logmnr.add_logfile(LogFileName => '/home/app/oracle/oradata/orcl/arch_log/1_53_936489730.dbf',Options => dbms_logmnr.new);  3  end;  4  /
 PL/SQL procedure successfully completed

LogMiner工具小结

(7.3)如果不确定待分析的数据是否在上面添加的归档日志文件中,可以多添加几个

LogMiner工具小结

BEGIN
  dbms_logmnr.add_logfile(logfilename=>'/home/app/oracle/oradata/orcl/arch_log/1_51_936489730.dbf',options=>dbms_logmnr.ADDFILE);
  dbms_logmnr.add_logfile(logfilename=>'/home/app/oracle/oradata/orcl/arch_log/1_52_936489730.dbf',options=>dbms_logmnr.ADDFILE);END;/PL/SQL procedure successfully completed

LogMiner工具小结

(8)开始分析

SQL> EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/LOGMNR/dictionary.ora');
 
PL/SQL procedure successfully completed

(9)查看结果

LogMiner工具小结

SQL> select c.timestamp,c.operation,c.table_space,c.sql_redo,c.sql_undo  from v$logmnr_contents c where c.seg_owner='LIJIAMAN';                                                                         
                                                                                                                                                                                                        
TIMESTAMP   OPERATION   TABLE_SPACE   SQL_REDO                                                                         SQL_UNDO                                                                         
----------- ----------- ------------- ----------------------------------------------------------------------   --------------------------------------------------------------------------------         2017/4/25 2 DDL                                                                                                                                                                                         
                                      create table test06                                                                                                                                               
                                      (                                                                                                                                                                 
                                      id number,                                                                                                                                                        
                                      name varchar(15)                                                                                                                                                  
                                      )                                                                                                                                                                 
                                      ;                                                                                                                                                                 
                                                                                                                                                                                                        
2017/4/25 2 INSERT      USERS         insert into "LIJIAMAN"."TEST06"("ID","NAME") values ('1','lijiaman');     delete from "LIJIAMAN"."TEST06" where "ID" = '1' and "NAME" = 'lijiaman' and ROW        
2017/4/25 2 INSERT      USERS         insert into "LIJIAMAN"."TEST06"("ID","NAME") values ('2','wangyujie');    delete from "LIJIAMAN"."TEST06" where "ID" = '2' and "NAME" = 'wangyujie' and RO

LogMiner工具小结



您可能感兴趣的文档:

--结束END--

本文标题: LogMiner工具小结

本文链接: https://lsjlt.com/news/42546.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • LogMiner工具小结
    (一)LogMiner工具的作用Logminer工具主要用来分析redo log和archive log文件。通过该工具,可以轻松获得Oracle redo log和archive log文件的具体内容,甚...
    99+
    2024-04-02
  • Spring Boot Docker打包工具小结
    目录Spring Boot Dockerspring-boot-maven-pluginSpotify Maven PluginJib Maven Plugin 最近公司的应用准备容...
    99+
    2024-04-02
  • App与小程序工具总结
    文章目录 前言Burpsuite抓包问题LPosed+JustTrustMe 绕过 SSL Pining小程序的反编译APP脱壳,反射大师、frida反射大师Frida 总结 前言 ...
    99+
    2023-09-06
    小程序 web安全 web app
  • Python3小工具——结合nmap扫描
    一、工具说明调用nmap库实现端口扫描二、演示一下的利用效果三、代码+注释import nmap import argparse def nmapScan(Host, Port):     # 调用nmap的PortScanner类   ...
    99+
    2023-01-31
    小工具 nmap
  • SpringBoot的三大开发工具小结
    目录一、SpringBoot Dedevtools二、Lombok三、Spring Configuration Processor一、SpringBoot Dedevtools 他是...
    99+
    2024-04-02
  • C++实现结束应用进程小工具
    C++实现结束应用进程小工具(windows) 说明: 在电脑上一些软件或系统有时可能会将程序偷偷运行在后台,占用计算机资源的情况。一般我们通过可以找到程序文件所在位置,禁止程序启动...
    99+
    2024-04-02
  • 10大HBase常见运维工具整理小结
    摘要:HBase自带许多运维工具,为用户提供管理、分析、修复和调试功能。本文将列举一些常用HBase工具,开发人员和运维人员可以参考本文内容,利用这些工具对HBase进行日常管理和运维。 HBase组件介绍 HBase作...
    99+
    2022-06-04
    HBase 运维工具
  • JavaScript中的50+个实用工具函数小结
    JavaScript可以做很多出色的事情,本篇文章给大家整理50+个实用工具函数,可以帮助你提高工作效率并可以帮助调试代码 1、isStatic: 检测数据是不是除了symbol外...
    99+
    2024-04-02
  • C++如何实现结束应用进程小工具
    这篇文章给大家分享的是有关C++如何实现结束应用进程小工具的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C++实现结束应用进程小工具(windows)说明:在电脑上一些软件或系统有时可能会将程序偷偷运行在后台,占...
    99+
    2023-06-15
  • tcping实用小工具
    Tcping----实用小工具tcping命令详解 一、tcping介绍 tcping:tcping命令基于tcp协议监控,可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从容硬线连接到分组交换或电路交换网...
    99+
    2023-09-04
    网络 服务器 tcp/ip
  • MAC电脑小工具 -ClipMenu
        ClipMenu 是什么? ClipMenu 是 Mac 下菜单栏上的剪贴板管理工具,会记录你的所有拷贝记...
    99+
    2019-10-19
    MAC电脑小工具 -ClipMenu
  • python学习-python小工具
    一、启动python下载服务器pyththon -m SimpleHTTPServer 执行该命令会在当前目录下启动一个文件下载服务器,默认打开8000端口二、安装pipwget https://files.pythonhosted.org...
    99+
    2023-01-31
    小工具 python
  • wordpress小工具有哪些
    wordpress小工具有:1、文章存档,用来显示网站上过去的文章的存档;2、近期文章,显示网站上最近发布的文章;3、分类目录,显示网站上的文章按类别进行分类;4、标签云,以视觉方式显示网站上的标签;5、最新评论,显示最近在网站上发表的评论...
    99+
    2023-07-10
  • Java常用工具类总结
    目录一、线程协作、控制并发流程的工具类二、CountDownLatch倒计时门闩三、Semaphore信号量四、Condition接口(又称条件对象)五、CyclicBarrier和...
    99+
    2024-04-02
  • Python内置工具(tools)总结
    Python提供了以下几个内置tools模块,简化开发 operator collections itertools functools 除此之外,还有一些其他工具,比如mimetools、unittest等,上述四个tools作...
    99+
    2023-01-31
    工具 Python tools
  • stackoverflow常用工具库总结
    目录简介API概览安装和使用简介 每个前端开发人员都有自己的 utils 库, 这些方法我们高频使用,但又要在每个项目中重写。 今天我要给大家介绍一款超小且实用的函数工具库:&nb...
    99+
    2023-03-06
    stackoverflow工具库 stackoverflow常用工具
  • golang可以做小工具吗
    golang可以做小工具,其原因是:1、具有出色的性能;2、拥有强大的并发编程能力;3、具有丰富的标准库和第三方库支持;4、语法简洁,易于理解和维护;5、具有跨平台的特性。本文操作环境:Windows10系统、go1.20版本、DELL G...
    99+
    2023-07-17
  • Python实现翻译小工具
    一、背景利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面。 二、代码git源码地址Python实现翻译小工具 fanyi.py代码如下: #!/...
    99+
    2023-01-31
    小工具 Python
  • python实用小工具介绍
    一、秒级启动一个HTTP下载服务器在实际工作中,时不时会有这样的一个需求:将文件传给其他同事。将文件传给同事本身并不是一个很繁琐的工作,现在的聊天工具一般都支持文件传输。但是,如果需要传送的文件较多,那么,操作起来就会比较麻烦。此外,如果文...
    99+
    2023-01-31
    小工具 python
  • Python实现MySQL DBA小工具
      我们知道MySQL所有的运行状态统计信息都能从“show global status”语句的结果集中查看,该结果集保存的是从MySQL启动到当前时间之间各状态值的“总数”,对我们的分析不友好。在我们日常维护和优化中,我们需要持续的跟踪某...
    99+
    2023-01-31
    小工具 Python MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作