重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛
标题:
DROP USER ... CASCADE特别慢怎么办?
[打印本页]
作者:
mahan
时间:
2024-10-31 11:58
标题:
DROP USER ... CASCADE特别慢怎么办?
问题:
使用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
欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2