删除Oracle中的用户级联
发布时间:2020-12-12 16:29:57 所属栏目:百科 来源:网络整理
导读:我需要能够从批处理中删除特定用户(可能有活动会话)而无需任何用户交互.我不关心活动会话,并希望将它们删除并回滚.对于Microsoft SQL,我将使用一行执行类似的任务: osql -E -S localhost -b -Q "use master if ((select name from sysdatabases where name=
我需要能够从批处理中删除特定用户(可能有活动会话)而无需任何用户交互.我不关心活动会话,并希望将它们删除并回滚.对于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; 和delete2.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:pathtodrop_user_with_active_session.sql MYUSER (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |