因业务需要,在程序中需批量删除一些表,有时可能没有该表,有时可能表内数据很少,有时也可能有很多数据。但在执行时发现,执行到删除某个表(如A表)时,长时间不完成,一般要几十分钟(实际该表数据很少,有时数据库中没有该表),也执行其他表时,速度极快,时间有时不到1秒。不知什么原因?从何处检查?数据库为Oracle10i

解决方案 »

  1.   

    如在PL/SQL中执行drop table A;近一个小时没反应(实际上目前没有A表)也不报该表不存在的错误;而执行drop table B,当然B表也不存在,立即报该表不存在的错误。
      

  2.   

    是不是空间碎片太多了?查一下 v$session_waits ,在等待什么?建议最好在drop table 之前做一个 event trace ,trace 一下你的这个drop 到底做了什么,还有在drop 的时候看看cpu 和磁盘IO 的状态,是不是io 有什么问题
      

  3.   

    drop table 应该立刻返回的,感觉你的数据库存在问题,是本地库么,看看alert日志里有报错没有?
    是否该表已经被删除,回收站里是否有,建议drop  ....purse试试看一般来说删除不掉就是该表被锁,但是也应该返回错误的,不返回而卡住,这个需要对该session进行下跟踪,确定操作过程中遇到什么问题了
      

  4.   

    建议先truncate ,再drop。这肯定会快