如何修复 DRG-10599:列未索引错误 |甲骨文 18g

问题描述 投票:0回答:1

我有两个 oracle 数据库(测试和生产)。两者都是从同一个第一个数据库中克隆的。我的查询在测试服务器上运行良好。但是生产服务器报错。

SELECT * FROM MY_VIEW_TABLE mliv
WHERE CATSEARCH (TITLE, 'law*', NULL) > 0

此查询返回的响应没有问题。但是生产服务器报错。

ORA-20000: Oracle Text error: DRG-10599: column is not indexed

我也试过创建索引:

CREATE INDEX LACT_TITLE_TI ON MJ_LACTS(TITLE) 
       INDEXTYPE IS CTXSYS.CONTEXT;

然后我再次尝试运行查询。无论如何,上面的错误。我还查看了预先存在的索引。一样。

SELECT *
FROM dba_ind_columns
WHERE TABLE_NAME = 'MJ_LACTS'

此外,我也尝试了这些答案:

两台服务器有相同的索引,两台服务器有相同的版本。 我该如何解决这个问题?

oracle oracle-text
1个回答
0
投票

CATSEARCH
上的文档描述了它的用法:

使用

CATSEARCH
运算符搜索CTXCAT索引。

create table mj_lacts
as
select
  level as id,
  lpad(level, 100, '0') as title,
  lpad(level, 4000, '0') as large_col
from dual
connect by level < 10

insert into mj_lacts
values(1, 'some text and law word', 'a')
SELECT *
FROM Mj_lacts
WHERE CATSEARCH(TITLE, 'law*', NULL) > 0
ORA-20000: Oracle Text error:
DRG-10599: column is not indexed

您需要创建

CTXCAT
索引并且它有效。

CREATE INDEX LACT_TITLE_TI ON MJ_LACTS(TITLE) 
       INDEXTYPE IS ctxsys.CTXcat;
SELECT *
FROM Mj_lacts
WHERE CATSEARCH(TITLE, 'law*', NULL) > 0
ID 标题 大列
1 一些文字和法律词汇 a

小提琴

由于您没有提供有关这两个数据库的所有信息,因此很难说出为什么它在测试中有效而不在生产中有效。但它对所有 Oracle 版本都是一样的。

您可以通过

dbms_metadata
包在测试中检索索引DDL:

select dbms_metadata.get_dependent_ddl(
  object_type => 'INDEX',
  base_object_name => 'MJ_LACTS'
  
)
from dual
DBMS_METADATA.GET_DEPENDENT_DDL(OBJECT_TYPE=>'INDEX',BASE_OBJECT_NAME=>'MJ_LACTS')

〇〇在“FIDDLE_RMAAOVDFJEBDJXCLJUSU”上创建索引“FIDDLE_RMAAOVDFJEBDJXCLJUSU”。“LACT_TITLE_TI”。
小提琴

相关问题
热门问答
最新问题