通过LogMiner实现数据同步迁移
程序员文章站
2022-05-07 16:28:18
...
1、手动创建LogMiner文件夹,E:\ora_logminer\utl
2、以DBA用户登陆,配置LogMiner文件夹
conn /as sysdba; CREATE DIRECTORY utlfile AS 'E:\ora_logminer\utl'; alter system set utl_file_dir='E:\ora_logminer\utl' scope=spfile;
注意:由于utl_file_dir只存在于文件当中,所以scope是以文件方式"spfile"写入,而不是both。
开启日志文件追加模式,只有开启后才能看到DML操作记录,否则只能看见DML
alter database add supplemental log data;
修改后需要重新启动数据库
SHUTDOWN IMMEDIATE; STARTUP;
3、创建数据同步用户,如果已经有可以跳过,直接赋予权限
GRANT CONNECT,RESOURCE,DBA,EXECUTE_CATALOG_ROLE TO LOGMINER;
4、切换到你要同步数据用户,以DBA登陆,创建数据=字典文件
conn scott/tiger@orcl as sysdba; EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'E:\ora_logminer\utl');
5、加入需要分析的日志文件
BEGIN dbms_logmnr.add_logfile(logfilename=>'D:\oracle\product\10.2.0\oradata\orcl\REDO02.LOG',options=>dbms_logmnr.NEW); dbms_logmnr.add_logfile(logfilename=>'D:\oracle\product\10.2.0\oradata\orcl\REDO01.LOG',options=>dbms_logmnr.ADDFILE); dbms_logmnr.add_logfile(logfilename=>'D:\oracle\product\10.2.0\oradata\orcl\REDO03.LOG',options=>dbms_logmnr.ADDFILE); END; /
可以通过
SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;
查看正在使用的日志文件,status为CURRENT的为当前正在使用的日志文件
6、开始使用LogMiner分析
EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'E:\ora_logminer\utl\dictionary.ora');
7、观察分析结果
SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents WHERE seg_name='EMP' AND seg_owner='SCOTT';
需要强调一点的是,视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在,如果要查看新的日志,需要再重新加入分析日志文件、使用LogMiner分析。
常见问题:
1、如果出现“必须声明标识符 'SYS.DBMS_LOGMNR'”异常,需要赋予EXECUTE_CATALOG_ROLE权限
2、当在查询v$logmnr_logs时提示“表或视图不存在”,是因为没有查询v$logmnr_logs的权限。至少怎样单独把v$logmnr_logs赋予用户我不知道,知道的朋友说下。
上一篇: Google如何管理20亿行代码
推荐阅读
-
使用GoldenGate 实现Oracle for Oracle 单向数据同步
-
云笔记的数据同步是怎么实现的?
-
不同服务器上的mysql数据库如何实现同步异步备份
-
vue.js通过自定义指令实现数据拉取更新的实现方法
-
php使用curl通过代理获取数据的实现方法
-
通过代理类实现java连接数据库(使用dao层操作数据)实例分享
-
axios 通过async和await实现同步
-
vue 使用 async 和 await 实现异步 axios 同步化(实战案例:数据异步校验通过后,再执行保存)
-
C#应用BindingSource实现数据同步的方法
-
asp.net中使用 Repeater控件拖拽实现排序并同步数据库字段排序