1、故障情况
星期一上班一早,客户打电话来,说数据库空间满了。检查表空间情况,还有剩余,检查alert_XXX.log也未有报错。
软件方手工测试,执行插入数据时报错,如下:
ORA-01536: 超出表空间 'xxxx' 的空间限额
2、故障解决
使用业务用户'AA'登陆数据库,查询业务用户'AA'对表空间'XXXX'的限额
select * from user_ts_quotes;
max_bytes字段为“0”,说明限额用完了,需要调整
增大用户对表空间的读写限额,由原来的2.5G加大到5G:
alter user 'AA' quota 5G on 'XXXX';
3、验证
软件测试后,数据库使用正常。
4、总结
遇到ORA-01536错误,首先要查看用户的表空间的限额
select * from dba_ts_quotas;
select * from user_ts_quotas;
max_bytes字段-1是代表没有限制,其它值多少就是多少.
dba_ts_quotas :描述所有用户表空间的限额
user_ts_quotas :描述当前用户表空间的限额。
如果查询结果中max_bytes字段不为-1,修改为无限制或者指定的大小。
不对用户做表空间限额控制:
GRANT UNLIMITED TABLESPACE TOuser;
这种方式是全局性的。 或者
alter user user quota unlimited on user_tablespace;
这种方式是针对特定的表空间的.
回收表空间限额控制:
revoke unlimited tablespace from user;
或者
alter user user quota 0 on user_tablespace;