
# 源库Oracle补全日志检查方法
Oracle数据库在Physical Standby模式下，日志会从主库直接复制，而自身不产生任何日志。针对Oracle为源的增量同步链路，DRS需要用户提前手动在主库检查补全日志是否符合要求，以保证任务的正常运行。以下检查和设置方法中，
表级：针对指定表的设置。
库级：指整个数据库级别的设置。
PK/UI：每一行日志中除了记录变更的列以外，还额外记录了该行中主键和唯一键的值。
ALL：每一行日志中记录了该行所有列的值。
![](https://support.huaweicloud.com/drs_faq/public_sys-resources/note_3.0-zh-cn.png)
以下三项检查，满足其中一项即可符合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;
   ```
   ![](https://support.huaweicloud.com/drs_faq/public_sys-resources/notice_3.0-zh-cn.png)
   其中SCHEMA名.表名需要根据实际使用进行替换。
   
   
 
#### 表级补全日志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;
   ```
   ![](https://support.huaweicloud.com/drs_faq/public_sys-resources/notice_3.0-zh-cn.png)
   其中SCHEMA名.表名需要根据实际使用进行替换。
   
   
 
#### 库级补全日志检查
针对待同步的库级对象，检查补全日志是否满足要求。
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;
     ```
     
   
   
   
   
 
