使用oracle的logminer同步数据

之前用github写博客但发现很受环境的约束,每次系统出问题都要重新搭一遍环境,现在转向这种在线的博客,感觉博客就是一个记录工具而已,还是找个方便的来吧。
至于为什么使用logminer原因是,内外网之间存在隔离,为此采用这种方式。

使用的前提,开启oracle的归档模式。这不是本文重点因此自行百度一下吧。

个人理解logminer就是一个oracle的日志分析工具,通过这个工具你可以吧数据库的所有的修改操作取出,做进一步的如数据回滚,数据同步等处理。

  • 第一步:为了分析日志第一步要做的是,创建数据字典,为的是把日志中的字段翻译成我们可读的字段。
execute dbms_logmnr_d.build(dictionary_filename=>'log.ora',dictionary_location=>'/u01/dblog',options=>dbms_logmnr_d.store_in_flat_file);
  • 第二步: 将要分析的日志文件夹入到logminer中

1.取出分析日志目录
这里我们根据scn来取日志

select name from v$archived_log where NEXT_CHANGE# > 1739657397 and NEXT_CHANGE# <= 1740101347

2.将日志加入到我们的logminer

加入的第一个使用new ,第二个使用addfile

exec dbms_logmnr.add_logfile('/u01/bk/1_1086_958894249.dbf',dbms_logmnr.new);
exec dbms_logmnr.add_logfile('/u01/bk/1_1048_958894249.dbf',dbms_logmnr.ADDFILE);
  • 第三步:开始分析

committed_data_only 只显示已提交的

no_sql_delimiter 去除最后的分号

no_rowid_in_stmt 去除rowid

exec dbms_logmnr.start_logmnr(dictfilename=>'/u01/dblog/log.ora', Options => dbms_logmnr.committed_data_only + dbms_logmnr.no_sql_delimiter + dbms_logmnr.no_rowid_in_stmt);
  • 第四步:查找分析结果

分析结果都存在v$logmnr_contents表中,根据自己的实际需求查出所要的结果。

注意logminer日志分析和v$logmnr_contents的结果查找要在一次数据库连接中,因为v$logmnr_contents中的数据之存在当前会话。

  • 第五步:关闭分析
exec dbms_logmnr.end_logmnr();
    原文作者:zhuchenshu
    原文地址: https://segmentfault.com/a/1190000017313317
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞