源库Oracle补全日志检查方法
Oracle数据库在Physical Standby模式下,日志会从主库直接复制,而自身不产生任何日志。针对Oracle为源的增量同步链路,DRS需要用户提前手动在主库检查补全日志是否符合要求,以保证任务的正常运行。以下检查和设置方法中,
表级:针对指定表的设置。
库级:指整个数据库级别的设置。
PK/UI:每一行日志中除了记录变更的列以外,还额外记录了该行中主键和唯一键的值。
ALL:每一行日志中记录了该行所有列的值。
以下三项检查,满足其中一项即可符合DRS增量同步的基本要求。
表级补全日志PK/UI检查(最低要求)
针对用户选择的待同步的表级对象,检查补全日志是否满足要求。
- 在源库中执行以下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增量同步要求。
- 如果不满足要求,可执行以下sql语句开启表级PK/UI级别补全日志。
alter database add supplemental log data; alter table SCHEMA名.表名 add supplemental log data(primary key,unique) columns;
其中SCHEMA名.表名需要根据实际使用进行替换。
表级补全日志ALL检查
针对用户选择的待同步的表级对象,检查补全日志是否满足要求。
- 在源库中执行以下sql语句。
select * from ALL_LOG_GROUPS where LOG_GROUP_TYPE='ALL COLUMN LOGGING' and OWNER='大写SCHEMA名' and TABLE_NAME='大写表名';
该表名在查询结果中有记录,即可满足DRS增量同步要求。
- 如果不满足要求,可执行以下sql语句开启表级ALL级别补全日志。
alter database add supplemental log data; alter table SCHEMA名.表名 add supplemental log data(all) columns;
其中SCHEMA名.表名需要根据实际使用进行替换。
库级补全日志检查
针对待同步的库级对象,检查补全日志是否满足要求。
- 在源库执行以下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;
- 满足以下其中一项要求即可。
- PK和UI同时为YES,即可满足DRS增量同步要求。
- ALL_LOG为YES,即可满足DRS增量同步要求。