暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 删除大型架构的最快方法

ASKTOM 2020-11-03
563

问题描述

在我的CI工作流程中,我必须经常删除一个包含大量对象的完整架构。
只需使用 “drop user cascade” 即可工作,但最多需要5分钟的时间。
首先,在使用 “drop user cascade” 之前先删除约束和表,性能有所提高,但仍然很慢。
我想知道删除大型模式的最快方法可能是什么?
谢谢,
迪特

专家解答

drop user cascade通常需要很长时间,因为我们必须自动执行 (即,如果崩溃,我们需要将其全部回滚)。

我经常执行以下操作以获得速度提升:

----------
未定义所有者

设置第0页
设置行300
出发
假脱机/tmp/qwe123.sql
选择 'drop table '| | owner | |'.'| | table_name | |' 级联约束清除;'
从dba_tables
其中owner = upper('& & owner')
联盟全部
选择 '删除' | | 对象 _ 类型 | | ''| | 所有者 | | '。' | | 对象 _ 名称 | | ';'
从dba _ 对象
其中object_type不在 ('TABLE','INDEX','PACKAGE BODY','TRIGGER','LOB','JOB')
和object_type不像 '% LINK %'
和object_type不像 '% PARTITION %'
而owner = upper('& & owner')
联盟全部
选择 'exec dbms_scheduler.drop_job(''' | | 所有者 | | '。' | | object_name | | ''',force =>true);'
从dba _ 对象
其中对象类型 = “作业”
而owner = upper('& & owner')
按1订购;
阀芯关闭
@/tmp/qwe123
提示对象计数 =
select object_type,count(*) 从dba _ 对象 其中owner = upper('& & owner') group by object_type;
-----------------

它摆脱了大多数常见的对象类型,然后完成后,运行您的drop user cascade
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论