您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“oracle中出現(xiàn)ORA-01940:無(wú)法刪除當(dāng)前已連接的用戶怎么辦”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“oracle中出現(xiàn)ORA-01940:無(wú)法刪除當(dāng)前已連接的用戶怎么辦”這篇文章吧。
在現(xiàn)場(chǎng)作業(yè)時(shí),需要先刪除用戶;在執(zhí)行drop user時(shí)提示“ORA-01940: cannot drop a user that is currently connected”,當(dāng)時(shí)的環(huán)境如下:
操作系統(tǒng):Windows XP
數(shù)據(jù)庫(kù):Oracle 10.2.0.1
當(dāng)時(shí)時(shí)間比較著急,直接采取了釜底抽薪的辦法——拔網(wǎng)線,這招很管用,再次執(zhí)行drop user就成功了。考慮到以后不一定所有場(chǎng)合都允許你采取這種簡(jiǎn)單粗暴的辦法,就在虛擬機(jī)上重現(xiàn)了這個(gè)報(bào)錯(cuò),尋求一種較為溫和的解決辦法。
首先我打開兩個(gè)虛擬機(jī),在1號(hào)虛擬機(jī)上啟動(dòng)了兩個(gè)實(shí)例,打開了3個(gè)連接到scott用戶的窗口;在2號(hào)虛擬機(jī)上啟動(dòng)了一個(gè)實(shí)例,打開了一個(gè)連接到scott用戶的窗口。這時(shí)我登錄sys用戶執(zhí)行drop user操作,復(fù)現(xiàn)了上述報(bào)錯(cuò)。
點(diǎn)擊(此處)折疊或打開
[oracle@enmoedu1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2..3.0 Production on Fri Apr 17 21:25:40 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2..3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> drop user scott cascade;
drop user scott cascade
*
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected
SQL>
首先,我們查看scott用戶的連接狀況;
點(diǎn)擊(此處)折疊或打開
SQL> select username,sid,serial# from v$session where username='SCOTT';
USERNAME SID SERIAL#
------------------------------ ---------- ----------
SCOTT 19 355
SCOTT 20 13693
SCOTT 26 15
SCOTT 127 7
SQL>
接下來(lái),我們kill上述連接;
點(diǎn)擊(此處)折疊或打開
SQL> alter system kill session'19,355';
System altered.
SQL> alter system kill session'20,13693';
System altered.
SQL> alter system kill session'26,15';
System altered.
SQL> alter system kill session'127,7';
System altered.
SQL>
再次查詢scott用戶的連接狀況,確認(rèn)所有連接被清除完畢;
點(diǎn)擊(此處)折疊或打開
SQL>
SQL> select username,sid,serial# from v$session where username='SCOTT';
USERNAME SID SERIAL#
------------------------------ ---------- ----------
SCOTT 19 355
SCOTT 20 13693
SCOTT 26 15
SCOTT 127 7
SQL>
看到這兒,不要驚慌,不要以為這些連接還在;我們只要查詢一下上述連接的狀態(tài)就明白了。
點(diǎn)擊(此處)折疊或打開
SQL>
SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null;
SADDR SID SERIAL# PADDR USERNAME STATUS
-------- ---------- ---------- -------- ------------------------------ --------
578CC410 19 355 583AD258 SCOTT KILLED
578C9890 20 13693 583AD258 SCOTT KILLED
578B9390 26 15 583AD258 SCOTT KILLED
579DED90 120 95 5836FFB4 SYS ACTIVE
579CBD10 127 7 583AD258 SCOTT KILLED
SQL>
由上述查詢結(jié)果得知,scott用戶的所有連接已經(jīng)被kill了;現(xiàn)在我們執(zhí)行drop user,看一下是否能夠成功;
點(diǎn)擊(此處)折疊或打開
SQL>
SQL> drop user scott cascade;
User dropped.
SQL>
由此,ORA-01940報(bào)錯(cuò)得到順利解決。
以上是“oracle中出現(xiàn)ORA-01940:無(wú)法刪除當(dāng)前已連接的用戶怎么辦”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。