美文网首页FlinkX
初识FlinkX-Oracle Logminer模块

初识FlinkX-Oracle Logminer模块

作者: 袋鼠云数栈 | 来源:发表于2021-03-17 17:47 被阅读0次

本文作者:杨槐(花名:渡劫)袋鼠云大数据开发工程师,负责FLinkx的开发与维护。

本文首发于:数栈研习社

我们在github上还有关于FlinkX的开源项目,欢迎大家给我们点个star~


FlinkX-Oracle Logminer模块是FlinkX基于Logminer对Oracle重做日志进行实时采集分析,可对Oracle进行实时同步也可以通过指定SCN或者时间戳从某个节点进行同步,同时通过记录SCN号支持续跑功能。

一、Logminer介绍与使用

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

Logminer读取重做日志文件的内容并加载到视图v$logmnr_contents中,可通过SQL对视图v$logmnr_contents 读取获取到实时数据。

1、Oracle重做日志

Oracle的重做日志分为在线重做日志和归档重做日志。

Online Redo log files--在线重做日志,又称联机重做日志,指Oracle以SQL脚本的形式实时记录数据库的数据更新,换句话说,实时保存已执行的SQL脚本到在线日志文件中(按特定的格式)。

Archive Redo log files--归档重做日志,简称归档日志,指当条件满足时,Oracle将在线重做日志以文件形式保存到硬盘(持久化)。

2、补充日志

补充日志不是独立的一种日志,为了性能考虑,在Update时,重做日志默认只记录更改字段的前后值,而开启了补充日志后,会将更新前后的所有字段的值记录。

3、Oracle重做日志写入流程

Oracle重做日志采用循环写入的方式,每一个Oracle实例至少拥有2组日志组。

Oracle重做日志一般由Oracle自动切换,重做日志文件在当LGWR进程停止写入并开始写入下一个日志组时发生切换,或在用户收到发出ALTER SYSTEM SWITCH LOGFILE时发生切换。如果Oracle数据库开启了归档功能,则在日志组发生切换的时候,上一个日志组的日志文件会被归档到归档目录里。

4、Logminer字典

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

对于下面的Insert语句

没有设置字典显示的内容为:

Logminer提供了三种字典选项:

    Using the Online Catalog

    Extracting a Logminer Dictionary to the Redo Log Files

    Extracting the Logminer Dictionary to a Flat File

FlinkX使用的是Online Catalog

5、Logminer 使用步骤

第一步:为Logminer增加日志文件

第二步:开启Logminer

第三步:读取数据

查出的数据格式如下图所示:

二、FlinkX和Logminer集成

1、Logminer模块流程解析

Logminer模块主要分为三部分

1)日志文件查找:

查询在线日志与归档日志

2)日志文件加载及开启Logminer

将日志文件加载到Logminer中,Logminer会将日志文件内容转化到v$logmnr_contents视图里

3) 数据查询与解析

根据过滤条件,查询v$logmnr_contents数据,获得数据,并对sql_redo字段内容进行解析

2、日志文件的查找

Logminer通过加载重做日志文件,将其中的内容根据字典转化到v$logmnr_contents中,因此第一步为Logminer找到需要加载的重做日志文件

Oracle 重做日志文件分为在线重做日志和归档重做日志,其中在线重做日志可以在v$log以及v$logfile中查询到,而归档重做日志可以在v$archived_log查找到,一般是通过scn号进行查询过滤。

3、日志文件的加载与开启

将日志文件加载到Logminer中,并开启Logminer

Logminer第一次添加日志

SYS.DBMS_LOGMNR.add_logfile(l_log_rec.name, SYS.DBMS_LOGMNR.new)

Logminer后续添加日志

SYS.DBMS_LOGMNR.add_logfile(l_log_rec.name)

开启Logminer

4、查找数据

Logminer会将加载的日志文件内容输出到视图v$logmnr_contents里,只需要按照一定的过滤条件查找到自己想要监听的数据即可。目前仅支持表名以及对应的动作(update/delete/insert)进行过滤。

三、Logminer实战示例

Logminer->hive脚本

相关文章

  • 初识FlinkX-Oracle Logminer模块

    本文作者:杨槐(花名:渡劫)袋鼠云大数据开发工程师,负责FLinkx的开发与维护。 本文首发于:数栈研习社[htt...

  • 分析oracle的联机日志和归档日志

    @TOC分析ORACL的联机日志和归档日志 logminer和配置 安装logminer 以sqlplus / a...

  • Oracle LogMiner 数据迁移实战

    LogMiner 是什么 LogMiner 是Oracle官方提供的工具,可以解析 Redo log 和 Arch...

  • 初识模块

    模块=库 分为标准库(不需要安装,直接可以用) 和第三方库 (需要安装在site-Packages) 使用模块还可...

  • Oracle logminer

    归档日志量统计 日志生成量最大的对象 (按小时统计) 使用logminer分析归档日志 1.使用脚本创建相关的包 ...

  • oracle enable LogMiner

    1. Enable LogMiner 2. Enable Supplemental Logging For 12c...

  • CocosCreator教程(编辑器篇)

    目录一、界面整体展示二、重点模块展示三、重点模块简述 系列教程CocosCreator教程(初识篇)CocosCr...

  • StreamSets:Oracle CDC Client

    Oracle CDC Client(为方便处理,下文中用OCC代替)处理由Oracle LogMiner r...

  • Python基础(6)-初识模块和字节码

    6.1-初识模块: 在Python中,一个.py文件就称之为一个模块(Module)。 使用模块的好处: 最大的好...

  • python queue模块详解

    大家好,我是剑南。 本篇文章,为大家带来的是queue模块的详解! 初识queue模块 queue模块实现了多生产...

网友评论

    本文标题:初识FlinkX-Oracle Logminer模块

    本文链接:https://www.haomeiwen.com/subject/qpmdcltx.html