方法:1、利用“v$session”找出連接當(dāng)前用戶的session;2、利用“alter system kill session ‘sid,serial#’”殺掉會(huì)話;3、利用“drop user…cascade;”刪除當(dāng)前用戶即可。
本教程操作環(huán)境:Windows10系統(tǒng)、Oracle 11g版、Dell G3電腦。
怎么刪除oracle當(dāng)前連接的用戶
測試環(huán)境的oracle數(shù)據(jù)庫,隨著軟件開發(fā)的版本升級(jí),需要重新刷數(shù)據(jù)庫,因?yàn)殡S著測試環(huán)境使用一段時(shí)間之后,里面的數(shù)據(jù)會(huì)越來越多,有時(shí)候?yàn)榱斯δ軠y試的方便,測試環(huán)境下的數(shù)據(jù)庫里的數(shù)據(jù)會(huì)出現(xiàn)不一致的情況,這樣對(duì)后續(xù)版本的測試會(huì)有一定的影像和干擾。為了避免以上情況的發(fā)生,一般會(huì)先清除當(dāng)前數(shù)據(jù)庫用戶下面的所有對(duì)象,然后重新創(chuàng)建。但刪除一個(gè)用戶下面所有的對(duì)象及數(shù)據(jù),需要先找出當(dāng)前用戶下有哪些對(duì)象,然后再刪除,使用刪除用戶級(jí)聯(lián)刪除的方式,非常簡單方便,但當(dāng)前要?jiǎng)h除的用戶被使用連接,則不能刪除,需要先殺掉會(huì)話,再刪除。
首先需要使用xshell工具連接上oracle數(shù)據(jù)庫服務(wù)器(這里介紹的是linux環(huán)境下的,windows環(huán)境更為簡單點(diǎn)),如果不是當(dāng)前l(fā)inux用戶不是oracle用戶,需要切換都o(jì)racle用戶下,輸入命令,su – oracle進(jìn)行切換
在oracle用戶下執(zhí)行,sqlplus / as sysdba,即以管理員sys身份登錄數(shù)據(jù)庫,刪除用戶一般只有管理員賬戶才有的權(quán)限,如果只是查詢數(shù)據(jù)庫表以及數(shù)據(jù)的話,則只需要使用普通賬戶登錄即可。連接上之后會(huì)提示Connected to: oracle databases等提示信息,并且出現(xiàn)的輸入提示符變成了SQL>
然后輸入刪除用戶的語句,DROP USER cqt CASCADE; CASCADE表示級(jí)聯(lián)刪除該用戶下所有對(duì)象信息的意思。如圖提示了,ORA-01940的錯(cuò)誤,不能刪除當(dāng)前正在被連接的用戶
如果還想繼續(xù)刪除的話,需要先查詢出當(dāng)前連接該用戶的會(huì)話信息,然后殺掉,再執(zhí)行刪除操作。查詢語句為:select sid,serial# from v$session where username='CQT';注意大小寫的區(qū)別。如圖查詢出了多個(gè)連接該用戶的會(huì)話信息,需要將以上查詢到的用戶會(huì)話都kill掉
kill掉會(huì)話的語句為:alter system kill session '15,19095';多個(gè)會(huì)話的,可以分別執(zhí)行多次kill掉就可以了
以上會(huì)話被清除之后,再次執(zhí)行刪除用戶的命令,如圖所示,這次可以成功的刪除了。因?yàn)榇苏Z句添加了級(jí)聯(lián)刪除的關(guān)鍵字,所以該用戶下的所有對(duì)象和數(shù)據(jù)都會(huì)被刪除的。
以上就完成了用戶及對(duì)象的刪除操作,如果是刷庫操作,則可以開始重新創(chuàng)建用戶然后在分配權(quán)限,執(zhí)行數(shù)據(jù)庫腳本,即可進(jìn)行新的一輪版本的測試了。
推薦教程:《Oracle視頻教程》