Oracle delete 数据后的释放表空间问题

 Oracle10g新特性shrink segment来降低HWM

 

 

 

数据表的庞大导致查询速度降低是必然的,所以常常将数据表的数据移走,但是使用delete后,数据是删除了,但是速度没有多大改善,忧闷了。使用备份表再drop掉原表。的确可以解决问题。但是较麻烦,今天请教了一个Oracle高手,解决了问题。 由于delete操作是不释放表空间的,要想提高查询速度则必须释放表空间。

对Oracle 9i而言,释放表空间则需要重新分析表。

analyze table itemLog compute statistics;
再进行select ,感觉的确快了很多。

另一种方法:使用exp将表导出,drop 掉表,再imp回去。

 

 

先做个简要笔记

今天,帮同事导数据,从开发环境导到测试环境中,发现一个查询变的很慢。查看执行计划,发现居然用了全表扫描(表中大约300w条记录),为啥不用索引呢,查看索引状态,一切正常。晕。
肯定是索引的问题,先分析一下表再说。
analyze table ysgl_compile_reqsub compute statistics for all indexes;

正常了。

------------------------------------------------------

一个论坛上的帖子:

Analyze table对Oracle性能的提升 
url:http://www.itpub.net/thread-295293-1-1.html


大家来讨论一下这个优化课题
我自己碰到的一个实际情况:
一个sql语句执行要1个小时,有时候还出不了结果,但分析sql涉及的表后,然后重新执行3分钟搞定!
真的有这样惊人的差异?

世事无绝对,有时候你可能发现会变慢
了解了CBO和RBO你就知道区别了

annlyze表会增加CBO执行的性能?不一定的。
我就碰到一个语句分析后要执行30多分钟,删除分析后,只要30秒。
很多情况下不一定的,最好是自己从执行计划判断

 

OracleOracle数据delete清空后查询很慢 问题】原有一千万条数据delete 后仅保留了一天的数据,32条记录select竟然耗时34秒。 【分析】 1、根据以往经验的估计delete时没有恢复oracle的高水位线。 2、以下为参考资料 在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当 阅读详情

相关推荐

oracle数据库单个表空间达到32G后程序报错表空间不足问题排查、处理;查询表空间使用情况,delete、truncate、drop释放表空间步骤

oracle数据库单个表空间达到32G后程序报错表空间不足问题排查、处理;查询表空间使用情况,delete、truncate、drop释放表空间步骤

qq445829096的博客 672

Oracle删除大量数据(千万)后查询变慢问题(原因分析)

Oracle删除大量数据(千万)后查询变慢问题(原因分析)

Oracle 回收表空间文件空闲的空间

我们知道Oracle对于使用DELETE删除的数据表空间的剩余空间并不会增加。虽然数据已经删除了,但是已使用的空间还是那么大。这就造成了一个现象,当一个表空间使用率达到100%的时候,我们通过删除一些没用的数据,但是还是不能往放在该表空间下的添加数据Oracle EBS有张fnd_lobs,该包含字段FILE_DATA,用于存放Forms的“文件-导出”命令导出的文件。每导出一次数据,就

苏南生的CSDN博客 2万+

【教程】truncate清空数据,为什么数据库的空间还是和原来一样并没有释放|truncate table 空间没有释放|数据释放表空间教程|

我们经常会被问到delete和truncate的区别,然后我们经常回答delete是删除数据,truncate是清空,但是你有没有想过,当你用truncate清空数据的时候,为什么数据库的空间还是和原来一样并没有释放

小小鱼儿小小林的博客 1万+

Oracle使用delete删除部分数据后,如何释放表空间??

Oracle使用delete删除部分数据后,如何释放表空间??

weixin_63610637的博客 7256

ORACLE数据delete释放空间问题

关于ORACLE数据delete释放空间问题前些天给⼀家客户开发个接⼝,还原了正式数据库,由于数据库存储量太⼤,还原后基本没什么空间了,有个业务使⽤频繁,决定删除前期数据,只留近两个⽉数据以便测试。数据量太⼤,等待时间长,就分段删除的,删了⼀半左右吧,发现delete数据后空间不但没收缩,⽽且占⽤的存储空间还越来越⼤,于是乎决定看下怎么回事。于是继续删除数据,删除了⼤半天终于删完了,回滚段表空间⼜重新建了⼀次,但是数据表空间占⽤率并没有下降。(清除回滚段表空间⼀定要慎重,尽量不要在正式数据库操作!

weixin_42095178的博客 1372

oracle delete释放表空间,Oracle delete数据后的释放表空间问题的解决

我们都知道数据的庞大导而致其查询速度的降低是水到渠成的,所以我们只有将相关的数据数据相应的移走,但是如果使用Oracle delete之后,相关的数据删除了,但是速度没有多大改善,忧闷了。使用备份再drop掉原。的确可以解决问题。但是较麻烦,今天请教了一个Oracle高手,解决了问题。 由于Oracle delete操作是不释放表空间的,要想提高查询速度则必须释放表空间。对Oracle ...

weixin_28775381的博客 7104

oracle delete释放表空间,Oracle delete数据后的释放表空间问题的解决 --转

我们都知道数据的庞大导而致其查询速度的降低是水到渠成的,所以我们只有将相关的数据数据相应的移走,但是如果使用之后,相关的数据删除了,但是速度没有多大改善,忧闷了。使用备份再drop掉原。的确可以解决问题。但是较麻烦,今天请教了一个Oracle高手,解决了问题。 由于Oracle delete操作是不释放表空间的,要想提高查询速度则必须释放表空间。对Oracle 9i而言,释放表空间则需要...

weixin_36261424的博客 1306

Oracle delete数据后的释放表空间问题的解决 --转

我们都知道数据的庞大导而致其查询速度的降低是水到渠成的,所以我们只有将相关的数据数据相应的移走,但是如果使用Oracle delete之后,相关的数据删除了,但是速度没有多大改善,忧闷了。 使用备份再drop掉原。的...

cituan7188的博客 1357

oracle数据库批量删除(delete)数据后,表空间不是立刻释放问题解决

当我们在手动清理(delete)一张里面的废数据时,数据库并不会立刻废数据表空间,这样在我们系统的查询时会有性能影响。我们可以通过手动触发分析的方式,释放被删除的废数据所占用的表空间,提示性能。注意:替换sql中的用户与名。

weixin_43974503的博客 361

Oracle删除数据释放空间以及误删除后数据找回

oracle数据量过大,会导致查询缓慢,此时若想要删除中过期数据的话,第一种方式可以先将数据结构备份出来,然后drop删掉,最后再新建将备份的数据导回来;第二种方式也是要将需要的数据备份出来,使用Truncate清空;第三种方式就是使用delete删除数;以上第一二种方式能够立马释放表空间,但是第三种方式delete是不会释放表空间的,此时需要手动释放表空间:1、开启行移动功能alter table 名 enable row movement;

weixin_48493949的博客 1068

oracle数据库如何重整,数据库空间重整方案

在过去释放空间的办法中是一直使用调用存储过程(通过delete删除部分数据后)释放空间 ,但是空间一直无法释放的实际状况下(在oracle 数据库中是由一个或多个extents组成,每增加或扩展一个extent,高水位标志(hwm)朝上上移动一个高位,其以下的空间就是数据空间的容量.delete操作时,只是把数据删除,而并不能让这个hwm下降。所以空间一直无法释放)。在此种特殊的情况下,为了在...

weixin_34588509的博客 860

ORACLE LOB大字段维护

2018年5月3日,移动某平台发起告警短信,某表空间使用率超过阈值85%,按照日常惯例先对表空间扩容,再定位触发 告警的表空间中最大的段并对大段出具处理建议。本次处理中,发现中有大字段oracle数据库会自动为大字...

clm20482的博客 321

ORACLE 11g 生产中高水位线(HWM)处理

数据库中不断的insert,delete,update,导致和索引出现碎片。这会导致HWM之前有很多的空闲空间,而oracle在做全扫描的时候会读取HWM一下的所有块,这样会产生更多的IO,影响性能。 oracle提供了shrink space碎片整理的功能,对于索引要采取rebuild online的方式进行碎片整理。 高水位的管理机制 高水位的管理机制在 MSSM 和 ASSM 中不同,在以往的手动段空间管理中(MSSM),高水位标记 HWM,一个段分成三部分,header block,us

swordlb的博客 1186

oracle 总结,oracle经验总结

1.删除表空间DROP TABLESPACE TableSpaceName [INCLUDING CONTENTS [AND DATAFILES]]2.删除用户DROP USER User_Name CASCADE3.删除的注意事项在删除一个中的全部数据时,须使用TRUNCATE TABLE名;因为用DROP TABLE,DELETE * FROM名时,TABLESPACE表空间的占用...

weixin_32304839的博客 193

oracle-数据库 插入大批量数据报:ORA-01654: 索引 APPINST.SYS_C0017853 无法通过 1024 (在表空间 USERS 中) 扩展问题

查看库内占用内存最高的30个。使用下面两个是没办法释放空间的。查看库的内存占用情况。删除占用大的数据

qq_42282171的博客 314

mysql delete后怎么释放表空间

如何解决mysql delete数据后,表空间大小不变的问题? 这是因为删除操作后在数据文件中留下碎片所致。DELETE只是将数据标识位删除,并没有整理数据文件,当插入新数据后,会再次使用这些被置为删除标识的记录空间。另外实际操作过程中还发现这个问题还存在两种情况。 (1)当DELETE后面跟条件的时候,则就会出现这...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 1285

oracle11g delete表空间释放,delete释放表空间

只是delete行,原来所占用的空间不能被别的对象所用。只有drop了对象之后,才能被别的对象使用。只是删除数据表空间使用率,不会变化。对象占用的大小也不会变化SQL> create tablespace t_test datafile '/data/t_test01.dbf' size 5m autoextend off;Tablespace created.SQL> drop ...

weixin_39742958的博客 2436
上一篇: oracle性能如何调整,如何回收表空间碎片
下一篇: cbo rbo
lanmh
博客等级 码龄20年 7粉丝 288原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值