ORA-01536: space quota exceeded for tablespace
2016-06-28 12:19
前些天,一次平常的做数据库对比,将更新应用到目标库时报错:
ORA-01536: space quota exceeded for tablespace 'HBFS'
根据网上资料,该问题是由于用户在使用表空间时候受到了权限的限制
解决方案很简单,
修改这个用户的使用这个表空间的空间的权限就可以了。
oracle提供两种方法:
- Increase the tablespace quota allocated to that user or role by using the following command(即增加具体的大小限额):
ALTER USER <username> QUOTA
<integer> [K/M] ON <tablespacename>
- suggest QUOTA
UNLIMITED(即去掉配额限制,unlimited,推荐使用这种,否则当第一个方法用后,如果再不够,那岂不是要再进行分配限额!):
ALTER USER <username> QUOTA UNLIMITED ON <tablespacename>
方法2的另外一种写法:
grant unlimited tablespace to <username>;
于是在sqlplus下面以sysdba权限登陆操作:
SQL> grant unlimited tablespace to hbfs;
Grant succeeded.
SQL> delete from hbfs_gongnengtx where texingid=2736;
1 row deleted
操作成功,问题解决!
(亦可用plsql管理员登录,
A找到目标库编辑quotas,选择空,
B找到目标库编辑system privileges,选择unlimited tablespace,点击应用;
完成。)
本来到这里也告一段落,结果在一篇文章上面
(https://www.dbasupport.com/forums/archive/index.php/t-47410.html)
发现产生这个问题可能与role是DBA和RESOURCE被revoke有关。
换句话说,拥有dba角色的用户在使用表空间时,才可能有无限的表空间允许使用,当某种情况(不同版本的数据库数据 迁移等)下用户的dba角色被撤销,对应用户的无限的表空间使用权限也将停止。