Oracle Logminer快速使用详解

 更新时间:2021年10月09日 09:52:27   作者:不如打代码KK  
这篇文章主要介绍了Oracle Logminer使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、Logminer是什么?

LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重做日志文件(归档日志文件)中的具体内容,LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图组成,它作为Oracle数据库的一部分来发布,是oracle公司提供的一个完全免费的工具。

具体的说: 对用户数据或数据库字典所做的所有更改都记录在Oracle重做日志文件RedoLog中,Logminer就是一个解析RedoLog的工具,通过Logminer解析RedoLog可以得到对应的SQL数据。

Oracle 中的RedoLog写入流程: Oracle重做日志采用循环写入的方式,每一个Oracle实例至少拥有2组日志组。Oracle重做日志一般由Oracle自动切换,重做日志文件在当LGWR进程停止写入并开始写入下一个日志组时发生切换,或在用户收到发出ALTER SYSTEM SWITCH LOGFILE时发生切换。如果Oracle数据库开启了归档功能,则在日志组发生切换的时候,上一个日志组的日志文件会被归档到归档目录里。

从上面可知 Oracle里的RedoLog文件分为两种:

  • 当前写的日志组的文件,可通过v$logv$logfile得到
  • 归档的redoLog文件,可通过 v$archived_log 得到

通过循环查找到最新符合要求的RedoLog并让Logminer加载分析,分析的数据在视图 v$logmnr_contents 里,通过读取 v$logmnr_contents 就可以得到 Oracle的实时数据。

二、Logminer快速使用

配置Logminer请参考Oracle配置LogMiner文档。

#1、准备测试数据(test用户)
SQL> conn test/123456
SQL> CREATE TABLE test(id varchar2(100));   
INSERT INTO test (id) values  ('000001');  
INSERT INTO test (id) values  ('000011');
commit;

说明:一下步骤皆在logminer_test用户下执行
#2、查看数据库当前联机日志文件
SQL>SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;
#发现只有redo001是当前状态。

#3、将需要解析的在线日志文件加入
SQL>exec dbms_logmnr.add_logfile('/home/oracle/app/oracle/oradata/orcl11g/redo01.log', dbms_logmnr.new);

#4、启动Logminer
SQL>
begin
SYS.DBMS_LOGMNR.START_LOGMNR (
options => SYS.DBMS_LOGMNR.skip_corruption + 
SYS.DBMS_LOGMNR.no_sql_delimiter + 
SYS.DBMS_LOGMNR.no_rowid_in_stmt + 
SYS.DBMS_LOGMNR.dict_from_online_catalog + 
SYS.DBMS_LOGMNR.string_literals_in_stmt 
);
end;
 
#5、查询重做日志
SQL>select * from V$LOGMNR_CONTENTS;

#6、停止Logminer
SQL>exec dbms_logmnr.end_logmnr;

三、Logminer的具体使用

 1.配置Logminer

请参考Oracle配置LogMiner文档。

2.使用Logminer

1.指定LogMiner字典。
2.指定重做日志文件列表以进行分析。 使用 DBMS_LOGMNR.ADD_LOGFILE 过程,或指示LogMiner在启动LogMiner时自动创建要分析的日志文件列表(在步骤3中)。
3.启动LogMiner。 使用 DBMS_LOGMNR.START_LOGMNR 程序。
4.请求感兴趣的重做数据。 查询V$LOGMNR_CONTENTS视图。(您必须具有SELECT ANY TRANSACTION查询此视图的权限)
5.结束LogMiner会话。 使用 DBMS_LOGMNR.END_LOGMNR程序。

3.Logminer字典

LogMiner字典作用

Oracle数据字典记录当前所有表的信息,字段的信息等等。LogMiner使用字典将内部对象标识符和数据类型转换为对象名称和外部数据格式。如果没有字典,LogMiner将返回内部对象ID,并将数据显示为二进制数

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'));

Logminer字典选项

LogMiner字典的选项支持三种:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R2CA7hWc-1633660733574)(http://note.youdao.com/yws/res/612/WEBRESOURCEb0b3ba1b987bc083fc09c6dae89c77e2)]

4.指定Logminer重做日志文件

要启动新的重做日志文件列表,需要使用 DBMS_LOGMNR.NEW 以表明这是新列表的开始

EXECUTE DBMS_LOGMNR.ADD_LOGFILE( 
   LOGFILENAME => '/oracle/logs/log1.dbf',
   OPTIONS => DBMS_LOGMNR.NEW);

可以使用下列语句额外再添加日志文件

EXECUTE DBMS_LOGMNR.ADD_LOGFILE( 
   LOGFILENAME => '/oracle/logs/log2.dbf', 
   OPTIONS => DBMS_LOGMNR.ADDFILE);

5.启动LogMiner

使用 DBMS_LOGMNR.START_LOGMN 启动Logminer。可以指定参数:

指定LogMiner如何过滤返回的数据(例如,通过开始和结束时间或SCN值)

指定用于格式化LogMiner返回的数据的选项

指定要使用的LogMiner词典

主要的参数有:

   OPTIONS参数说明:
     * DBMS_LOGMNR.SKIP_CORRUPTION - 跳过出错的redlog
     * DBMS_LOGMNR.NO_SQL_DELIMITER - 不使用 ';'分割redo sql
     * DBMS_LOGMNR.NO_ROWID_IN_STMT - 默认情况下,用于UPDATE和DELETE操作的SQL_REDO和SQL_UNDO语句在where子句中包含“ ROWID =”。
     *                                但是,这对于想要重新执行SQL语句的应用程序是不方便的。设置此选项后,“ ROWID”不会放置在重构语句的末尾
     * DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG - 使用在线字典
     * DBMS_LOGMNR.CONTINUOUS_MINE - 需要在生成重做日志的同一实例中使用日志
     * DBMS_LOGMNR.COMMITTED_DATA_ONLY - 指定此选项时,LogMiner将属于同一事务的所有DML操作分组在一起。事务按提交顺序返回。
     * DBMS_LOGMNR.STRING_LITERALS_IN_STMT - 默认情况下,格式化格式化的SQL语句时,SQL_REDO和SQL_UNDO语句会使用数据库会话的NLS设置
     *                                       例如NLS_DATE_FORMAT,NLS_NUMERIC_CHARACTERS等)。使用此选项,将使用ANSI / ISO字符串文字格式

示例

EXECUTE DBMS_LOGMNR.START_LOGMNR( 
   STARTTIME => '01-Jan-2003 08:30:00', 
   ENDTIME => '01-Jan-2003 08:45:00', 
   OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + 
   DBMS_LOGMNR.CONTINUOUS_MINE);

6 在V$LOGMNR_CONTENTS中查询感兴趣的重做数据

Logminer会解析redoLog里的日志加载到 v L O G M N R C O N T E N T S 视 图 里 , 我 们 只 需 要 使 用 s q l 查 询 即 可 获 取 对 应 数 据 v LOGMNR_CONTENTS 视图里,我们只需要使用 sql查询 即可获取对应数据 v LOGMNRC​ONTENTS视图里,我们只需要使用sql查询即可获取对应数据vLOGMNR_CONTENTS视图相关字段 https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_1154.htm

主要字段有:

数据类型 描述
SCN NUMBER oracle为每个已提交的事务分配唯一的scn
OPERATION VARCHAR2(32) INSERT UPDATE DELETE DDL COMMIT ROLLBACK…
SEG_OWNER VARCHAR2(32) schema
TABLE_NAME VARCHAR2(32) 表名
TIMESTAMP DATE 数据库变动时间戳
SQL_REDO VARCHAR2(4000) 重建的SQL语句,该语句等效于进行更改的原始SQL语句

示例

SELECT
    scn,
    timestamp,
    operation,
    seg_owner,
    table_name,
    sql_redo,
    row_id,
    csf
FROM
    v$logmnr_contents
WHERE
    scn > ?

查询出来的数据示例:

到此这篇关于Oracle Logminer使用的文章就介绍到这了,更多相关Oracle Logminer内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Oracle块修改跟踪功能

    详解Oracle块修改跟踪功能

    块修改跟踪功能是指使用二进制文件记录数据库中数据库更改的过程。这篇文章主要介绍了Oracle块修改跟踪功能,需要的朋友可以参考下
    2021-11-11
  • Oracle性能究极优化 下

    Oracle性能究极优化 下

    Oracle性能究极优化 下...
    2007-03-03
  • Oracle控制文件丢失恢复归档模式方法

    Oracle控制文件丢失恢复归档模式方法

    这篇文章主要为大家介绍了Oracle控制文件丢失恢复归档模式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-07-07
  • Oracle中如何处理空值函数(NVL、NVL2、NULLIF等)详解

    Oracle中如何处理空值函数(NVL、NVL2、NULLIF等)详解

    本文详细介绍了Oracle数据库中处理空值的常用函数,包括NVL()、NVL2()、NULLIF()、COALESCE()及DECODE()和CASE()函数,这些函数在数据库查询和数据处理中发挥重要作用,帮助开发者有效处理空值问题,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • 如何使用log miner分析oracle日志

    如何使用log miner分析oracle日志

    日常生活中,我们经常因为操作失误丢失数据或者是更改数据,如何进行恢复呐?这篇文章就是帮助我们解决这一困扰,需要的朋友可以参考下
    2015-07-07
  • Oracle客户端的安装与远程连接配置方法分享

    Oracle客户端的安装与远程连接配置方法分享

    在继续Oracle客户端的安装之前,需要分析一下Oracle客户端与数据库服务器之间的连接机制
    2012-11-11
  • Oracle知识整理笔记

    Oracle知识整理笔记

    这是一篇Oracle知识整理笔记,包括SQL Server和Oracle的比较、Oracle中基本的概念和关系、管理工具pl/sql Developer和如何分配权限和角色,需要的朋友可以参考下
    2015-09-09
  • oracle 分页问题解决方案

    oracle 分页问题解决方案

    测试说分页查询貌似不起作用,翻到第4页以后,看到的数据结果都是相同的,此等问题应该如何解决,本文将详细介绍
    2012-11-11
  • PLSQL14下载与安装使用教程

    PLSQL14下载与安装使用教程

    PL/SQL Developer 14是allround automations最新推出的一款PL/SQL数据库管理软件,但是是收费的,今天小编给大家带来了PLSQL14下载与安装使用教程,一起看看吧
    2021-09-09
  • Oracle 查看表空间的大小及使用情况sql语句

    Oracle 查看表空间的大小及使用情况sql语句

    表空间使用情况包括:查看表空间的名称及大小/查看表空间物理文件的名称及大小/查看回滚段名称及大小等等感兴趣的你可以参考下本文
    2013-03-03

最新评论