我有一个全新的 Oracle 数据库,它给出了错误:
ORA-01950: no privileges on tablespace 'USERS'
我已经做好了:
alter user kainaw quota 100M on 'USERS';
grant unlimited tablespace to kainaw;
尽管如此,单个插入仍会返回该错误。除了磁盘配额,还有什么会导致“表空间'USERS'没有权限”错误?
更新:
Oracle 版本为 11.2.0.3.0 (11g)。我从服务器上的命令提示符登录。因此,我将用户 kainaw 更改为 sysdba。然后,我注销并登录用户 kainaw 进行测试:
insert into i.test values (1);
注意:i.test 是一个只有数字字段的表格。我得到上面的错误。我以 kainaw 身份注销,以 sysdba 身份登录,玩权限,注销,登录,测试,错误,注销,登录,...
您将权限授予不正确的用户。
模式所有者
i
拥有该表,因此是需要授予表空间相关权限的用户。这是因为没有表空间的特权。向用户授予表空间配额以解决此问题:
详细介绍ora-01950
这是由于表空间权限不足而导致的非常常见的错误。试试这个。
ORA-01950
正如其他人所说的非常正确,表的所有者需要有“权限”才能将数据存储在表空间中,即该表空间内的配额,而不是导致存储数据的个人。
我的价值:
不要将 UNLIMITED TABLESPACE 授予任何用户。
如果他们碰巧知道它们的名称,它允许他们将数据写入任何表空间,包括数据库内部的系统表空间。
控制用户,只允许他们写入您为他们准备(和调整大小)的表空间。如果像我一样,您将 Schemas 和 Tablespaces 关联起来,通过 Tablespace Ppoint-in-Time Recovery (TSPITR) 来创建单独的可恢复单元——显然,这是一种早于 CDB 的策略——然后允许用户将数据写入数据库的任何旧角落他们在哪里可以找到一些空间完全破坏了恢复策略。