前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用DBMS_LOGMNR分析归档日志应用一例

使用DBMS_LOGMNR分析归档日志应用一例

作者头像
用户1148526
发布2019-05-25 19:46:47
6770
发布2019-05-25 19:46:47
举报
文章被收录于专栏:Hadoop数据仓库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1433232

有个项目提出的需求是这样的:部署两个相同的数据库应用A、B,两个库之间没有网络连接,要定期把A库里的数据复制到B库。

要求:

  1. 应用程序不做修改
  2. 实现增量数据更新(不能重复导入)

我提出了使用DBMS_LOGMNR分析归档日志并redo变化的方案:

  1. A库上线前数据库需要启用归档日志
  2. 每次同步数据时对A库先执行一次日志切换,然后拷贝归档日志文件,拷贝后删除(最新生成的归档日志文件不要拷贝和删除)
  3. 在B库上使用DBMS_LOGMNR分析归档日志文件并redo变化

因为网不通,手工拷贝文件的工作不可避免,所以可以认为第1、2步为手工操作。第1步为上线前的数据库准备,是一次性工作;第2、3步为周期性工作。对于第3步,做了个简单的实现:在B库机器上上规划好目录,这里D:\logmine为主目录,D:\logmine\redo_log存放从A库拷贝来的归档日志文件。在B库上执行一次初始化对象脚本:

sql view plain copy

  1. create or replace directory logfilename_dir as 'D:\logmine\';
  2. grant read, write on directory logfilename_dir to wxy;
  3. conn user1/password1
  4. begin
  5. excute immediate 'create table logname_ext (logfile_name varchar2(300)) organization external (type oracle_loader default directory data_dir logfilename_dir location (''log_file_name.txt''))';
  6. exception when others then
  7. if sqlcode = -955 then -- 名称已由现有对象使用
  8. null;
  9. else
  10. raise;
  11. end if;
  12. end;
  13. /

要做的工作:

  1. 拷贝A库归档日志文件到D:\logmine\redo_log
  2. 执行D:\logmine\create_ext_table.bat
  3. 删除1步拷贝的归档日志文件

create_ext_table.bat

plain view plain copy

  1. echo off
  2. dir /a-d /b /s D:\logmine\redo_log\*.log > D:\logmine\log_file_name.txt
  3. sqlplus user1/password1 @D:\logmine\create_ext_table.sql

create_ext_table.sql

sql view plain copy

  1. begin
  2. for x in (select logfile_name from logname_ext) loop
  3. dbms\_logmnr.add\_logfile(x.logfile\_name);
  4. end loop;
  5. end;
  6. /
  7. execute dbms_logmnr.start_logmnr(options => dbms_logmnr.committed_data_only);
  8. begin
  9. for x in (select sql_redo
  10. from v$logmnr_contents
  11. where table_space != 'SYSTEM' and instr(sql_redo,'"WXY".') > 0
  12. order by commit_scn)
  13. loop
  14. execute immediate x.sql_redo;
  15. end loop;
  16. end;
  17. /
  18. exit;

这只是个实验,没有经过严格的测试,考虑到异常捕获和处理、数据量、系统负载、性能优化等等因素,能否应用于生产环境有待验证。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年12月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档