-
用PL/SQL登录,查询当当前表空间的名字,执行
--查询当前表空间:
select username,default_tablespace from user_users;
或
--查询所有表空间:
select tablespace_name from dba_tablespaces;
-
确定当前表空的名称【当前是TEST,根据步骤一确定】后执行存储过程:
declare
v_name all_tables.table_name%type;
cursor mycur is select table_name from all_tables where owner='TEST';
begin
open mycur;
loop
fetch mycur into v_name;
exit when mycur%NOTFOUND OR mycur%NOTFOUND IS NULL;
execute immediate 'drop table '|| v_name;
end loop;
close mycur;
end;
执行速度非常快,操作简单,推荐使用。
-
扩展一下,可以稍稍修改变成,删除所有视图:
declare
v_name all_views.view_name%type;
cursor mycur is select view_name from all_views where owner='TEST';
begin
open mycur;
loop
fetch mycur into v_name;
exit when mycur%NOTFOUND OR mycur%NOTFOUND IS NULL;
execute immediate 'drop view '|| v_name ;
end loop;
close mycur;
end;
-
一个表空间里面可能数据表和视图都存在,完全可以组合使用这两个存储过程,执行效率比点开tables,选中全部数据表,右击,选择drop,然后点确定,快多了。
-
以上所有sql都在我本机PL/SQL上运行成功,大家可以直接复制使用。
-
总体来说,清理表空间的方法很多,不管是删除重建也好,清空表空间也好,要找到一个高效率的方法,这样才能将工作效率提上去,上面是我这次总结的方法,希望大家在工作学习中能用到吧。
-
直接删除表空间也是可以的:
DROP TABLESPACE 表空间名称 INCLUDING CONTENTS AND DATAFILES;
Oracle清空表空间
最新推荐文章于 2025-06-21 10:37:26 发布