NAME TYPE COL# SCOL# ICOL# HDN VIR
--------------------------------------------------------------------------------
HIS_ID VARCHAR2 1 1 1 NO NO
BODYXML CLOB 2 2 2 NO NO
REQUISITION_ID VARCHAR2 3 3 3 NO NO
LOB INFO:
--------
COLUMN_NAME TABLESPACE LOG CMPRS ENCR DEDUP PART SFILE
--------------------------------------------------------------------------------
BODYXML XHINTERFACEDB YES NONE NONE NONE NO NO
INDEX INFO:
----------
INDEX_NAME INDEX_TYPE STATUS D-STATUS F-STATUS
--------------------------------------------------------------------------------
SYS_IL0000103352C00002$$ LOB VALID NULL NULL
IDX_LIS_BARCODE_PRINT_HISID NORMAL VALID NULL NULL
Oracle 建议您尽可能向主数据库中的表添加主键或非空唯一索引,以确保 SQL Apply 可以有效地将重做数据更新应用到逻辑备用数据库,如果不存在这种唯一性,SQL Apply 将无法正确维护表
使用命令查看不满足唯一性的表:
SQL> SELECT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_NOT_UNIQUE
WHERE (OWNER, TABLE_NAME) NOT IN
(SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED)
AND BAD_COLUMN = 'Y';
有两种方法解决该问题: 第一种:如果找到没有唯一标识的表,添加唯一标识 Add a disabled primary-key RELY constraint,即在该表上创建禁用的主键约束,这可以避免在主库上维护主键的开销