首页数据库如何将Oracle数据同步迁移,操作方法及过程是怎样

如何将Oracle数据同步迁移,操作方法及过程是怎样

时间2024-03-22 08:17:05发布访客分类数据库浏览1065
导读:这篇文章分享给大家的内容是关于如何将Oracle数据同步迁移,操作方法及过程是怎样,本文介绍得很详细,内容很有参考价值,希望可以帮到有需要的小伙伴,接下来就让小编带领大家一起了解看看吧。 通过LogMiner实现Ora...
这篇文章分享给大家的内容是关于如何将Oracle数据同步迁移,操作方法及过程是怎样,本文介绍得很详细,内容很有参考价值,希望可以帮到有需要的小伙伴,接下来就让小编带领大家一起了解看看吧。



通过LogMiner实现Oracle数据同步迁移

为了实现Oracle数据库之间的数据同步,网上的资料比较少的时候。最好用的Oracle数据库同步工具是:GoldenGate ,而GoldenGate是要收费的。那么还有什么好的办法来同步Oracle的数据吗?没错,就是使用LogMiner来实现Oracle数据同步迁移。

一、实现过程

1.创建目录

在服务器上创建/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR目录来存储数据库的字典信息,如下所示。

mkdir -p /home/oracle/tools/oracle11g/oradata/orcl/LOGMNR

2.配置LogMiner

以oracle用户身份登录服务器,并以DBA身份登录Oracle数据库,如下所示。

sqlplus /nolog
conn  / as sysdba

接下来,创建字典文件夹配置,如下所示。

CREATE DIRECTORY utlfile AS '/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR';
    
alter system set utl_file_dir='/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR' scope=spfile;
      

注意:由于utl_file_dir只存在于文件当中,所以scope是以文件方式"spfile"写入,而不是both。

3.开启日志追加模式

alter database add supplemental log data;
      

只有开启后才能看到DML操作记录,否则只能看见DML

4.重启数据库

SHUTDOWN IMMEDIATE;
      
STARTUP;
     

5.创建数据同步用户

创建数据同步用户,如果已经有可以跳过,直接赋予权限。

create user SYNC identified by SYNC;
      #如果存在用户,则不需要再次创建,直接授权即可
GRANT CONNECT,RESOURCE,DBA,EXECUTE_CATALOG_ROLE TO SYNC;
      

6.创建数据字典

切换到要同步数据的用户,以DBA身份登录,创建数据字典文件,如下所示。

conn SYNC/SYNC@orcl as sysdba;
      
EXECUTE dbms_logmnr_d.build(dictionary_filename =>
     'dictionary.ora', dictionary_location =>
    '/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR');
      

创建数据字典的命令也可以通过Java代码来实现,如果使用Java代码实现的话,首先可以通过JDBC连接到Oracle数据库,然后执行如下命令。

BEGIN
dbms_logmnr_d.build(dictionary_filename =>
     'dictionary.ora', dictionary_location =>
    '/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR');
      
END;
    

7.加入需要分析的日志文件

此步骤可以在Oracle命令行执行,也可以使用Java代码实现。

使用SQL语句实现如下所示。

EXECUTE dbms_logmnr.add_logfile(logfilename=>
    '/home/oracle/tools/oracle11g/oradata/orcl/REDO01.LOG',options=>
    dbms_logmnr.NEW);
      
EXECUTE dbms_logmnr.add_logfile(logfilename=>
    '/home/oracle/tools/oracle11g/oradata/orcl/REDO02.LOG',options=>
    dbms_logmnr.ADDFILE);
      
EXECUTE dbms_logmnr.add_logfile(logfilename=>
    '/home/oracle/tools/oracle11g/oradata/orcl/REDO03.LOG',options=>
    dbms_logmnr.ADDFILE);
      

使用Java代码分析时,使用的SQL语句如下所示。

BEGIN  
dbms_logmnr.add_logfile(logfilename=>
    '/home/oracle/tools/oracle11g/oradata/orcl/REDO01.LOG',options=>
    dbms_logmnr.NEW);
      
dbms_logmnr.add_logfile(logfilename=>
    '/home/oracle/tools/oracle11g/oradata/orcl/REDO02.LOG',options=>
    dbms_logmnr.ADDFILE);
      
dbms_logmnr.add_logfile(logfilename=>
    '/home/oracle/tools/oracle11g/oradata/orcl/REDO03.LOG',options=>
    dbms_logmnr.ADDFILE);
      
END;
      

8.查看正在使用的日志文件

SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;
    

status为CURRENT的为当前正在使用的日志文件

9.使用Lominer分析日志

EXECUTE dbms_logmnr.start_logmnr(dictfilename=>
    '/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR/dictionary.ora');
      

使用Java代码分析时,使用的SQL语句如下所示。

BEGIN
dbms_logmnr.start_logmnr(dictfilename=>
    '/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR/dictionary.ora');
     
END;
    

10.查看分析结果

SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents WHERE seg_name='EMP' AND seg_owner='SYNC';
     

注意:视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在,如果要查看新的日志,需要再重新加入分析日志文件、使用LogMiner分析。

11.常见问题

(1)如果出现“必须声明标识符 ‘SYS.DBMS_LOGMNR'”异常,则需要在创建用户后,为用户赋予EXECUTE_CATALOG_ROLE权限,如下所示。

GRANT CONNECT,RESOURCE,DBA,EXECUTE_CATALOG_ROLE TO SYNC;
     


(2)当在查询vlogmnrlogs时提示“表或视图不存在”,是因为没有查询vlogmnr_logs的权限。此时在查询语句中需要为seg_owner指定相应的用户,例如,我这里使用SYNC用户通过LogMiner进行分析,则需要将seg_owner指定为SYNC用户,如下所示。

SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents WHERE seg_name='EMP' AND seg_owner='SYNC';
     

通过以上内容的阐述,相信大家对“如何将Oracle数据同步迁移,操作方法及过程是怎样”已经有了进一步的了解,更多相关的问题,欢迎关注网络或到官网咨询客服。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何将Oracle数据同步迁移,操作方法及过程是怎样
本文地址: https://pptw.com/jishu/650250.html
Oracle中rac能够解决什么问题,实现及操作是怎样 PHP v版本不正确该如何处理?

游客 回复需填写必要信息