正在开会,同事跑过来说数据库有问题,通讯程序不能入库,赶快获取一条insert into a values()语句后在toad工具中手动插入,发现报错:Ora-01536:超出了表空间users的空间限量。

该表a的是用户A下的一个大表,表空是users,而非A用户的默认表空间。users表空间有大约70%的空闲空间,为什么a表就不能使用了呢?从网上搜索后终于明白:

ora-1536 是指的你建表的那个user 所能使用的空间没有了,不是那个表所在的tablespace 没有free space 了。你需要做的是给那个user 对那个tablespace 有更多的space 可以使用。

解决办法增大能够使用的表空间数或授予无限制的使用权限

ALTER USER A QUOTA 50M ON users;

ALTER USER  A  QUOTA UNLIMITED ON users;

但为什么会出现这样的问题呢,原来设计的时候用户A,赋予DBA和resource权限,并没有设置表空间限额。但现在怎么会出现这么多的空间限额呢?

会不会是上次更改用户A的默认表空间造成的呀?

上次为了数据库便于维护,将用户A的表从别的表空间移到了表空间中,然后更改表空间TS_A 为用户A的默认表空间

select 'alter table '||table_name||' move tablespace TS_A ;'

from user_tables

where tablespace_name='LEE_TEST' ;

alter user A DEFAULT TABLESPACE TS_A;

把用户A下的表全部移到表空间TS_A下,但因为a是一个比较大的表,所以没有移动成功,a的表空间仍然是users;

估计跟这次操作有关系 ,改天进行测试。那天进行移动表的存储空间时还造成索引无效的错误,看来这次操作带来负面影响还是真不少。

创建一个用户,分配了400M的表空间,结果在用到13.3M时报错:
ORA-01536: 超出表空间 '***' 的空间限额

经查,表空间跟表空间限额两个值是不一样的.
推测按默认的话oracle应该会给每个用户分配一个默认的表空间限额,具体比例待查,但这比例肯定远小于100%.
所以说分配了400M的表空间未必能存储400M的数据.

解决办法如下:

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

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

不对用户做表空间限额控制:
GRANT UNLIMITED TABLESPACE TO ***(用户);
这种方式是全局性的.
或者
alter user ***(用户名) quota unlimited on ***(表空间);
这种方式是针对特定的表空间的.

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

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

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

遇到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;

Ora-01536:超出了表空间users的空间限量的更多相关文章

  1. Ora-01536:超出了表空间users的空间限量(转)

    Ora-01536:超出了表空间users的空间限量(转) 正在开会,同事跑过来说数据库有问题,通讯程序不能入库,赶快获取一条insert into a values()语句后在toad工具中手动插入 ...

  2. ORA-01536: 超出表空间 'tablespace_name' 的空间限额

    表空间限额问题知识总结:    表空间的大小与用户的配额大小是两种不同的概念    表空间的大小是指实际的用户表空间的大小,而配额大小指的是用户指定使用表空间的的大小    把表空间文件增大,还是出现 ...

  3. oracle 碎片管理和数据文件resize释放表空间和磁盘空间(以及sys.wri$_optstat_histgrm_history过大处理)

    随着互联网的快速发展,各行各业的数据量也是与日俱增,而数据库的数据量也是直线增长,但是,如果表DML太多,则可能会在高水位线以下出现太多空白. 因此,只能将数据文件缩小到高水位线,因为高水位线以下有一 ...

  4. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  5. (转)oracle 查看表所占用的空间大小

    1.查看表所占空间 SELECT   TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),'999G999D999')   CNT_MB     FROM   ...

  6. oracle查询每个表所占的空间

    查看当前用户的每个表所占的空间大小: select segment_name,sum(bytes)/1024/1024 size_M from user_extents group by segmen ...

  7. [记录]一则清理MySQL大表以释放磁盘空间的案例

    一则清理MySQL大表以释放磁盘空间的案例 一.基本情况: 1.dbtest库554G,先清理st_online_time_away_ds(37G)表的数据,保留半年的数据: 1)删除的数据:sele ...

  8. oracle创建用户、表空间、临时表空间、分配权限步骤详解

    首先登陆管理员账号,或者有DBA权限的用户,接下来依次: --查询所有用户select * from dba_users;--创建新用户create user gpmgt identified by ...

  9. oracle创建表空间自增空间管理

    表空间(tablespace).段(segment).区(extent).块(block),这些都是oracle数据库在数据文件中组织数据的基本单元 1.创建表空间create tablespace ...

随机推荐

  1. Linux下的snmpd.conf配置说明

    SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理.在RHEL中,SNMP的配置文件地址是/ ...

  2. javaweb笔记四

    得到表单数据:1.String str = request.getParameter(String)//根据表单名得到表单值,如果是多个同名的键值,返回第一个值.2.String[] str= req ...

  3. Spring Boot 入门案例与配置说明

    一.Spring Boot简介 官网地址:http://spring.io/projects/spring-boot Spring Boot可以轻松创建可以运行的独立的,生产级的基于Spring的应用 ...

  4. 【AtCoder】AGC021

    A - Digit Sum 2 从高位到低位数的第i位以前前缀都相同,第i位比当前位上的数小1的情况下,后面都填9 枚举一下然后计算最大的就好 #include <bits/stdc++.h&g ...

  5. Thinkphp分布式数据库连接代码分析

    Thinkphp作为国内的一款流行框架,相信使用的人一定不在少数.本篇我们来分析一下Thinkphp中比较重要的一部分——分布式数据库的连接. 当然了,我们在这里不是去将如何使用模型去对数据库进行增删 ...

  6. Cookie安全漫谈(转)

    add by zhj: 我也同意作者的观点,JavaScript 操作 Cookie 是一种不正常的做法:可以用 JavaScript 操作 Cookie 完成的功能,一样可以在服务端来完成. js操 ...

  7. 解决:虚拟机能ping通主机,主机ping不通虚拟机

    问题:虚拟机能ping通主机,主机ping不通虚拟机 解决方法: 1. 使用桥接. 2. 关闭防火墙.

  8. HTTP协议-MIME类型

    每一个 URL 都代表着一个资源对象,而当我们请求一个网页的时候,看似只请求了一个 URI(统一资源标识符),实际上这个网页可能包含多个 URI,例如图片资源的 URI 和视频资源的 URI 等.此时 ...

  9. 【BZOJ 1563】 (四边形优化、决策单调性)

    1563: [NOI2009]诗人小G Time Limit: 100 Sec  Memory Limit: 64 MBSubmit: 2611  Solved: 840 Description In ...

  10. mysql where 条件中的字段有NULL值时的sql语句写法

    比如你有一个sql语句联表出来之后是这样的 id           name            phone                  status 1            张三     ...