oracle 9i 清除碎片(大家帮忙顶啊!)

[复制链接]
查看11 | 回复9 | 2015-6-11 16:16:52 | 显示全部楼层 |阅读模式
数据库数据量很大,1T左右,每天频繁进行插入,删除操作(主要集中在两个分区表上)
用导入、导出清理碎片不现实,由于数据量太大,时间太长,途中出错
请问各位有没有更好的办法清除碎片?[rm=null,null,null]null[/rm]
[ 本帖最后由 gengzhizhen 于 2008-12-16 13:44 编辑 ]
回复

使用道具 举报

千问 | 2015-6-11 16:16:52 | 显示全部楼层
这个。。。, 你有想过基于表和分区及相关索引的 relocation么?
move partition to new tablespace,
rebuild related index
还有,你最好有个测试环境先测试一下。可能会有performace风险。
在如此频繁操作的oltp系统上有这么大量的数据,你们还是挺牛的。估计平时tuning任务挺艰巨的吧。
回复

使用道具 举报

千问 | 2015-6-11 16:16:52 | 显示全部楼层
原帖由 littledan 于 2008-12-15 09:37 发表
这个。。。, 你有想过基于表和分区及相关索引的 relocation么?
move partition to new tablespace,
rebuild related index
还有,你最好有个测试环境先测试一下。可能会有performace风险。
在如此频繁操作的oltp系统上有这么大量的数据,你们还是挺牛的。估计平时tuning任务挺艰巨的吧。

不算大,我这里oltp 已经4T了
不过lz既然是有插入,有删除,那么还有必要整理碎片么?oracle自动会重用free block的,不需要你自己去回收。除非这个表只删除,不做插入(或插入的数据很少...)
回复

使用道具 举报

千问 | 2015-6-11 16:16:52 | 显示全部楼层
可用考虑使用移动表的方法来实现,速度挺快的,和存储上直接COPY差不多,试过移100G左右的表,大概30分钟搞定,麻烦的是索引要重建,不过个人看法那种方法来做碎片回收,对性能提高并不明显,有10%提高就很不错了。
回复

使用道具 举报

千问 | 2015-6-11 16:16:52 | 显示全部楼层
原帖由 wwwlh 于 2008-12-15 09:52 发表
可用考虑使用移动表的方法来实现,速度挺快的,和存储上直接COPY差不多,试过移100G左右的表,大概30分钟搞定,麻烦的是索引要重建,不过个人看法那种方法来做碎片回收,对性能提高并不明显,有10%提高就很不错了。

我还是想说,有必要么?10%这太夸张了,如果真有这么大好处,早就变成一个regular job了....

既然是oltp数据库,都是小事务,sql大部分走索引。你回去做全表扫描么?再说表又不是只删除不插入。这样的表能有多大碎片?还有就算你把表作了整理,然后呢?以后固定时间每次都做?....
回复

使用道具 举报

千问 | 2015-6-11 16:16:52 | 显示全部楼层
数据量这么大了你这么搞的时候 性能怎么算?
回复

使用道具 举报

千问 | 2015-6-11 16:16:52 | 显示全部楼层
现在出现性能问题了?没有的话就没有必要动了
你move后还要rebuil 该表上的索引的 在这些上面花费的时间能忍受?
回复

使用道具 举报

千问 | 2015-6-11 16:16:52 | 显示全部楼层
自己顶一下!!
回复

使用道具 举报

千问 | 2015-6-11 16:16:52 | 显示全部楼层
别人的帖子
{fhwlj
初级会员
精华贴数 0
个人空间 0
技术积分 5 (240409)
社区积分 0 (863226)
注册日期 2006-4-14
论坛徽章:0
咱4T的表,每个月清理一个分区,建临时表导入当月分区数据,然后truncate表分区,再插回数据
}
回复

使用道具 举报

千问 | 2015-6-11 16:16:52 | 显示全部楼层
fhwlj的方法是不是有点麻烦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行