重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 266|回复: 0
打印 上一主题 下一主题

[Oracle] DROP USER ... CASCADE特别慢怎么办?

[复制链接]
跳转到指定楼层
楼主
发表于 2024-10-31 11:58:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题:

使用DROP USER ... CASCADE删除用户时执行特别慢怎么办?



方法:

使用DROP USER ... CASCADE删除用户时,如果目标用户有太多表等对象的话,执行可能会非常慢。作为临时处理方法可以先删除目标用户Schema中的所有对象,然后删除用户。

例:

1.通过如下SQL列出目标用户所有对象的删除语句脚本(drop.sql)

SQL> set pages 0

SQL> spool drop.sql

SQL> select 'drop ' || object_type || ' ' || owner || '.' || object_name || ';'

     from dba_objects where owner = '<USER_NAME>';

SQL> spool off



2.执行删除语句脚本(drop.sql)

SQL> @drop.sql



3.删除用户

SQL> DROP USER <USER_NAME>  CASCADE ;



如果想进一步调查原因的话,可以设置10046跟踪文件看看到底什么操作花费了更多的时间。

例:

set timing on

set time on

alter session set tracefile_identifier='10046';

alter session set max_dump_file_size = UNLIMITED;

alter session set timed_statistics=true;

alter session set events '10046 trace name context forever, level 12';

<SQL 文>

alter session set events '10046 trace name context off';

exit


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-28 15:02 , Processed in 0.104978 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表