oracle 表不能被drop

aa54958512 2012-11-16 10:40:07
昨天我建了一张测试表,没有主键,所有字段全部是varchar2(500)类型的,然后批量插入了一些数据,
可是今天想删除这张表,drop table s_rep_361 PLSQL一直在执行,就是不出结果, 这张表可以查询,
也可以delete,都很正常,就是drop除了问题。请各位赐教!
...全文
1110 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2014-06-27
  • 打赏
  • 举报
回复
如果允许,你可以尝试着把 ORACLE 的服务重启一下。可能是其他会的锁还没被释放。
gothic_zxc 2014-06-22
  • 打赏
  • 举报
回复
查下该表有没有针对ddl的锁
dandan_self 2014-03-21
  • 打赏
  • 举报
回复
兄弟,有没有结论了呢? 有没有报错信息,退出ORACLE服务,然后再进入直接执行drop呢?
WSZHAO_SELECT 2014-03-19
  • 打赏
  • 举报
回复
这可能是因为是表被锁住了,你要drop表一直等待的话 可能其他还有事物在进行中,还没有提交事物。 你可以提交一下delete或者其他的事物看看。
hellowater1 2013-10-22
  • 打赏
  • 举报
回复
我这里也碰到了,无法drop ,truncate,rename ,在PLSQL中执行,也不报错 Release 10.2.0.4.0 ddl_wait_for_locks boolean FALSE
昨日凡阳 2012-11-21
  • 打赏
  • 举报
回复
如果数据都删除光了,还是无法drop掉table,那就太奇怪了。
andornot123 2012-11-20
  • 打赏
  • 举报
回复
有可能是权限不足,是同一个用户创建和删除的吗?
aa54958512 2012-11-16
  • 打赏
  • 举报
回复
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id; 执行查询,想看是不是表被锁了,查询的结果也是空的
aa54958512 2012-11-16
  • 打赏
  • 举报
回复
引用 7 楼 fw0124 的回复:
到sqlplus里面执行。 或者 select value from v$parameter where name='ddl_lock_timeout'; 可能需要DBA权限。
这个查询结果是 no rows selected
aa54958512 2012-11-16
  • 打赏
  • 举报
回复
DDL_LOCK_TIMEOUT 这个参数 是不是oracle 11G 才有的啊 我们公司用的是 9i
fw0124 2012-11-16
  • 打赏
  • 举报
回复
到sqlplus里面执行。 或者 select value from v$parameter where name='ddl_lock_timeout'; 可能需要DBA权限。
aa54958512 2012-11-16
  • 打赏
  • 举报
回复
权限肯定有,一直都正常的 , show parameter DDL_LOCK_TIMEOUT 这个我怎么执行不了啊
fw0124 2012-11-16
  • 打赏
  • 举报
回复
可能是别的会话在这个表上进行了更新,又没有commit吧。 show parameter DDL_LOCK_TIMEOUT 看看这个参数。
软件钢琴师 2012-11-16
  • 打赏
  • 举报
回复
truncate 是删除数据,dorp才能删掉表 弱弱问一下,你有没有删除标的权限?
aa54958512 2012-11-16
  • 打赏
  • 举报
回复
现在这个表不要了,数据也不多,当初建表时就加了1000+ 行数据,现在全部delete了,表空了 ,就是drop不掉, truncate 也不行
linwaterbin 2012-11-16
  • 打赏
  • 举报
回复
引用 楼主 aa54958512 的回复:
昨天我建了一张测试表,没有主键,所有字段全部是varchar2(500)类型的,然后批量插入了一些数据, 可是今天想删除这张表,drop table s_rep_361 PLSQL一直在执行,就是不出结果, 这张表可以查询, 也可以delete,都很正常,就是drop除了问题。请各位赐教!
1)可能表的数据量太大,事务单位稠密,可一段时间commit,减小事务单位 2)或者,如果表不要了,直接truncate掉吧 3)再或者,通过重命名的方式: create table temp as select * from 表 where 不想删的数据; rename 表 to 其它; rename temp to 表; 通过重命名的方法快点 4)又或者,可以建个分区,把数据flush进去,把整个分区干掉 5).....好了不说了
软件钢琴师 2012-11-16
  • 打赏
  • 举报
回复
是这张表里的数据太多了吧,看看有没有被锁住 drop table s_rep_361 purge

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧