2010-09-08 47 views
0

我想使用我的應用程序刪除Oracle 10g中的表空間。無法在oracle中刪除用戶

有關我的應用程序 - 在我的應用程序中,我可以創建表空間。

現在在oracle中發生的情況是,當您創建表空間時,將自動創建一個新用戶並將其附加到數據庫。

當您必須刪除表空間時,必須首先刪除連接到數據庫的用戶,然後刪除數據庫。

當我嘗試刪除與表空間關聯的用戶時。 一個例外是由作爲System.Data.OracleClient.OracleException

數據庫拋出的異常的細節如下: - ORA - 01904(不能刪除當前連接的用戶)

的事情是我已經關閉了所有的連接。請確信這一點。

仍然oracle正在拋出這個異常。

任何建議???

仍然不能放棄用戶並拋出異常。

+1

0123現在在oracle中發生的事情是,當你創建一個表空間時,一個新用戶自動被創建並被連接到數據庫......這是正確的嗎?那個用戶是什麼? – Jayan 2010-09-08 11:20:17

回答

1

您可能會關閉應用程序但未結束該用戶的Oracle會話。如果你發現你的用戶在此列表中,然後殺死他的所有會話

SQL> select sid, serial#, username from v$session; 

     SID SERIAL# USERNAME      
---------- ---------- ------------------------------ 
     122  2557 SYS     
     126  7878 SOME_USER      

:登錄以SYSDBA和查詢活動的會話

SQL> alter system kill session 'sid,serial#'; 
0

似乎是你的錯誤代碼爲ORA-01940,而不是ORA -01904它說 -

ORA-01940:不能刪除當前登錄

導致用戶:試圖放棄目前這是登錄的用戶

操作:確保用戶已註銷,然後重新執行該命令。

希望下面的鏈接,可以幫助您 -

http://www.dba-oracle.com/t_ora_01940_cannot_drop_user.htm

0

我們下面和工程..

ALTER TABLESPACE "OUR_INDEX" OFFLINE NORMAL; 
DROP TABLESPACE "OUR_INDEX" INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; 
0

請確保你想刪除用戶目前不連接的。去年我確實遇到過這個問題。我的解決方法是重新啓動數據庫。一旦數據庫啓動,我就放棄用戶。

我還沒有嘗試過的另一個解決方法是重新啓動偵聽器。這也是(邏輯上)可以確保當監聽器關閉時'待丟棄'用戶未連接。

此解決方法(當然)不能用於生產數據庫。

0

用戶在創建表空間時不會自動創建。

用戶確實獲得了一個默認表空間。他們可能(或可能不)在該表空間中創建對象。他們可能(也可能不)在其他表空間中創建對象。

一般情況下,而不是放棄用戶,我會放棄用戶的對象。然後鎖定該帳戶,使其無法再次登錄。然後撤銷他們擁有的任何特權。

如果需要,您可以在一個月左右後刪除「未使用」的用戶。