900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > impdp oracle 只导入表结构_EXP COMPRESS以及EXP/IMP EXPDP/IMPDP导入表结构注意

impdp oracle 只导入表结构_EXP COMPRESS以及EXP/IMP EXPDP/IMPDP导入表结构注意

时间:2024-05-25 16:19:57

相关推荐

impdp oracle 只导入表结构_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博客 ” ,链接:/7728585/viewspace-1267192/,如需转载,请注明出处,否则将追究法律责任。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。