ORA-01940 無法刪除當前連線的使用者

上帝_BayaiM發表於2024-08-20

-----------------------------------------------------------------------

---- 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';

相關文章