使用Oracle Logminer同步Demo

1 Demo介绍 1.1 Demo设想

前面介绍了Oracle LogMiner配置使用以及使用LogMiner进行解析日志文件性能,在这篇文章中将利用LogMiner进行数据同步,实现从源目标数据库到目标数据库之间的数据同步。由于LogMiner支持的版本是8.1及以上,所以进行数据同步的Oracle数据库版本也必须是8.1及以上。

Oracle Logminer性能测试 

Oracle Logminer配置使用图文详解

当然在本文中介绍的是LogMiner进行数据同步例子,也可以利用LogMiner进行数据审计、数据操作追踪等功能,由于这些从操作原理来说是一致,在本文不做讨论。

1.2 框架图

clip_image002[6]

1.3 流程图

clip_image002[4]

l 配置阶段

1、 控制端:指定源端、目标端数据库信息、LOGMINER同步时间等配置信息;

l 获取源端同步数据

2、 控制台:通过定时轮询的方式检测是否到达数据同步时间,如果是则进行数据同步,否则继续进行轮询;

3、 源数据库:定时加载数据库归档日志文件到动态表v$logmnr_contents中;

4、 源数据库:根据条件读取指定sql语句;

l 目标端数据入库

5、 源数据库:执行sql语句。

2 代码分析 2.1 目录及环境配置

在该Demo项目中需要引入Oracle JDBC驱动包,具体项目分为四个类:

1. Start.java:程序入口方法;

2. SyncTask.java:数据同步Demo核心,生成字典文件和读取日志文件、目标数据库执行SQL语句等;

3. DataBase.java:数据库操作基础类;

4. Constants.java:源数据库、目标数据库配置、字典文件和归档文件路径。

clip_image006[4]

2.2 代码分析 2.2.1 Constants.java

在该类中设置了数据同步开始SCN号、源数据库配置、目标数据库配置以及字典文件/日志文件路径。需要注意的是在源数据库配置中有两个用户:一个是调用LogMiner用户,该用户需要拥有dbms_logmnr、dbms_logmnr_d两个过程权限,在该Demo中该用为为sync;另外一个为LogMiner读取该用户操作SQL语句,在该Demo中该用为为LOGMINER。

package com.constants;

/**
* [Constants]|描述:Logminer配置参数
* @作者: ***
* @日期: 2013-1-15 下午01:53:57
* @修改历史:
*/
public class Constants {
   
   
/** 上次数据同步最后SCN号*/
    public static String LAST_SCN = "0";

   
/** 源数据库配置*/
    public static String DATABASE_DRIVER="oracle.jdbc.driver.OracleDriver";
   
public static String SOURCE_DATABASE_URL="jdbc:oracle:thin:@127.0.0.1:1521:practice";
   
public static String SOURCE_DATABASE_USERNAME="sync";
   
public static String SOURCE_DATABASE_PASSWORD="sync";
   
public static String SOURCE_CLIENT_USERNAME = "LOGMINER";
   
   
/** 目标数据库配置*/
    public static String SOURCE_TARGET_URL="jdbc:oracle:thin:@127.0.0.1:1521:target";
   
public static String SOURCE_TARGET_USERNAME="target";
   
public static String SOURCE_TARGET_PASSWORD="target";
   
   
/** 日志文件路径*/
    public static String LOG_PATH = "D:\\oracle\\oradata\\practice";
   
   
/** 数据字典路径*/
    public static String DATA_DICTIONARY = "D:\\oracle\\oradata\\practice\\LOGMNR";
}

2.2.2 SyncTask.java

在该类中有两个方法,第一个方法为createDictionary,作用为生成数据字典文件,另外一个是startLogmur,该方法是LogMiner分析同步方法。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2918f9d192ee3c1820a3c125254b6d51.html