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