【发布时间】:2018-01-30 17:07:52
【问题描述】:
我正在尝试使用下面的 create_comparison 过程比较存在于同一数据库中的两个表
begin
dbms_comparison.create_comparison(
comparison_name => 'comp_dbms_test',
SCHEMA_NAME => 'DEV06_OWNER',
OBJECT_NAME => 'facility_prod_temp',
INDEX_SCHEMA_NAME => 'DEV06_OWNER',
INDEX_NAME => 'idx_test',
dblink_name => null,
REMOTE_SCHEMA_NAME => 'DEV06_OWNER',
remote_object_name => 'facility_test_temp',
column_list => '*',
SCAN_MODE => DBMS_COMPARISON.CMP_SCAN_MODE_FULL);
end;
并低于错误--
Error report:
ORA-23629: DEV06_OWNER.IDX_TEST is not an eligible index on table DEV06_OWNER.FACILITY_PROD_TEMP for comparison
ORA-06512: at "SYS.DBMS_COMPARISON", line 5008
ORA-06512: at "SYS.DBMS_COMPARISON", line 448
这是表格的结构:
desc FACILITY_PROD_TEMP;
Name Null Type
------------------- ---- ------------------
PARTITION_KEY VARCHAR2(12)
CONTRACT_REFERENCE VARCHAR2(101 CHAR)
CONTRACT_DESC VARCHAR2(100 CHAR)
ATTRIBUTE_3 VARCHAR2(100 CHAR)
ATTRIBUTE_1 VARCHAR2(100 CHAR)
COMMITED VARCHAR2(10 CHAR)
ATTRIBUTE_6 VARCHAR2(100 CHAR)
ATTRIBUTE_7 VARCHAR2(100 CHAR)
ATTRIBUTE_8 VARCHAR2(100 CHAR)
VALUE_DATE VARCHAR2(30)
ATTRIBUTE_5 VARCHAR2(100 CHAR)
LGD VARCHAR2(30)
DIM16 VARCHAR2(100 CHAR)
MATURITY_DATE VARCHAR2(50)
DIM9 VARCHAR2(100 CHAR)
IMPORT_SOURCE VARCHAR2(100 CHAR)
我已使用以下语法在 contract_reference 列上创建了一个索引 -
create index idx_test on facility_prod_temp (contract_reference);
Oracle 文档说:
要支持扫描模式 CMP_SCAN_MODE_FULL 和 CMP_SCAN_MODE_CUSTOM,数据库对象必须具有以下索引类型之一: • 数字、时间戳、间隔、DATE、VARCHAR2 或 CHAR 数据类型列的单列索引
据我所知,我在 varchar2 类型的 CONTRACT_REFERENCE 列上创建了一个索引。
我正在使用 -
Oracle 数据库 11g 企业版版本 11.2.0.4.0 - 64 位生产
【问题讨论】:
-
ORA-23629:DEV06_OWNER.IDX_TEST 不是表 DEV06_OWNER.FACILITY_PROD_TEMP 上用于比较的合格索引 ORA-06512:位于“SYS.DBMS_COMPARISON”,第 5008 行 ORA-06512:位于“SYS.DBMS_COMPARISON” ,第 448 行
-
这是实际错误,可能是错字:)
-
请不要使用 cmets 在问题中添加或更正信息。相反,您应该编辑问题以进行所需的任何更改。这次我已经做到了——以后请记住这一点。谢谢。
标签: sql oracle plsql oracle11g