在生产库建立一个索引,报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新分区记录,此时会创建新分区。索引创建完毕后,将测试数据删掉。