度量快速开发平台-专业、快速的软件定制快开平台
标题:
Oracle 如何删除掉一个用户下的所有对象
[打印本页]
作者:
张兴康
时间:
2020-3-30 18:11
作者:
张兴康
时间:
2020-3-30 18:40
标题:
Oracle 如何删除掉一个用户下的所有对象
create or replace procedure drop_all as
cursor cur_obj is
select uo.OBJECT_NAME, uo.OBJECT_TYPE
from user_objects uo
where uo.OBJECT_NAME not in ('DROP_ALL')
and uo.OBJECT_TYPE not in ('LOB');
/* cursor cur_tablespace is
select ut.TABLESPACE_NAME
from user_tablespaces ut
where ut.TABLESPACE_NAME not in
('SYSTEM', 'SYSAUX', 'UNDOTBS1', 'TEMP', 'USERS');*/
v_obj_name user_objects.OBJECT_NAME%type;
v_obj_type user_objects.OBJECT_TYPE%type;
/* v_tablespaces_name user_tablespaces.TABLESPACE_NAME%type;*/
sql_str1 varchar2(2000);
/* sql_str2 varchar2(2000);*/
begin
open cur_obj;
loop
fetch cur_obj
into v_obj_name, v_obj_type;
exit when cur_obj%notfound;
sql_str1 := 'drop ' || v_obj_type || ' ' || v_obj_name;
execute immediate sql_str1;
end loop;
close cur_obj;
/* open cur_tablespace;
loop
fetch cur_tablespace
into v_tablespaces_name;
exit when cur_tablespace%notfound;
sql_str2 := 'drop tablespace ' || v_tablespaces_name ||
' including contents';
execute immediate sql_str2;
end loop;
close cur_tablespace;*/
end drop_all;
这个存储过程可以一把删掉用户下几乎所有的对象。注释里的东西释放出来就能删除表空间了。这个过程不能回滚,绝对不要在生产环境或者有用的环境上使用。我不对这个过程执行的结果负任何责任。
这个脚本适合在那种删除用户不是很方便的时候使用。
更简单的办法就是删掉用户再重建用户。
复制代码
作者:
caixuqad
时间:
2020-4-6 17:31
作者:
张兴康
时间:
2020-4-6 18:04
作者:
caixuqad
时间:
2020-4-7 18:04
作者:
caixuqad
时间:
2020-4-7 18:04
作者:
caixuqad
时间:
2020-4-8 17:56
作者:
caixuqad
时间:
2020-4-9 17:59
作者:
caixuqad
时间:
2020-4-10 15:11
欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/)
Powered by Discuz! X3.2