Oracle中的【ORA-01536表空间限额不够】的解决方法

Lecea ·
更新时间:2024-11-10
· 694 次阅读

Oracle中的【ORA-01536表空间限额不够】的解决方法 错误场景:

今天在SMS短信数据库一个功能运行时候遇到了ORA-01536错误,具体如下:

--执行一条插入语句 INSERT INTO SMS_MASTER (CREATE_DATE, TYPE_NAME, SMS_ID, SMS_CONTENT,SMS_PHONE) VALUES (SYSDATE, 'HIS', 00003689, '测试数据', '138****2263'); /*报错信息: ORA-01536: 超出表空间 'USERS' 的空间限额 */ 解决过程:

ps:开始以为是表空间不够用了,看了下,的确USERS表空间剩余不多了,于是新建了一个数据文件增加表空间,可是再次运行还是一样的ORA-01536;

/*对表空间设取消的限制 或指定限额大小*/ --2.1、这种方式是全局性的 GRANT UNLIMITED TABLESPACE TO sms_his; --2.2这种方式是针对特定的表空间的 alter user sms_his[这的sms_his里是用户] quota unlimited on USERS(这的USERS里是表空间); --2.3指定限额大小 如果你要设置实际的大小,那你可以设置需要的大小如下 alter user sms_his quota 500m on users; --查看用户表空间的限额 select * from dba_ts_quotas t where t.username ='SMS_HIS'; /*max_bytes字段【-1】是代表没有限制,其它值多少就是多少*/ /*ps:2.1我使用的是第一种方法*/ --授予用户帐户的系统权限 如下图 PRIVILEGE 值是 UNLIMITED TABLESPACE 就没问题了 select * from dba_sys_privs t where t.GRANTEE = 'SMS_HIS';

 

知识补充 回收表空间限额控制: --1、回收表空间限额控制: --1.1方式1 revoke unlimited tablespace from user; --1.2方式2 alter user sms_his quota 0 on user_tablespace; 表空间的大小与用户的配额大小是两种不同的概念 表空间的大小是指实际的用户表空间的大小,而配额大小指的是用户指定使用表空间的的大小。 把表空间文件增大,还是出现这个问题,用户在使用表空间的同时使用空间的限额。 如果超出限制,就算有空的地方,也不会让用户使用。 Aries·Zhao 原创文章 22获赞 6访问量 605 关注 私信 展开阅读全文
作者:Aries·Zhao



方法 表空间 Oracle

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章