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

简介: 关于EXP COMPRESS参数 一直对这个参数有些疑惑。当然此参数一定不是所谓的压缩备份文件的空间, 而它的解释为 COMPRESS   import into one extent 字面意思为把所有的EXTENT压缩到INIT 分区中。
关于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)
相关文章
|
Oracle 关系型数据库 OLAP
Oracle 11.2.0.4数据泵expdp导出报DBMS_AW_EXP等信息
Oracle 11.2.0.4数据泵expdp导出报DBMS_AW_EXP等信息
352 0
|
Oracle 关系型数据库
ORACLE exp/imp导入报错IMP-00009&IMP-00028&IMP-00015
    2017年8月14日,一实施同事使用imp导入exp导出的dmp文件时,遇到报错IMP-00009&IMP,具体报错如图所示: 出现报错的原因可能是dmp文件本身不完整,如果仍要导入数据,可以对imp命令加上commit=yes进行控制,可行的imp导入命令...
2828 0
|
Oracle 关系型数据库 数据库
oracle数据库impdp导入dmp文件功能演示,imp导入IMP-00038: Could not convert to environment character sets handle问题解决
oracle数据库impdp导入dmp文件功能演示,imp导入IMP-00038: Could not convert to environment character sets handle问题解决
914 0
|
存储 Oracle 关系型数据库
oracle快速创建用户、imp/exp导入导出dmp文件
oracle快速创建用户、imp/exp导入导出dmp文件
549 0
|
关系型数据库 数据库 Oracle
|
关系型数据库 Oracle
|
SQL Oracle 关系型数据库