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

http://www.hetaoblog.com/myblogs/post/ora-01536.jhtml

1. 错误场景:

今天在测试一个功能的时候遇到了ORA-01536错误,具体如下

SQL> create table t_row_col_change (n number, str varchar2(100));

create table t_row_col_change (n number, str varchar2(100))

*

第 1 行出现错误:

ORA-01536: 超出表空间 'USERS' 的空间限额

2. 解决过程:

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

google了一把,发现正确的解决方法如下,找一个DBA用户,运行下面这句SQL

SQL> alter user hetaoblog quota 400m on USERS;

用户已更改。

将hetaoblog在USERS表空间上的限额去掉;

注:

a. 之前运行create table这句SQL的用户是hetaoblog, 这个要替换成你直接的数据库用户名;

b. 前面create table没有指定表空间,所以默认在USERS表空间创建,如果你提示的错误是其他表空间,这里也要换成对应的表空间;

3.详细分析:

a. 表空间限额和表空间不够是两回事,所以通过增加表空间不直接解决问题;

b. 我在开发环境下,所以直接将限制去掉了;如果你要设置实际的大小,那你可以设置需要的大小如下:

alter user hetaoblog quota 200M on USERS;

c. 要查看实际对应的用户的表空间限制,就运行下面这句SQL查询所在表空间上对应的MAX_BYTES,如果是-1就表示没有限制

select * from user_ts_quotas;

select * from dba_ts_quotas

d. 如果要对所有表空间设取消的限制的话,可以运行下面这句SQL

grant unlimited tablespace to hetaoblog;

让hetaoblog在所有的表空间上都没有限制;

e. 如果要收回限制的话,可以运行下面两句中的之一

SQL> alter user hetaoblog quota 0 on USERS;

用户已更改。



SQL> revoke unlimited tablespace from hetaoblog;

撤销成功。

你可能感兴趣的:(oracle,ora-01536)