查看: 6758|回复: 18

收缩数据库的问题

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2008-6-4 16:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人系统建立在windows2003系统下,oracle版本是 10.2.0.1。现在有这样一个问题:我有一个表空间,他的数据文件只有一个,大小在25G左右。此表空间备份(exp)出来差不多10G左右。我现在对此表空间的大部分表数据进行删除,用delete删除的,删完之后备份出来(exp)差不多只有2G左右了。然后我把这个备份文件导到另外一台电脑上的数据库上(此数据库是全新的,只有oracle自带的几个系统表空间和一个自己新建的表空间(无任何数据)),发现导进去之后,这个表空间到数据文件大小还是达到25G之多,这个是怎么回事呢,不是说exp/imp会重新整理blocks和重置HWM的么?怎么数据文件还是这么大?  还望各位大虾不吝指教一下
论坛徽章:
0
2#
 楼主| 发表于 2008-6-5 14:07 | 只看该作者
有谁帮帮小弟否?
感激!!

使用道具 举报

回复
论坛徽章:
122
现任管理团队成员
日期:2011-05-07 01:45:08
3#
发表于 2008-6-5 14:11 | 只看该作者
init extent的大小是不是过大了~

使用道具 举报

回复
论坛徽章:
14
奥运会纪念徽章:拳击
日期:2008-04-24 10:00:15CTO参与奖
日期:2009-02-12 11:45:482012新春纪念徽章
日期:2012-02-07 09:59:35ITPUB季度 技术新星
日期:2012-02-16 14:53:16鲜花蛋
日期:2012-03-19 18:10:462013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
4#
发表于 2008-6-5 14:18 | 只看该作者
用truncate删除

使用道具 举报

回复
论坛徽章:
122
现任管理团队成员
日期:2011-05-07 01:45:08
5#
发表于 2008-6-5 14:21 | 只看该作者
原帖由 yuxuan 于 2008-6-5 14:18 发表
用truncate删除

使用道具 举报

回复
论坛徽章:
1
2009新春纪念徽章
日期:2009-01-04 14:52:28
6#
发表于 2008-6-5 14:33 | 只看该作者
数据文件创建的时候多大他在文件系统中占用的大小就是多大了,这个是不会改变的了,除了自动扩展,但是这个大小依旧没法缩小
至于你exp出来的文件是10g还是2g这就跟你实际的数据占用的blocks有关系了!

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2013-12-18 09:29:12
7#
发表于 2008-6-5 15:08 | 只看该作者
在导出以前,你的数据占用的是25G的磁盘空间,在你执行DELETE以后,你的数据占用的磁盘空间仍然是25G,因为DELETE不会移动高水位线,就是不会有空间回收;你导出的时候,虽然你的DUMP文件小于25G,但是你的表的“定义”并没有改变,在导入的时候,ORACLE会创建一个和原来大小相同的表(尽管表中没有那么多数据,ORACLE还是分配了和源表大小相同的空间)。为了解决你出现的问题,在导入之前,建议你先手工创建好表,再执行导入。以上只是我的看法,没有经过试验

[ 本帖最后由 zerocool88888888 于 2008-6-5 15:10 编辑 ]

使用道具 举报

回复
论坛徽章:
122
现任管理团队成员
日期:2011-05-07 01:45:08
8#
发表于 2008-6-5 15:43 | 只看该作者
原帖由 zerocool88888888 于 2008-6-5 15:08 发表
在导出以前,你的数据占用的是25G的磁盘空间,在你执行DELETE以后,你的数据占用的磁盘空间仍然是25G,因为DELETE不会移动高水位线,就是不会有空间回收;你导出的时候,虽然你的DUMP文件小于25G,但是你的表的“定义”并没有改变,在导入的时候,ORACLE会创建一个和原来大小相同的表(尽管表中没有那么多数据,ORACLE还是分配了和源表大小相同的空间)。为了解决你出现的问题,在导入之前,建议你先手工创建好表,再执行导入。以上只是我的看法,没有经过试验

使用道具 举报

回复
论坛徽章:
76
双子座
日期:2015-07-28 14:26:072012新春纪念徽章
日期:2012-02-13 15:09:52ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15鲜花蛋
日期:2011-08-26 02:02:24管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:皮划艇
日期:2011-04-18 11:24:412011新春纪念徽章
日期:2011-02-18 11:43:342011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
9#
发表于 2008-6-5 17:24 | 只看该作者
原帖由 zergduan 于 2008-6-5 14:11 发表
init extent的大小是不是过大了~



经过测试 很有可能是init extent 过大
验证方法很简单 对比两个库表的存储参数即可 这种情况应该是一样的  因为导出时表存储参数也导出了

要解决这个问题 修改表的存储参数 但前提是看你表空间是怎么建立的
要改小的话 建立表空间时按默认设置即可 init 64K

[ 本帖最后由 paulyibinyi 于 2008-6-5 17:28 编辑 ]

使用道具 举报

回复
论坛徽章:
0
10#
发表于 2008-6-5 17:45 | 只看该作者
执行exp时,compress=n就可以解决

[ 本帖最后由 xuzhengxiong 于 2008-6-5 17:46 编辑 ]

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表