免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3244 | 回复: 10
打印 上一主题 下一主题

表空间已满,但仍能插入数据怪现象。。请仙家指路。谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-16 10:45 |只看该作者 |倒序浏览
现象是这样的。
1、select * from dba_tablespaces where tablespace_name='TBS_RZQZUCAP_TRX';
     user_bytes        user_blocks
     1072693248      130944
2、SELECT sum(bytes),sum(blocks) from dba_extents where tablespace_name='TBS_RZQZUCAP_TRX' order by block_id;
     sum(bytes) sum(blocks)
     1072693248      130944
3、select * from dba_free_space where tablespace_name='TBS_RZQZUCAP_TRX';
     没有查到数据

由此可以判断'TBS_RZQZUCAP_TRX',确实已经满了。

我插入数据的方式有3种,
1、在sqlplus /
   INSERT INTO PCSP_TRANSACTION_LOG_2 SELECT * FROM PCSP_TRANSACTION_LOG_1 WHERE  system_serial='346059910075';
     commit;
     插入成功。查询表发现记录多了一条。
2、INSERT INTO PCSP_TRANSACTION_LOG_2 SELECT * FROM PCSP_TRANSACTION_LOG_1 WHERE  system_serial>'346059910074' and system_serial<'346078010176';

ERROR at line 1:
ORA-01691: unable to extend lob segment OPS$RZQZRUN.SYS_LOB0000049539C00038$$
by 128 in tablespace TBS_RZQZUCAP_TRX
分析原因 我觉得因为现在的表空间已满,所以SYS_LOB0000049539C00038$$也已经满了。所以插入不成功。
但是总觉得怪怪的。还有表空间SYS_LOB0000049539C00038$$是做什么用的不太清楚,发现他的类型是lobindex。
3、程序中insert into PCSP_TRANSACTION_LOG_2 values();
     这种模式也不行。

为什么3种情况不同,结果却不同,空间已满,但为什么还能插入。

还有一个问题。怎么样知道一个表已经使用的多少个块。?
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name
指的是表按照表空间建立是默认的方式建立初始区大小,我想知道在数据不多(没有超过初始区大小)的情况下,实际数据到底占用了多少块或者byte
谢谢执教

[ 本帖最后由 lijuwen 于 2009-12-16 10:57 编辑 ]

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2009-12-16 11:48 |只看该作者
表空间在占满后会自动扩张的哦。

论坛徽章:
0
3 [报告]
发表于 2009-12-16 14:29 |只看该作者
表空间满,所以表或索引无法取得新的extent,但当前的extent并不一定已满,所以insert少量记录是可以的,多了以后扩展extent时,就没报没有空间

论坛徽章:
0
4 [报告]
发表于 2009-12-16 15:13 |只看该作者

回复 #2 renxiao2003 的帖子

我用的文件系统的文件是不自动扩展的!谢谢

论坛徽章:
0
5 [报告]
发表于 2009-12-16 15:15 |只看该作者

回复 #3 doni 的帖子

按照你的说法,小数据可以插入,那么插入数据的第三种情况为什么不能插入数据。而且第2种情况就一条记录。谢谢

论坛徽章:
0
6 [报告]
发表于 2009-12-16 17:20 |只看该作者
1,2的情况好理解
3的情况在于,程序中是如何处理的,一共insert了几条记录,是单行提交,还是最后一起提交

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
7 [报告]
发表于 2009-12-16 17:23 |只看该作者
或许你查询时是100%使用率,但还是有那么点点地方可以容纳你要加入的数据。

论坛徽章:
0
8 [报告]
发表于 2009-12-16 17:24 |只看该作者

回复 #6 doni 的帖子

单行提交,就是普通一条数据插入。

论坛徽章:
0
9 [报告]
发表于 2009-12-16 18:09 |只看该作者
3的情况就是单笔提交吗?
那只能说,太巧合了
第1种情况下,所做的insert就是最后一根稻草

论坛徽章:
0
10 [报告]
发表于 2009-12-16 23:29 |只看该作者

回复 #9 doni 的帖子

遗憾的是 我写的是测试程序。就是插入一条。而且第1种情况下我手工插入了100多条都没事。
感觉事情越来越迷茫。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP