方法:1、利用「v$session」找出連接目前使用者的session;2、利用「alter system kill session 'sid,serial#'」殺掉會話;3、利用「drop user. ..cascade;」刪除目前使用者即可。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
測試環境的oracle資料庫,隨著軟體開發的版本升級,需要重新刷資料庫,因為隨著測試環境使用一段時間之後,裡面的資料會越來越多,有時候為了功能測試的方便,測試環境下的資料庫裡的資料會出現不一致的情況,這樣後續版本的測試會有一定的影像和乾擾。為了避免以上情況的發生,一般會先清除目前資料庫使用者下面的所有對象,然後重新建立。但刪除一個用戶下面所有的對象及數據,需要先找出當前用戶下有哪些對象,然後再刪除,使用刪除用戶級聯刪除的方式,非常簡單方便,但當前要刪除的用戶被使用連接,則不能刪除,需要先殺掉會話,再刪除。
首先需要使用xshell工具連接上oracle資料庫伺服器(這裡介紹的是linux環境下的,windows環境更為簡單點),如果不是當前linux用戶不是oracle用戶,需要切換都oracle用戶下,輸入指令,su - oracle進行切換
在oracle用戶下執行,sqlplus / as sysdba,即以管理員sys身分登入資料庫,刪除使用者一般只有管理員帳戶才有的權限,如果只是查詢資料庫表以及資料的話,則只需要使用普通帳戶登入即可。連接上之後會提示Connected to: oracle databases等提示訊息,並且出現的輸入提示符號變成了SQL>
然後輸入刪除使用者的語句,DROP USER cqt CASCADE; CASCADE表示級聯刪除該使用者下所有物件資訊的意思。如圖提示了,ORA-01940的錯誤,不能刪除當前正在被連接的用戶
#如果還想繼續刪除的話,需要先查詢出當前連接該用戶的會話訊息,然後殺掉,再執行刪除操作。查詢語句為:select sid,serial# from v$session where username='CQT';注意大小寫的差異。如圖查詢出了多個連接該用戶的會話信息,需要將以上查詢到的用戶會話都kill掉
#kill掉會話的語句為:alter system kill session '15,19095';多個會話的,可以分別執行多次kill掉就可以了
#以上會話被清除之後,再次執行刪除用戶的命令,如圖所示,這次可以成功的刪除了。因為此語句新增了級聯刪除的關鍵字,所以該使用者下的所有物件和資料都會被刪除的。
以上就完成了使用者及物件的刪除操作,如果是刷庫操作,則可以開始重新建立使用者然後在分配權限,執行資料庫腳本,即可進行新的一輪版本的測試了。
推薦教學:《Oracle影片教學》
以上是怎麼刪除oracle目前連線的用戶的詳細內容。更多資訊請關注PHP中文網其他相關文章!