暂无图片
oracle12.2删除表空间删除不了,但是查询又没有
我来答
分享
ycy
2022-09-23
oracle12.2删除表空间删除不了,但是查询又没有



回收站也清空了,查询u,p都没有,但是就是不叫删除

我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新
ycy

好的,多谢

暂无图片 评论
暂无图片 有用 0
暂无图片
刘贵宾
2022-09-23
你是采纳错了么
刘贵宾

1) Disable the Constrains:

SQL> select 'ALTER TABLE '||owner||'.'||table_name||' DISABLE CONSTRAINT '|| constraint_name||';'
from dba_constraints
where (index_owner,index_name) in (select owner,index_name from dba_indexes
where tablespace_name='MY_TBS');

2) In case of PKs, you may need to disable it with CASCADE clause:

SQL> select 'ALTER TABLE '||owner||'.'||table_name||' DISABLE CONSTRAINT '|| constraint_name||' cascade;'
from dba_constraints
where (index_owner,index_name) in (select owner,index_name from dba_indexes
where tablespace_name='MY_TBS');

3) Drop the tablespace:

SQL> DROP TABLESPACE MY_TBS INCLUDING CONTENTS AND DATAFILES;

暂无图片 评论
暂无图片 有用 5
墨天轮福利君
2022-09-23
提问者采纳错了,因无法修改采纳,下周一发放采纳金会在原采纳数上+1谢谢老师解答
zhangyfr
2022-09-24
👍🏻
Thomas

补充一下,既然是分别处理U和P,那么第一二句可合并成以下:

select 'ALTER TABLE '||owner||'.'||table_name||' DISABLE CONSTRAINT '|| constraint_name||decode(constraint_type ,'P',' CASCADE','')||';'
from dba_constraints where constraint_type in ('U','P') and (index_owner,index_name) in
(select owner,index_name from dba_indexes where tablespace_name='INDX');


暂无图片 评论
暂无图片 有用 0
ycy

还有一个问题,执行了这个sql后,DROP TABLESPACE MY_TBS INCLUDING CONTENTS AND DATAFILES;发现磁盘空间大小还是没变,我新建了一个表空间在data1上面,发现表空间使用率还是和原来一样



暂无图片 评论
暂无图片 有用 0
zhangyfr

··

暂无图片 评论
暂无图片 有用 0
ycy

用lsof | gerp deleted发现删除的文件没有释放,最后用kill pid,磁盘文件释放了

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏