创建全文索引报错ORA-29855,DRG-10700 AND ORA-06512

本文记录了解决在Oracle数据库中创建全文索引时遇到的ORA-29855错误的过程。通过重新安装TEXT组件并使用force选项删除原有索引最终解决了问题。
部署运行你感兴趣的模型镜像
背景:
       在某数据库上创建全文索引时报错:
        create index IDX_GEN_CUST__PARTY_NAME on T_POLICY_GEN_CUST (PARTY_NAME) INDEXTYPE IS CTXSYS.CTXCAT
*
ERROR at line 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Message 11104 not found; No message file for product=ctx,
facility=DRG; arguments:
DRG-10700: Message 10700 not found; No message file for product=ctx,
facility=DRG; arguments:
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.CATINDEXMETHODS", line 99

解决过程:
按照文档ID 970473.1重新安装text组件
1. 第一次重装后测试不成功,仔细看文档,发现文档里提到需要安装盘的第二张盘。
2. 解压了安装盘的第一张和第二张,重新安装ORACLE软件
3. 再按文档重装了TEXT组件,并设置了默认语言
4. 创建索引create index IDX_GEN_CUST__PARTY on T_POLICY_GEN_CUST (PARTY_NAME) INDEXTYPE IS CTXSYS.CTXCAT测试,结果报了ora-07445[qxithcdo()+184],查官方,发现可能是因为某些对象已存在造成的。
5. 利用force选项删除原来的全文索引
SQL> drop index IDX_GEN_CUST__PARTY_NAME force;
Index dropped
6. 重建全文索引成功
SQL> create index IDX_GEN_CUST__PARTY_NAME on T_POLICY_GEN_CUST (PARTY_NAME) INDEXTYPE IS CTXSYS.CTXCAT;
Index created

至此,问题解决。

总结:
以后安装ORACLE 11.2.0.3,需要两个光盘。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13454868/viewspace-1089236/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13454868/viewspace-1089236/

您可能感兴趣的与本文相关的镜像

Anything-LLM

Anything-LLM

AI应用

AnythingLLM是一个全栈应用程序,可以使用商用或开源的LLM/嵌入器/语义向量数据库模型,帮助用户在本地或云端搭建个性化的聊天机器人系统,且无需复杂设置

Oracle中,当尝试删除索引时遇到 **ORA-00054: resource busy and acquire with NOWAIT specified** 错误,通常表示当前目标索引或其所在的表正被其他事务锁定,导致删除操作无法立即获取所需的锁资源[^1]。 ### 原因分析 1. **排他锁(Exclusive Lock)**:当有其他会话正在对索引或其对应的表进行 DML 操作(如 INSERT、UPDATE、DELETE)时,Oracle 会对该对象加排他锁,阻止其他事务修改或删除它[^2]。 2. **NOWAIT 选项**:如果删除索引的操作使用了 `NOWAIT` 选项(例如在 `ALTER INDEX ... REBUILD` 或 `DROP INDEX` 时指定了 `NOWAIT`),而当前无法立即获取锁,就会触发 ORA-00054 错误。 3. **长事务回滚**:如果之前有事务被取消或会话被强制终止,系统正在执行回滚操作,此时对索引的 DDL 操作将被阻塞,直到回滚完成[^3]。 ### 解决方案 1. **等待锁释放** 最直接的方式是等待持有锁的事务完成(提交或回滚)。可以通过查询 `V$LOCKED_OBJECT` 和 `V$SESSION` 视图来查找当前锁定索引或表的会话信息: ```sql SELECT s.sid, s.serial#, s.username, o.object_name, l.locked_mode FROM v$locked_object l JOIN dba_objects o ON l.object_id = o.object_id JOIN v$session s ON l.session_id = s.sid; ``` 找到相关会话后,可选择等待其自行提交或回滚,或手动终止该会话(谨慎操作): ```sql ALTER SYSTEM KILL SESSION 'sid,serial#'; ``` 2. **避免 NOWAIT 模式** 如果删除索引的操作中使用了 `NOWAIT`,建议移除该选项,让操作进入等待状态,直到锁释放。例如: ```sql DROP INDEX index_name; ``` 而不是: ```sql ALTER INDEX index_name REBUILD NOWAIT; -- 可能引发 ORA-00054 ``` 3. **检查长事务回滚状态** 如果系统正在进行大规模事务回滚(如大量删除或更新操作后会话被终止),可查询 `V$FAST_START_SERVERS` 或 `V$SESSION_LONGOPS` 来查看回滚进度: ```sql SELECT * FROM v$session_longops WHERE opname LIKE 'Rollback%'; ``` 等待回滚完成后,再尝试删除索引。 4. **优化事务管理** 避免长时间运行的事务,尤其是在生产环境中执行大规模 DML 操作时,应分批处理并及时提交,以减少锁竞争和系统回滚压力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值