ORA-20000:Oracle文本错误:DRG-10599:未选择“用于更新”的索引所在的列未建立索引

时间:2019-08-12 22:05:50

标签: oracle

我正在尝试更新CLOB列,但由于该列未索引错误而失败。

我试图删除并重新创建索引,但仍然遇到相同的错误:

create index idx_response_contxt on test (response) indextype is ctxsys.context;

declare
begin
    for i in (select response from test 
              where contains(response,'{"IdType">BANK}') > 0 for update) loop
    dbms_lob.write(i.response, 12, 5444, '111111111111');
    end loop;
end;
/

第1行出现错误:

ORA-20000:Oracle文本错误:

DRG-10599:列未编制索引

ORA-06512:在第4行

似乎“用于更新”禁用了索引。如果我在没有包含功能的情况下运行,则不会出现任何错误,但代价非常高:

declare
begin
    for i in (select response from test where response like '%"IdType">BANK%' for update) loop    
        dbms_lob.write(i.response, 12, 5444, '111111111'); 
    end loop;
end;
/

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:0)

在创建索引时需要使用适当的参数,因为它将决定何时同步索引。它可以是实时的或定期的。

create index idx_response_contxt on test (response) 
indextype is ctxsys.context PARAMETERS ('SYNC (ON COMMIT)'); -- real time synchronization

上面的示例是实时重建索引。您可以在PARAMETER中使用不同的子句在可配置的时间重建。像'(SYNC (EVERY "SYSDATE+1/24")'一样-将每小时同步一次,定期

根据要求使用它。

干杯!

答案 1 :(得分:0)

我用“ PARAMETERS('SYNC(ON COMMIT)')”重建了索引,并再次运行了查询,但是没有用,因为它仍然看不到索引并给出了“ ORA-20000:Oracle Text错误: DRG-10599:列未建立索引”错误。

还有其他建议吗?谢谢。