如何删除表空间中所有表

[复制链接]
查看11 | 回复9 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
刚把整个10g的表空间中所有表导出,现在想把所有的表删除,有没有批处理的方法?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
最初由 lazydogger 发布
[B]刚把整个10g的表空间中所有表导出,现在想把所有的表删除,有没有批处理的方法? [/B]

最快最简单的方法就就是drop this tablespace
drop tablespace XXX including contents;
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
最初由 lazydogger 发布
[B]刚把整个10g的表空间中所有表导出,现在想把所有的表删除,有没有批处理的方法? [/B]

回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
declare
vsql varchar2(200);
cursor c1 is
select 'drop table '||table_name||' cascade constraints' v_name
from user_tables where tablespace_name='AFC_NEW';

BEGIN
for i in c1 loop
vsql:=i.v_name;
execute immediate vsql;
end loop;
end;
/
应该可以满足你的要求
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
最初由 rchsh 发布
[B]
最快最简单的方法就就是drop this tablespace
drop tablespace XXX including contents; [/B]

如果某个分区表的某个分区也总这个表空间上,而其他分区在其他表空间上,那会不会有问题?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
SELECT 'DROP TABLE '||TABLE_NAME||';' FROM user_tables WHERE TABLESPACE_NAME='';
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
最初由 ah-mol 发布
[B]SELECT 'DROP TABLE '||TABLE_NAME||';' FROM user_tables WHERE TABLESPACE_NAME=''; [/B]

就是,我也认为这个方法更准确和保险一些。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
肯定是会有问题的,先把分区移动到其他的表空间上
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
果然可以,谢谢大侠!
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
加上CASCADE CONSTRAINTS 是不是好些?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行