重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3952|回复: 0
打印 上一主题 下一主题

[Oracle] oracle增量同步,使用CDC的搭建

[复制链接]
跳转到指定楼层
楼主
发表于 2021-1-31 16:34:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
项目中使用Oracle的CDC达到增量同步功能,需要打开Oracle的CDC开关,同时涉及到了相应日志的优化工作。

1. 打开归档日志开关(启动LogMiner)
a. 使用有DBA权限的用户登录Oracle
b. 检查数据库日志模式

SQL> select log_mode from v$database;
如果结果是ARCHIVELOG,可以转至步骤2。
如果结果是NOARCHIVELOG,执行下面SQL命令

SQL> shutdown immediate;  # Shut down the database
SQL> startup mount;  # Start up and mount the database
SQL> alter database archivelog; # enable archiving
SQL> alter database open; # open the database
查看存储路径

select dest_id,name from v$archived_log;
2. 启用 Supplemental Logging
为了从日志里获取数据,LogMiner需要启用数据库或表的supplemental logging。Supplemental logging又分为identification key logging和full supplemental logging。Identification key logging只包含主键和发生改变的字段数据,而full supplemental logging包含了所有字段的数据,这两种根据需求选择一种即可。

启用Identification key logging
可以指定一张表启用

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
也可以同时为数据库中所有表启用

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
启用full supplemental logging
指定一张表启用

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
为数据库中所有表启用

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
提交修改

ALTER SYSTEM SWITCH LOGFILE;
创建用户
在CDC Client源中需要配置账户信息连接Oracle,要求该用户有一定权限,所以这里新建一个用户。

    CREATE USER <user name> IDENTIFIED BY <password>;
    GRANT create session, alter session, execute_catalog_role, select any transaction, select any table to <user name>;
    GRANT select on GV_$DATABASE to <user name>;
    GRANT select on GV_$ARCHIVED_LOG to <user name>;
    GRANT select on V_$LOGMNR_CONTENTS to <user name>;
    GRANT select on <db>.<table> TO <user name>;
用户通过使用V$ARCHIVE_DEST和$ARCHIVE_LOG视图获取归档日志信息。

V$ARCHIVE_DEST:显示当前所有归档日志存储位置及其状态。

V$ARCHIVE_LOG:显示历史归档日志信息。

创建CDC_TEST用户,密码为123456。注意,这里同样需要使用具有DBA权限的用户操作。

    SQL> create user CDC_TEST identified by 123456;
    SQL> grant create session, alter session, execute_catalog_role, select any transaction, select any table to CDC_TEST;
    SQL> grant select on GV_$DATABASE to CDC_TEST;
    SQL> grant select on GV_$ARCHIVED_LOG to CDC_TEST;
    SQL> grant select on V_$LOGMNR_CONTENTS to CDC_TEST;
4. 提取LogMiner Dictionary到redo log
当希望LogMiner使用来自redo log中的字典时,需要执行此步骤,将字典提取到redo log中,且必须在启动pipeline之前执行。如果使用online catlog中的字典,则不需要。

EXECUTE DBMS_LOGMNR_D.BUILD(OPTIONS=> DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-30 05:40 , Processed in 0.135887 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表