Chinaunix首页 | 论坛 | 博客
  • 博客访问: 897235
  • 博文数量: 101
  • 博客积分: 2256
  • 博客等级: 大尉
  • 技术积分: 1481
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-19 17:52
文章存档

2017年(1)

2013年(2)

2012年(25)

2011年(73)

分类: Oracle

2011-04-19 18:43:56

imp导入表结构(不导入表数据)后占用表空间很大的解决方法

声明:本文章只是为了解决单独的问题,至于如果想要了解imp,exp的具体用法,可以去网上查!

1.首先你要导入的表空间至少不能很小,得有一些空间,至少得几十MB吧,呵呵!
2.然后你导出表结构的时候要注意,要加上参数 compress=n,解释如下:

EXPORT/IMPORT一个很重要的应用方面就是整理碎片。因为如果时初次IMPPORT,就会重新CREATE TABLE 再导入数据,所以整张表都是连续存放的。另外缺省情况下EXPORT会在生成DUMP文件是“压缩(COMPRESS)”TABLE,但是这种压缩在很多情况下被误解。事实上,COMPRESS是改变STORAGE参数INITIAL的值。比如:
CREATE TABLE .... STORAGE( INITIAL 10K NEXT 10K..)
现在数据已经扩展到100个EXTENT,如果采用COMPRESS=Y来EXPORT数据,则产生的语句时 STORAGE( INITIAL 1000K NEXT 10K)
我们可以看到NEXT值并没有改变,而INITIAL是所有EXTENT的总和。所以会出现如下情况,表A有4个100M的EXTENT,执行DELETE FROM A,然后再用COMPRESS=Y 导出数据,产生的CREATE TABLE语句将有400M的INITIAL EXTENT。即使这是TABLE中已经没有数据!!这是的DUMP文件即使很小,但是在IMPORT时就会产生一个巨大的TABLE.
另外,也可能会超过DATAFILE的大小。比如,有4个50M的数据文件,其中表A有15个10M的EXTENT,如果采用COMPRESS=Y的方式导出数据,将会有INITIAL=150M,那么在重新导入时,不能分配一个150M的EXTENT,因为单个EXTENT不能跨多个文件。


3.然后就可以快乐的导入了。记得加参数 Ignore=y。
4.如果表中有LOB字段,可以考虑将这个表放在单独的表空间;

阅读(6542) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~