专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Oracle技术

impdp导入为啥索引会占的非常大

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
impdp导入为什么索引会占的非常大。
本帖最后由 xixi_168 于 2014-07-19 23:10:47 编辑
在做数据库迁移。现在在做测试。
由于老数据库和新数据库字符集不同,原数据库:GBK,现数据库UTF8
所以是经过如下步骤导入的。
1、导出表结构,不包括索引和主外键。
2、更新中文字段扩展为原始长度的1.5倍。更新VARCHAR2字段。
3、导入数据
4、导入索引和主键。

前面三步没任何问题,第四步。占用太多的表空间。
原始数据导出来只有80G。第三步导入数据也就100多个G。
但导入索引时候直接占了400G左右,还不够用提示表空间不足。


我查了下DBA_SEGMENTS视图,发现数据量很小的表比如几十万条的数据,一个索引竟然占了3、4个G。
查看表结构发现了一个现象,原来导入的表结构initial只是4K现在是几个G了。但是数据量才几十万不可能占用和这么多的。

对表进行shrink收缩操作后,发现立马减下去了。表和索引占的segment只有几百兆和几十兆。

为什么会出现这种现象??表空间和用户都是单独建的。表空间设置自增长。



------解决方案--------------------
原来导入的表结构initial只是4K现在是几个G了 ,

你原来的库里,就是这么设置的,你可以到原来的库里看看。

对表进行shrink收缩操作后,发现立马减下去了。表和索引占的segment只有几百兆和几十兆。

也可以把 IX 干掉,重建一下,别忘了收集一下统计信息;
------解决方案--------------------
你是哪个版本的库,我找个环境试试。
------解决方案--------------------
引用:
Quote: 引用:

原来导入的表结构initial只是4K现在是几个G了 ,

你原来的库里,就是这么设置的,你可以到原来的库里看看。

对表进行shrink收缩操作后,发现立马减下去了。表和索引占的segment只有几百兆和几十兆。

也可以把 IX 干掉,重建一下,别忘了收集一下统计信息;

我测试了下,如果只导入表结构包括索引的话,initial也是4K,但是一旦导入数据就变成几个G 了。
另外索引太多了,上千个,只有导入啊。没法一条条的重建。

执行下面查到的结果:

select 'alter index '
------解决方案--------------------
owner
------解决方案--------------------
'.'
------解决方案--------------------
index_name
------解决方案--------------------
' rebuild ;' from dba_indexes
where OWNER not in ('SYS', 'SYSTEM', 'DBSNMP','SYSMAN','OUTLN','MDSYS','ORDSYS','EXFSYS','DMSYS',
'WMSYS','CTXSYS','ANONYMOUS','XDB','ORDPLUGINS','OLAPSYS','PUBLIC')





------解决方案--------------------
看着有点奇怪,数据泵一般改变initial extent的值
可能是跨版本引起的,导入的时候加version参数了吗
参数值指定为源库的版本号
------解决方案--------------------
所以,楼主用的并不是expdp/impdp,而是exp/imp咯
数据泵里没有compress参数
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: