Ora-01536:超出了表空间users的空间限量(转)
正在开会,同事跑过来说数据库有问题,通讯程序不能入库,赶快获取一条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的空间限量(转)的更多相关文章
- ORA-01536: 超出表空间 'tablespace_name' 的空间限额
表空间限额问题知识总结: 表空间的大小与用户的配额大小是两种不同的概念 表空间的大小是指实际的用户表空间的大小,而配额大小指的是用户指定使用表空间的的大小 把表空间文件增大,还是出现 ...
- Ora-01536:超出了表空间users的空间限量
正在开会,同事跑过来说数据库有问题,通讯程序不能入库,赶快获取一条insert into a values()语句后在toad工具中手动插入,发现报错:Ora-01536:超出了表空间users的 ...
- oracle 碎片管理和数据文件resize释放表空间和磁盘空间(以及sys.wri$_optstat_histgrm_history过大处理)
随着互联网的快速发展,各行各业的数据量也是与日俱增,而数据库的数据量也是直线增长,但是,如果表DML太多,则可能会在高水位线以下出现太多空白. 因此,只能将数据文件缩小到高水位线,因为高水位线以下有一 ...
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- (转)oracle 查看表所占用的空间大小
1.查看表所占空间 SELECT TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),'999G999D999') CNT_MB FROM ...
- oracle查询每个表所占的空间
查看当前用户的每个表所占的空间大小: select segment_name,sum(bytes)/1024/1024 size_M from user_extents group by segmen ...
- [记录]一则清理MySQL大表以释放磁盘空间的案例
一则清理MySQL大表以释放磁盘空间的案例 一.基本情况: 1.dbtest库554G,先清理st_online_time_away_ds(37G)表的数据,保留半年的数据: 1)删除的数据:sele ...
- oracle创建用户、表空间、临时表空间、分配权限步骤详解
首先登陆管理员账号,或者有DBA权限的用户,接下来依次: --查询所有用户select * from dba_users;--创建新用户create user gpmgt identified by ...
- oracle创建表空间自增空间管理
表空间(tablespace).段(segment).区(extent).块(block),这些都是oracle数据库在数据文件中组织数据的基本单元 1.创建表空间create tablespace ...
随机推荐
- mysql 数据库备份
(2)使用命令行工具 备份数据库: mysqldump –user=root –password=root密码 –lock-all-tables 数据库名 > 备份文件.sql 恢复数据库: m ...
- 关于read only file system问题解决方案
切换到超级用户sudo -sadb kill-serveradb rebootadb remount
- css3弹性盒子模型
当下各种手机,平板尺寸不一,如果盒模型只能固定尺寸,不能随意压缩,将不能很好的迎合这个时代.所以css3推出了新的盒模型——弹性盒子模型(Flexible Box Model). 弹性盒模型可以水平布 ...
- 8.1H5学习笔记
内嵌框架 说明: 属性 属性值 说明 width px,% 指定框架的宽度 height px,% 指定框架的高度 scrolling yes,no,auto 是否显示滚动条 frameborder ...
- Python延迟打印字符
我想让python打印类似“正在加载...”,每个句号打印出来与它们之间的睡眠时间0.5秒间隔 实现方法: 1 2 3 4 5 6 7 8 9 10 11 #!/bin/env python # -* ...
- C语言 malloc calloc realloc alloc 在分配内存时的 区别
malloc : 向堆申请分配内存,不初始化 calloc : 向堆申请分配内存,初始化为0 realloc: 向堆申请分配内存,可调整大小 alloc : 向栈申请内存,不需手动释放
- Java设计模式——适配器模式
JAVA 设计模式 适配器模式 用途 适配器模式 (Adapter) 将一个类的接口转换成客户希望的另外一个接口. Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适配器 ...
- sqlserver表数据导出为insert into语句
<1>select 'insert into table_name (name,code) values ('''+name+''','''+code+''');' sql_str fr ...
- 编程:什么是REST
REST (REpresentation State Transfer) 描述了一个架构样式的网络系统,比如 web 应用程序.它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 ...
- input按钮事件的一个隐藏bug,分享出来
我的页面有一个input按钮: <input name="Delete" type="button" value="Delete" c ...