2013-06-26 47 views
0
CREATE TABLE t_test (id VARCHAR2(255), name VARCHAR2(255)); 
DROP TABLE t_test; 

當我按下面的查詢看user_recyclebin表,空的結果在USER_RECYCLEBIN表

SELECT * FROM user_recyclebin; 

沒有選擇行,我不能閃回t_test表。請解釋我。爲什麼?

+0

SQL * Plus中'show parameters recyclebin'的輸出是什麼? –

+0

NAME是「recyclebin」,TYPE是「string」,VALUE是「on」。 –

+0

您的模式是否符合您的用戶;它可以通過登錄觸發器更改,也許?你是否從'select user',sys_context('USERENV','CURRENT_SCHEMA')中得到了相同的值;'? –

回答

3

the documentation

回收站僅適用於非系統,本地管理表空間。

你這樣做是因爲SYSTEM,這是一個非常糟糕的主意,原因很多。在這種情況下,SYSTEM的默認表空間爲SYSTEM,這可能是本地管理的,但不符合「非系統」要求。

但實際上don't create your own objects as SYSTEM

系統用戶名來創建更多的表和視圖 這顯示管理信息,以及內部表和視圖 各種Oracle數據庫選項和工具使用。切勿使用 SYSTEM架構來存儲非管理用戶感興趣的表。

請勿使用SYS或者任何默認帳戶。創建您自己的用戶並在該架構下創建對象。

+0

我可以由具有DBA角色的新用戶執行此操作嗎? –

+0

我喜歡那個** GRANT DBA TO用戶名**。但它還沒有工作。 –

+0

@PyaeThuAung - 除非您真的需要,否則您不應該授予DBA;您應該授予用戶最低權限以讓他們執行其活動;而且您應該通過角色授予這些角色以便更輕鬆地進行管理。儘管如此,評論的討論太長了。也許從[安全指南]開始(http://docs.oracle.com/cd/E11882_01/network.112/e16543/users.htm)。 –