0
点赞
收藏
分享

微信扫一扫

迁移没有创建日期的表

       LogMiner是Oracle Database的一种工具,可用于读取数据库中的日志文件。它可以用于跟踪数据库中所发生的变化,包括增、删、改、DDL操作等。 通过LogMiner,我们可以轻松地获取数据库中的变化信息, 以及数据库中历史的数据记录。在这里,我们将介绍如何使用LogMiner来读取Oracle数据库中指定的表的数据, 并每天读取一次数据写入到MySQL数据库中。


一 准备工作

在开始使用LogMiner之前,需要确保以下条件已经满足:

Oracle数据库的版本需要在10g及以上;

确保Oracle数据库中已经开启了归档模式,并且归档日志已经打开;

保证MySQL数据库中已经创建了要写入的表,且表结构与Oracle数据库中的表结构一致。

1.创建日志文件

在Oracle数据库中创建一个日志文件,用于存储LogMiner解析出的变化信息。以下是创建日志文件的步骤:

2.创建目录:

CREATE DIRECTORY logminer_dir AS '/path/to/dir';

3.创建日志文件:

BEGIN

DBMS_LOGMNR_D.BUILD(LOGFILE_DST => '/path/to/logfile', DICTIONARY_FILENAME => '/path/to/dict.ora',  
                     OPTIONS => DBMS_LOGMNR_D.STORE_IN_FLAT_FILE + DBMS_LOGMNR_D.ADDFILE);

END;

其中,LOGFILE_DST参数指定日志文件的存放路径,DICTIONARY_FILENAME参数指定字典文件的路径,OPTIONS参数用于设置日志文件的存储方式。

二 配置LogMiner

在Oracle数据库中配置LogMiner,以便能够使用它来读取数据库中的变化信息。以下是配置LogMiner的步骤:

创建LogMiner会话:

BEGIN

DBMS_LOGMNR.START_LOGMNR(STARTTIME => TO_DATE('yyyy-mm-dd hh24:mi:ss', 'utc'),  
                         ENDTIME => TO_DATE('yyyy-mm-dd hh24:mi:ss', 'utc'),
                         OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE,
                         DICTFILENAME => '/path/to/dict.ora',
                         FILEOPTIONS => DBMS_LOGMNR.NEW);
END;

其中,STARTTIME和ENDTIME参数用于指定要读取的时间范围,DICTFILENAME参数指定字典文件的路径,OPTIONS参数用于设置LogMiner的选项,FILEOPTIONS参数用于设置文件选项。

添加要监控的日志:

BEGIN

DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/path/to/logfile', OPTIONS => DBMS_LOGMNR.NEW);

DBMS_LOGMNR.START_LOGMNR(STARTTIME => TO_DATE('yyyy-mm-dd hh24:mi:ss', 'utc'),  
                         ENDTIME => TO_DATE('yyyy-mm-dd hh24:mi:ss', 'utc'),
                         OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE

这里用于从昨天开始读取数据库中的归档日志,并持续读取到今天。我们还需要指定一些选项,以便从日志文件中提取必要的数据。

读取出指定表上执行过的sql

select sql_redo 
from V$LOGMNR_CONTENTS 
where upper(sql_redo) like '%TB_TEST%' > migrage_logminer.sql

在mysql中执行查询出的sql

@source migrate_logminer.sql

举报

相关推荐

0 条评论