我尝试使用默认的临时表空间和该表空间的配额在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 documentation显示为用户的临时表空间分配的配额。
为什么我的声明做同样的事情会得到错误?
答案 0 :(得分:2)
这看起来像文档错误。该示例至少返回Oracle 9i documentation,因此它可能早于真正的临时表空间。
Also from the 12c documentation:
您可以为每个用户分配任何表空间的表空间配额(临时表空间除外)。
据说自10g以来,但9i版本只提到了撤销表空间。行为似乎已经改变,并且示例刚刚没有更新以反映这一点。ORA-30041:无法授予表空间配额
原因:用户尝试在撤消或临时表空间上授予配额 操作:检查表空间名称并重新发出命令
因此您无法授予该临时表空间配额。只需从create user语句中省略它即可。无论如何,配额只对永久扩展区有意义,并且您不知道优化器可能需要为用户可能运行的查询分配多少临时空间。