Oracle异常:Caused by: java.sql.SQLException: ORA-01536: 超出表空间 '登录名' 的空间限额 (JPA保存数据)

原因: Oracle表空间为0,没有分配空间内存.

解决办法在代码框里: 

1. 查看用户表空间的限额 
     select * from user_ts_quotas; 

max_bytes字段就是了 
-1是代表没有限制,其它值多少就是多少了. 

2. 不对用户做表空间限额控制: 
       GRANT UNLIMITED TABLESPACE TO ***(用户); 

  

----------------------------------------------------------------------------------------------------------------------
这种方式是全局性的. 
或者 
  alter user ***(用户名) quota unlimited on ***(表空间); 
  这种方式是针对特定的表空间的. 

可以分配自然也可以回收了: 
  revoke unlimited tablespace from ***(用户) 
  或者 
    alter user *** quota 0 on ***

 

 ps:

表空间的大小与用户的配额大小是两种不同的概念。表空间的大小是指实际的用户表空间的大小,而配额大小指的是用户指定使用表空间的的大小

把表空间文件增大,还是出现这个问题,用户在使用表空间的同时使用空间的限额,如果超出限制,就算有空的地方,也不会让用户使用。

遇到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;
原文地址:https://www.cnblogs.com/homee/p/10060305.html