2015-10-23 13 views
2

Oracle documentation對於DROP USER指出: 「除非您指定CASCADE」,否則Oracle數據庫不會刪除其架構包含對象的用戶。當DROP USER但是不指定CASCADE時,模式對象會發生什麼?

我的理解是,所有模式都必須有一個關聯的用戶帳戶(儘管通過限制CREATE SESSION命令等可以限制該帳戶的使用)。但是,當您使用DROP USER命令時,以前擁有的對象實際上發生了什麼?如果用戶不再存在...那麼哪個帳戶擁有這些對象?

對於上下文,我是一名開發人員而不是DBA,對我的數據庫沒有DCL權限,所以我無法親自測試。我正在開發一個遷移項目,在此項命令可能是必要的,但我希望在將請求傳遞給我的企業DBA團隊之前更好地理解其含義。

+3

如果用戶有對象,則不降級沒有CASCADE失敗。 – jarlh

+1

是不是你引用的陳述說的是什麼?如果不指定級聯,它不會(不會)用對象刪除用戶。你不能有孤兒對象。另請注意,如果您放棄了用戶,他們的回收站將被清除;所以如果放棄級聯,那麼用戶的對象將被永久刪除,並且不會進入回收站。 –

+0

@Alex Poole - 是的....第一次肯定讀錯了。我認爲文檔說它不會處理相應的對象,除非你指定了級聯。謝謝 – DanK

回答

3

如果嘗試在不指定CASCADE,您將收到以下錯誤刪除用戶(如THE_USER):

ORA-01922: CASCADE must be specified to drop 'THE_USER' 

要麼使用CASCADE選項會DROP USER陳述或手動丟棄前刪除所有用戶對象用戶。

HTH

+0

謝謝......我誤解了文檔,並沒有意識到他們說如果用戶有對象但沒有指定級聯,操作將完全失敗。謝謝你清理那個。 – DanK

相關問題