oracle怎么删除表空间下所有的表

 我来答
freechan10
2020-02-04 · TA获得超过2.9万个赞
知道小有建树答主
回答量:263
采纳率:68%
帮助的人:12.8万
展开全部

1、创建两个测试表,指定表空间TEMP;

create table test_ts_1(id number) tablespace temp;

create table test_ts_2(id number) tablespace temp;

2、查询表空间下的表;可以发现刚建的两张表;

select * from user_tables t where tablespace_name = 'TEMP';

3、编写脚本,删除TEMP表空间下的所有表;

begin

  for v_cur in (select distinct t.table_name from user_tables t where tablespace_name = 'TEMP') loop

    execute immediate 'drop table '||v_cur.table_name||' purge';

  end loop;

end;

4、再次查询,可以发现TEMP表空间下的表,已经被删除;

select * from user_tables t where tablespace_name = 'TEMP'

time陌言成殇
2015-02-09 · TA获得超过8.4万个赞
知道大有可为答主
回答量:1.4万
采纳率:91%
帮助的人:9401万
展开全部

您好,很高兴为您解答。


ORACLE删除表空间中的所有表,如果是非sysdbA连接用如下sql语句

 

declare 
vsql varchar2(200);
cursor c1 is 
  select 'drop table '||table_name||' cascade constraints' v_name 
   from user_tables;
    
  BEGIN
  for i in c1 loop
  vsql:=i.v_name;
  execute immediate vsql;
end loop;
end;
/

 

如果是sysdba连接的加上表空间名称

declare 
vsql varchar2(200);
cursor c1 is 
  select 'drop table '||table_name||' cascade constraints' v_name 
   from user_tables where tablespace_name='table_space_name';
    
  BEGIN
  for i in c1 loop
  vsql:=i.v_name;
  execute immediate vsql;
end loop;
end;
/


如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】


希望我的回答对您有所帮助,望采纳!


                                                                                                                             ~ O(∩_∩)O~

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大话残剑
推荐于2017-09-14 · TA获得超过2217个赞
知道大有可为答主
回答量:1137
采纳率:56%
帮助的人:712万
展开全部
SELECT 'DROP TABLE ' || TABLE_NAME || ' CASCADE CONSTRAINTS' V_NAME
  FROM DBA_TABLES
 WHERE TABLESPACE_NAME = 'USERS';

按照表空间名查询所有包含的表,并根据表名拼接删除语句。

执行上面查询语句生成的语句,即可删除所有表。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
请叫我召哥
2015-02-09 · TA获得超过792个赞
知道小有建树答主
回答量:572
采纳率:95%
帮助的人:378万
展开全部
select 'drop table '||table_name||';' from dba_tables t where t.tablespace_name='表空间名字';
把执行结果copy出来,执行一下就行了,如果想一次执行,就写个游标,执行动态SQL
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
neuyubo
2015-02-09 · TA获得超过531个赞
知道小有建树答主
回答量:743
采纳率:0%
帮助的人:657万
展开全部
select 'drop table ' || s.segment_name || ' purge; ' from dba_segments s where s.segment_type='TABLE' and s.tablespace_name = 'XXXXX'

执行查询出来的结果

注意 9i以下的版本不需要 purge 选项
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式