2013-06-26 18 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)。 –