更新时间:2022-08-16 GMT+08:00

源库Oracle补全日志检查方法

Oracle数据库在Physical Standby模式下,日志会从主库直接复制,而自身不产生任何日志。针对Oracle为源的增量同步链路,DRS需要用户提前手动在主库检查补全日志是否符合要求,以保证任务的正常运行。以下检查和设置方法中,

表级:针对指定表的设置。

库级:指整个数据库级别的设置。

PK/UI:每一行日志中除了记录变更的列以外,还额外记录了该行中主键和唯一键的值。

ALL:每一行日志中记录了该行所有列的值。

以下三项检查,满足其中一项即可符合DRS增量同步的基本要求。

表级补全日志PK/UI检查(最低要求)

针对用户选择的待同步的表级对象,检查补全日志是否满足要求。

  1. 在源库中执行以下sql语句。

    select * from ALL_LOG_GROUPS where (LOG_GROUP_TYPE='UNIQUE KEY LOGGING' or LOG_GROUP_TYPE='PRIMARY KEY LOGGING') and OWNER='大写SCHEMA名' and TABLE_NAME='大写表名';

    该表名在查询结果中能同时对应到LOG_GROUP_TYPE值为UNIQUE KEY LOGGING和PRIMARY KEY LOGGING的两条记录,即可满足DRS增量同步要求。

  2. 如果不满足要求,可执行以下sql语句开启表级PK/UI级别补全日志。

    alter database add supplemental log data; 
    alter table SCHEMA名.表名add supplemental log data(primary key,unique) columns;

表级补全日志ALL检查

针对用户选择的待同步的表级对象,检查补全日志是否满足要求。

  1. 在源库中执行以下sql语句。

    select * from ALL_LOG_GROUPS where LOG_GROUP_TYPE='ALL COLUMN LOGGING' and OWNER='大写SCHEMA名' and TABLE_NAME='大写表名';

    该表名在查询结果中有记录,即可满足DRS增量同步要求。

  2. 如果不满足要求,可执行以下sql语句开启表级ALL级别补全日志。

    alter database add supplemental log data; 
    alter table SCHEMA名.表名add supplemental log data(all) columns;

库级补全日志检查

针对待同步的库级对象,检查补全日志是否满足要求。

  1. 在源库执行以下sql语句。

    select SUPPLEMENTAL_LOG_DATA_MIN MIN, SUPPLEMENTAL_LOG_DATA_PK PK, SUPPLEMENTAL_LOG_DATA_UI UI, SUPPLEMENTAL_LOG_DATA_ALL ALL_LOG from v$database;

  2. 满足以下其中一项要求即可。

    • PK和UI同时为YES,即可满足DRS增量同步要求。
      如果不满足要求,可执行以下sql语句开启库级PK/UI级别补全日志。
      alter database add supplemental log data(primary key, unique) columns;
    • ALL_LOG为YES,即可满足DRS增量同步要求。
      如果不满足要求,可执行以下sql语句开启库级ALL级别补全日志。
      alter database add supplemental log data(all) columns;