oracle删除所有用户对象,Script: oracle 删除用户(schema)下的所有对象

有时需要清除schema里的所有对象,但又没有dba权限,不可以drop user xxx cascade; re-create user;可以写个plsql,循环删除所有对象,注意有些对象存在依赖关系,如外键、index  和table..,这里建个procedure,方便在开发库一堆有schema中运行。

 
 

conn system/oracle

create or replace procedure purge_schema(p_sch varchar2 default user)

AUTHID CURRENT_USER

/*

author: anbob.com

date: 2012/12/3

desc: drop all object in the schema,but can't drop sys,sysman,system owner,defult logon user,also specify schema run as dba.

*/

is

v_str varchar2(2000);

procedure p_do ( p_v varchar2)is

begin

dbms_output.put_line(p_v);

execute immediate v_str;

end;

begin

if(UPPER(p_sch) like 'SYS%')

then

Raise_Application_Error(-20000, p_sch||'''s objects do''not allow drop!');

end if;

-- disable foreign  key

for c in(select table_name,constraint_name from all_constraints where owner=p_sch and constraint_type='R') loop

v_str :='alter table '||p_sch||'.'||c.table_name||' drop constraint '||c.constraint_name;

p_do (v_str);

end loop;

-- drop objects

for i in (select object_type,object_name from all_objects where object_type not in('INDEX','LOB') AND owner=p_sch)loop

v_str :='drop '||i.object_type||' '||p_sch||'.'||i.object_name;

p_do (v_str);

end loop;

end;

grant execute on purge_schema to public;

--login sqlplus

conn anbob/anbob

set serveroutput on;

alter session set recyclebin=off;

exec system.purge_schema;

「喜欢文章,快来给作者赞赏墨值吧」 赞赏

【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

请登录后发表评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值