-----------------------------------------------------------------------
---- bayaim
---- 2024年8月20日15:37:53
------------------------------------------------------------------------
问题背景:
想删除用户下所有的对象
1、问题现象:
执行命令,删除用户: drop user ECOLOGY cascade; 报错: ora01940 无法删除当前连接的用户
2、解决办法:
-- 查看用户的sid和serial select username,sid,serial#,program from v$session where username='ECOLOGY'; -- 如果用户已连接数的较少,可以手动删除 alter system kill session '385,29016'; -- 如果用户已连接数的较多,可以批量删除 select 'alter system kill session ''' || sid || ',' || serial# || ''';' from ( SELECT SE.sid, SE.serial#, SUBSTR(SE.machine, 1, 30) MACH FROM v$session SE, v$sqlarea SQ, v$process PR WHERE SE.paddr = PR.ADDR(+) AND SE.sql_address = SQ.address(+) AND SE.USERNAME like '%ECOLOGY%' ); ---查询的批量删除命令结果如下 alter system kill session '10,503'; alter system kill session '1144,964'; alter system kill session '1151,17866'; alter system kill session '1153,32599'; …… -- 在服务器上,使用sys链接数据库,再次删除用户 drop user ECOLOGY cascade; 测试结果: 1、如果数据库的对象较多,删除会很久 2、不如 DBCA 删库 -- 查看用户session的状态,验证结果 select saddr,sid,serial#,paddr,username,status from v$session where username is not null and username='ECOLOGY';
标签:删除,system,session,kill,01940,alter,SE,ORA From: https://www.cnblogs.com/bayaim/p/18369524