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

标题: oracle增量同步,使用CDC的搭建 [打印本页]

作者: 王亮    时间: 2021-1-31 16:34
标题: oracle增量同步,使用CDC的搭建
项目中使用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);






欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2