1. 首页
  2. IT资讯

EXP COMPRESS以及EXP/IMP EXPDP/IMPDP导入表结构注意

关于EXP COMPRESS参数
一直对这个参数有些疑惑。当然此参数一定不是所谓的压缩备份文件的空间,
而它的解释为
COMPRESS   import into one extent
字面意思为把所有的EXTENT压缩到INIT 分区中。但是这个实际上这个只在数据字典管理
的中生效。但是在本地管理表空间中实际initial 也是有用的但是他不会分配到一个EXTENT中,
因为本地管理表空间默认EXTENT管理的方式是AUTO。分区大小是大小是64K,1M,8M..的方式,
但是他一定会分配足够的空间
所以
测试期间我建立了一个大约20M的表,然后DELETE全部记录,COMMIT掉
然后做如下操作:
exp ppzhu/gelc123@bendi  COMPRESS=n tables=test1 file=c:test1n.dmp
exp ppzhu/gelc123@bendi  COMPRESS=y tables=test1 file=c:test1y.dmp

然后进行导入
imp ppzhut1/gelc123@bendi fromuser=ppzhu touser=ppzhut1 file=c:test1y.dmp
发现一共分了20个EXTENT
SQL> select count(*) from dba_extents where segment_name=’TEST1′ AND OWNER=’PPZHUT1′;
 
  COUNT(*)
———-
        20
每个1M
然后查看其建立表的语句如下:
create table PPZHUT1.TEST1
(
  IT INTEGER
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 20M
    minextents 1
    maxextents unlimited
  );

然后删除表导入COMPRESS=n的导出的DMP如下:
可以看到实际COMPRESS=n是实际的占用空间,
SQL> select count(*) from dba_extents where segment_name=’TEST1′ AND OWNER=’PPZHUT1′;
 
  COUNT(*)
———-
         1
 
SQL> select sum(blocks)*8/1024 from dba_extents where segment_name=’TEST1′ AND OWNER=’PPZHUT1′;
 
SUM(BLOCKS)*8/1024
——————
            0.0625
 
查看建表语句
— Create table
create table PPZHUT1.TEST1
(
  IT INTEGER
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
没有问题。
同样的EXPDP也会有这样的问题,IMPDP的时候需要加上参数
TRANSFORM=SEGMENT_ATTRIBUTES:n

这也是为什么导出表结构的时候需要使用COMPRESS=n的原因。
所以总结一下导出表结构的方式:
1、EXP使用COMPRESS=n导出(ROWS=N)
2、EXPDP不使用任何参数,IMPDP使用TRANSFORM=SEGMENT_ATTRIBUTES:n导入(CONTENT=METADATA_ONLY)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7728585/viewspace-1267192/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:深沉的少年,转转请注明出处:http://www.cxybcw.com/183354.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code