当前位置: 代码迷 >> Oracle开发 >> oracle数据库关于创建索引有关问题
  详细解决方案

oracle数据库关于创建索引有关问题

热度:39   发布时间:2016-04-24 06:29:17.0
oracle数据库关于创建索引问题
用客户端连接oracle数据库,需要插入数据到表中,如果表不存在,需要创建表和索引。由于是分布式的,可能会有多个线程和进程创建表和索引,插入数据。创建索引的时候 我的sql语句是  create index index_name on table(a) online nologging.但是还是有一定几率报ora00054错误,求大神指导下怎么修改?
------解决思路----------------------
ora00054不是锁吗? 看下有没有锁。
select sess.sid, 
       sess.serial#, 
       lo.oracle_username, 
       lo.os_user_name, 
       ao.object_name, 
       lo.locked_mode 
   from v$locked_object lo, 
   dba_objects ao, 
   v$session sess 
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
------解决思路----------------------
是因为创建冲突的话,存储过程中增加个异常处理就好,当出现该错误,认为是表/索引已经存在
创建表和索引都能出现高并发,有点不怎么靠谱啊
------解决思路----------------------
引用:
Quote: 引用:

是因为创建冲突的话,存储过程中增加个异常处理就好,当出现该错误,认为是表/索引已经存在
创建表和索引都能出现高并发,有点不怎么靠谱啊

不是创建表和索引高并发 是创建索引的时候可能正在插入数据,直接返回ora00054错误


如果要是因为索引引起的busy,在创建索引之前应该先判断要创建的索引是否存在了。
如果非要创建对应的索引,那就需要把相关的session kill掉
  相关解决方案