重庆思庄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