反馈已提交

网络繁忙

Oracle LogMiner设置

  • 文档创建者:FineTube
  • 历史版本:6
  • 最近更新:HeroZ 于 2023-02-23
  • 1. ORACLE 配置说明

    Oracle 实时同步基于Oracle LogMiner,因此需要提前进行某些配置。请按以下说明进行配置,确保在 FineTube 中正常进行Oracle 实时增量同步。

    2. 开启方法(作为源)

    2.1 开启 LogMiner

    • 以具有 DBA 权限的用户身份登录数据库

    • 查看数据库的 logging mode : SELECT log_mode FROM v$database;

    • 如果返回的结果是 ARCHIVELOG , 您可以直接跳到 开启 Supplemental Logging

    • 如果返回的结果是 NOARCHIVELOG , 继续按照以下步骤操作:

    • 关闭数据库: SHUTDOWN IMMEDIATE;

    • 启动并挂载数据库:STARTUP MOUNT;

    • 开启存档并打开数据库:           

    ALTER DATABASE ARCHIVELOG;

    ALTER DATABASE OPEN;


    2.2 开启 Supplemental Logging

    2.2.1 Oracle 9i

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

    2.2.2 Oracle 10g、11g

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    ALTER SYSTEM SWITCH LOGFILE;
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;


    2.2.3 Oracle 12C 的特殊配置方法

    使用以下命令,确认 supplemental logging 是否开启

    SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;

    如果返回的三列都是 Yes 或者 Implicit ,则表示 identification key logging(标识键日志)和 full supplemental logging(全补充日志)已同时开启,您可以跳到 第三步 创建用户账号。
    如果返回的前两列是 Yes 或者 Implicit ,则表示只开启了 identification key logging(标识键日志),需要对full supplemental logging(全补充日志)进行开启。


    ① 若第一列返回的是No,则开启补充最小日志-supplemental_log_data_min:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    ② 若第二列返回的是No,则开启全补充日志,增加ALL、主键、Unique Index:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(ALL, PRIMARY KEY, UNIQUE) COLUMNS;


    2.3.4 单表开启标识键、补充日志

    ① 单表开启 identification key(标识键日志)

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    ALTER TABLE <schema name>.<table name> 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 SYSTEM SWITCH LOGFILE;


    3 创建用户账号


    3.1 Oracle 10g、11g

    创建用户帐户并分配权限

    CREATE USER <user name> IDENTIFIED BY <password>;
    GRANT create session, alter session, execute_catalog_role, select any dictionary, select any transaction, select any table, create any table, create any index, unlimited tablespace to <user name>;


    3.2 Oracle 12c multitenant databases

    在 Oracle 12c 的多租户环境下创建用户,必须在 cdb 中创建,并且命名格式约定为:c##<name>
    以具有 DBA 权限的用户身份登录数据库
    创建普通用户:

    ALTER SESSION SET CONTAINER=cdb$root;
    CREATE USER <user name> IDENTIFIED BY <password> CONTAINER=all;
    GRANT create session, alter session, set container, select any dictionary, select any transaction, logmining, execute_catalog_role, create any table, create any index, unlimited tablespace TO <username> CONTAINER=all;
    ALTER SESSION SET CONTAINER=<pdb>;

    根据您对表的权限需求,重复执行最后一个命令来赋予 select 权限。
    当您配置的是源库连接时,请使用此用户来通过 JDBC 的身份验证。 注意必须使用整个用户名(包括“c ##”)作为JDBC连接的用户名。


    3.3 Oracle 12c standard databases

    在 Oracle 12c 标准模式下,创建一个用户所必须的权限:
    以具有DBA权限的用户身份登录数据库
    创建普通用户:

    CREATE USER <user name> IDENTIFIED BY <password>;
    GRANT create session, alter session, select any dictionary, select any transaction, logmining, execute_catalog_role, create any table, create any index, unlimited tablespace TO <username>;

    根据您对表的权限需求,重复执行最后一个命令来赋予 select 权限。


    4 已知问题

    4.1 Oracle 的日志空间和定时删除

    Oracle的LogMiner归档日志较大,建议提前给Oracle的日志预留足够的使用空间;

    当日志积累到一定量之后,建议需要对日志做定时删除的操作,否则会占用过多空间,影响数据库的正常使用;

    已经删除的日志,不能回溯到之前的时间点重新读取日志;推荐7~30天作为日志保留周期。

    定时删除可参考此篇文档:Oracle 定时清理归档日志脚本_鲨鱼胃的博客-CSDN博客_oracle自动删除归档日志脚本


    4.2 Oracle 的 connection_time

    connect_time 参数将自动断开超时的会话。 默认情况下,它是无限的。 设置此设置后,FineTube 的实时增量同步可能报错停止。 可以采用以下命令检查设置的值:

    select resource_name, limit from dba_profiles where profile=( select profile from dba_users where username = '<username>');


    附件列表


    主题: a
    已经是第一篇
    已经是最后一篇

    售前咨询电话

    400-811-8890转1

    在线技术支持

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭