当前位置:首页 > Oracle > 正文内容

Oracle清空当前用户下的所有的对象

管理员6年前 (2015-03-24)Oracle317

该脚本操作的破坏性很强,在操作之前一定要先做好备份,并且,只能用于测试环境和开发环境,严禁用于生产环境!!!!

各类对象之间,有些存在着依赖关系,常见的依赖如下:

1、存储过程、视图、物化视图等对象引用表,但是删除表后这几类对象还会存在,只是会变成“无效”状态。

2、索引、主键、约束、触发器等对象依赖于表,删除它们后,表还会存在,但是删除表后,它都会被同时删除。

3、CLUSTER 被表引用,在删除它之前,必须先删除引用它的表。

4、表之间的依赖,也就是外键约束,默认情况下,要先删除外键表或外键,才能删除主表,但是可以指定cascade constraint 选项,在删除主表的之前,先自动删除外键。

依上述的规则,我们可以先删除表,再删除其他对象,脚本如下:

-- 清空回收站
purge recyclebin;

-- 删除所有的对像
declare
    v_sql varchar2(200);
begin
    for x in (select table_name from user_tables) loop
        v_sql := 'drop table ' || x.table_name || ' cascade constraint purge';
        execute immediate v_sql;
    end loop;

    for y in (select object_type, object_name from user_objects) loop
        v_sql := 'drop ' || y.object_type || ' ' || y.object_name || '';
        execute immediate v_sql;
    end loop;

end;
/
打赏 支付宝打赏 微信打赏
    扫描二维码至手机访问

    扫描二维码推送至手机访问。

    版权声明:本文由卖水果的net发布,如需转载请注明出处。

    转载请注明出处:http://www.msgde.net/oracle/oracle_current_user_drop_all_objects.html

    分享给朋友:

    相关文章

    发表评论

    访客

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。