oracle:ORA-14765建索引阻塞创建分区及处理步骤
阅读原文时间:2023年09月27日阅读:4

在生产库建立一个索引,报ORA-14765创建索引时不能创建分区,也就是索引的创建阻塞分区的建立。

处理步骤:

1、与开发人员沟通昨天下午在Tbl_Waste表上建索引,一直未返回成功,定位问题SQL

select sql_id from Gv$sql where UPPER(sql_text )like  UPPER('%create INDEX%');

2、定位会话

select SESSION_ID,SESSION_SERIAL# from dba_hist_active_sess_history where sql_id='&sql_id';

3、杀死会话

alter system kill session 'SESSION_ID,SESSION_SERIAL# ';

此时报:09:44:23  [ALTER - 0 row(s), 0.000 secs]  [Error Code: 31, SQL State: 61000]  ORA-00031: 标记要终止的会话

4、在数据库端杀死会话报异常,在服务器端杀死进程

select spid, osuser, s.program from v$session s, v$process p where s.paddr = p.addr and s.sid =&SESSION_ID;

通过会话Session_id定位进程号spid

在服务器端Linux命令行,杀死进程

kill -9 spid

另一种解决办法:

若真的想创建索引,不确定创建过程中是否真的要创建分区。

提前将分区建好:根据分区键,insert新分区记录,此时会创建新分区。索引创建完毕后,将测试数据删掉。