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