提问者:小点点

如何向用户授予临时表空间的配额


我正在尝试在Oracle 12c中创建一个具有默认临时表空间和该表空间配额的用户。

我的声明是:

CREATE USER test_user2
IDENTIFIED BY "pass1234"
DEFAULT TABLESPACE TEMP_WORK_TS
QUOTA 100M ON TEMP_WORK_TS
QUOTA 100M ON TEMP_TEST_01
TEMPORARY TABLESPACE TEMP_TEST_01
PROFILE DEFAULT_PROFILE
ACCOUNT UNLOCK; 

但是我得到错误:

ORA-30041:无法在表空间上授予配额

Oracle文档显示了为用户的临时表空间分配的配额。

为什么我的语句做同样的事情会出错?


共1个答案

匿名用户

这看起来像一个文档错误。该示例至少可以追溯到 Oracle 9i 文档,因此它可能早于真正的临时表空间。

同样来自12c文档:

您可以为每个用户分配任何表空间(临时表空间除外)的表空间配额。

ORA-30041 的文本是:

ORA-30041:无法在表空间上授予配额< br >原因:用户试图在还原或临时表空间上授予配额< br >操作:检查表空间名称并重新发出命令

据说从10g开始,9i版本只提到了撤消表空间。行为似乎发生了变化,但示例尚未更新以反映这一点。

因此,您无法授予该临时表空间配额。只需从创建用户语句中省略它即可。无论如何,配额只对永久盘区有意义,并且您不知道优化器可能需要为用户可能运行的查询分配多少临时空间。