gpt4 book ai didi

oracle - 在 Oracle 中删除用户级联

转载 作者:行者123 更新时间:2023-12-04 12:43:29 25 4
gpt4 key购买 nike

我需要能够在没有任何用户交互的情况下从批处理中删除特定用户(可能具有事件 session )。我不关心事件 session 并希望它们被删除和回滚。对于 Microsoft SQL,我会用一行来完成类似的任务:

osql -E -S localhost -b -Q "use master if ((select name from sysdatabases where name='%DB%') is not null) begin alter database [%DB%] set single_user with rollback immediate drop database [%DB%] end"

我如何为 Oracle(Windows 上的 10g XE)执行此操作?

我目前的批次是:
sqlplus sys/*** as SYSDBA  @delete1.sql >delete.log
sqlplus sys/***@XE as SYSDBA @delete2.sql >>delete.log

其中delete1.sql:
startup force;
exit;

并删除2.sql:
drop user MYUSER cascade;
exit;

与 MSSQL 解决方案的瞬间相比,这太丑了,而且花费的时间太长。

最佳答案

如果您使用以下脚本(此处名为 drop_user_with_active_sessions.sql ),它应该可以工作:

set verify off

begin

for s in (
select
sid, serial#
from
v$session
where
username = '&1'
) loop

execute immediate
'alter system kill session ''' ||
s.sid || ',' ||
s.serial# || ''' immediate';

end loop;

execute immediate 'drop user &1';

end;
/

exit

并使用它
sqlplus username/password@instance @c:\path\to\drop_user_with_active_session.sql MYUSER

关于oracle - 在 Oracle 中删除用户级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4096560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com