oracle怎么删除表空间下所有的表
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'
您好,很高兴为您解答。
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~
SELECT 'DROP TABLE ' || TABLE_NAME || ' CASCADE CONSTRAINTS' V_NAME
FROM DBA_TABLES
WHERE TABLESPACE_NAME = 'USERS';
按照表空间名查询所有包含的表,并根据表名拼接删除语句。
执行上面查询语句生成的语句,即可删除所有表。
把执行结果copy出来,执行一下就行了,如果想一次执行,就写个游标,执行动态SQL
执行查询出来的结果
注意 9i以下的版本不需要 purge 选项