暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

impdp的transform参数去掉表空间和存储子句,解决导入时报错或空间不足问题

原创 鸿惊九天 2022-12-08
2975

IMPDP 使用TRANSFORM选项可以完成去掉表空间和存储子句的目的,这样我们便可以控制导入时按照目标默认的参数。

使用TRANSFORM去掉表空间和存储子句 TRANSFORM=segment_attributes:n
$ impdp sec/sec directory=expdp_dir dumpfile=sec_expdp.dmp sqlfile=sec_expdp.sql TRANSFORM=segment_attributes:n

使用参数TRANSFORM可能存在问题:如 TRANSFORM=segment_attributes:n 参数,导致remap_tablespace参数失效,会导入到用户默认表空间。

impdp的transform 选项决定是否去掉ddl语句的各种存储参数

Purpose

Enables you to alter object creation DDL for specific objects, as well as for all applicable objects being loaded.

Metadata transform to apply to applicable objects. Valid transform keywords: SEGMENT_ATTRIBUTES, STORAGE,OID, and PCTSPACE

Syntax and Description

TRANSFORM = transform_name:value[:object_type]

例如:transform=storage:n:table ,去掉ddl的storage参数,只对table有效,若没有table这个子句的话(transform=storage:n),就对所有对象有效,比如index

sql_file 选项加入后只是模拟导入过程,形成sql脚本,不会真正的导入。通过脚本可查看storage选项是否存在,segment_attributes是否存在。

使用transform可降低导入数据的存储需求,比如若源数据需要30G的表空间,但导出数据后只有300M,再导入的时候不必分配30G,由于transform起作用,把storage去掉了。

这里尤其指出的是在11.2.0.2以上有个新增的参数,SEGMENT_CREATION,如果设置其为n的话,ddl语句就不包含SEGMENT CREATION IMMEDIATE字段。

transform=storage:n

transform=oid:n

transform=segment_attributes:n

TRANSFORM=SEGMENT_CREATION:n

举例:

没指定transform,导入形成的ddl

CREATE TABLE “SH_SMCVDMS_SLK_OWSLK”.“DE_DEMESSAGEIDMAP”

( “DEMESSAGEID” CHAR(40) NOT NULL ENABLE,

“UPDATE_BY” CHAR(10)

) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

STORAGE(INITIAL 2952790016 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 -----先要初始化这么大的空间出来,这个不必要。若空间不足导入会终止

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

TABLESPACE “SH_SMCVDMS_SLK_OWSLK_DATA01” ;

加入了transform=storage:n

CREATE TABLE “SH_SMCVDMS_SLK_OWSLK”.“DE_DEMESSAGEIDMAP”

( “DEMESSAGEID” CHAR(40) NOT NULL ENABLE,

“UPDATE_BY” CHAR(10)

) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

TABLESPACE “SH_SMCVDMS_SLK_OWSLK_DATA01” ; ------------把storage部分去掉了,这样可不必需要那么多的空间,按数据库默认的initial 64k.

加入了transform=segment_attributes:n

CREATE TABLE “SH_SMCVDMS_SLK_OWSLK”.“DE_DEMESSAGEIDMAP”

( “DEMESSAGEID” CHAR(40) NOT NULL ENABLE,

“UPDATE_BY” CHAR(10)

) ; ---------------这个很干净了,create table的时候都是使用数据库的默认存储参数,表空间也使用的是用户默认表空间

—模拟导入,形成sql脚本:

impdp system/1111directory=dmp transform=storage:n REMAP_SCHEMA=“SLKTESTNEW:sh_smcvdms_slk_owslk” remap_tablespace=“SH_DMS_SLK_OWSGM_DATA01:sh_smcvdms_slk_owslk_data01” remap_tablespace=“SH_DMS_SLK_OWSGM_LOB01:SH_SMCVDMS_SLK_OWSLK_LOB01” dumpfile=OWSLK20110630.DMP logfile=owslk20110702_storage_n.log sqlfile=owslk0702_storage_n.sql

----真正导入:

impdp system/1111 directory=dmp transform=storage:n REMAP_SCHEMA=“SLKTESTNEW:sh_smcvdms_slk_owslk” remap_tablespace=“SH_DMS_SLK_OWSGM_DATA01:sh_smcvdms_slk_owslk_data01” remap_tablespace=“SH_DMS_SLK_OWSGM_LOB01:SH_SMCVDMS_SLK_OWSLK_LOB01” dumpfile=OWSLK20110630.DMP logfile=owslk20110702_storage_n.log table_exists_action=replace

end=

impdp sec/sec directory=expdp_dir dumpfile=sec_expdp.dmp sqlfile=sec_expdp.sql transform=segment_attributes:n

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论