1. 程式人生 > 資料庫 >【DB_Oracle】oracle無法刪除當前已連線使用者的解決方案

【DB_Oracle】oracle無法刪除當前已連線使用者的解決方案

在還原Oracle某個使用者的資料之前應把該使用者及其已有的資料刪掉,然後新建同名的使用者並指定對應的表空間、臨時空間等,並授權。但在刪除該使用者時提示“無法刪除當前已連線的使用者”,該問題的解決方案如下:

例如要將名為xdbh的使用者及其下的資料刪除

1、先將待刪除使用者鎖定

alter user XDBH account lock;

2、查詢該使用者已連線的回話

select username,sid,serial# from v$session where username='XDBH';  
查詢結果:
USERNAME SID SERIAL#
XDBH 927 25285
XDBH 1974 31863
XDBH 2405 18931

3、然後基於語句alter system kill session 'xx,xxx'來關閉對應的回話,xx,xxx分別代表查詢出來的sid和serial#

alter system kill session '927,25285'

4、有可能與該使用者建立的回話比較多,每個回話均要寫一個關閉語句太麻煩,可以通過SQL拼接的方式得到所有回話的關閉語句,最後將查詢結果複製出來批量執行即可。

select 'alter system kill session '||chr(39)||sid||','||serial#||chr(39)||';' from v$session where username='XDBH';
查詢結果:

alter system kill session '121,63557';
alter system kill session '443,37363';
alter system kill session '917,1621';
alter system kill session '1167,13205';
alter system kill session '1259,18173';
alter system kill session '1675,21987';
alter system kill session '1926,43463';
alter system kill session '2030,15817';

alter system kill session '2036,6069';
alter system kill session '2427,3455';
alter system kill session '2748,51889';
alter system kill session '2819,37317';
alter system kill session '2842,43539';