您好,登錄后才能下訂單哦!
可以看看官網(wǎng),官網(wǎng)地址:
http://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_import.htm#SUTIL300
transform 可用在這樣的場景中:
要將SLKTESTNEW模式下的表導(dǎo)入到另一個庫下的SH_SMCVDMS_SLK_OWSLK模式下。
該模式下對象實際所占的大小:
SQL> select sum(bytes)/1024/1024 from dba_segments where owner=upper('SLKTESTNEW');
SUM(BYTES)/1024/1024
--------------------
11747.25 -----------很大,會計算所有hwm下的block
導(dǎo)出語句:
expdp system/1111sys directory=dmpdata SCHEMAS=SLKTESTNEW dumpfile=owslk20110630.dmp logfile=owslk20110630.log
導(dǎo)出數(shù)據(jù)后的dmp大小:
$ du -m OWSLK20110630.DMP
80.63 OWSLK20110630.DMP ----很小,因為expdp只把有效block導(dǎo)出
若不加transform,且導(dǎo)入的表空間小于前面計算的11747.25,中間報錯:
ORA-01659: unable to allocate MINEXTENTS beyond 14 in tablespace SH_SMCVDMS_SLK_OWSLK_DATA01。
也不必為了80M的數(shù)據(jù)再加入11G的空間。那就用impdp的transform 選項 實現(xiàn)導(dǎo)入。
impdp的transform 選項決定是否去掉ddl語句的各種存儲參數(shù)
Purpose
Enables you to alter object creation DDL for specific objects, as well as for all applicable objects being loaded.
Syntax and Description
TRANSFORM = transform_name:value[:object_type]
例如:transform=storage:n:table ,去掉ddl的storage參數(shù),只對table有效,若沒有table這個子句的話,就對所有對象有效,比如index
sql_file 選項加入后只是模擬導(dǎo)入過程,形成sql腳本,不會真正的導(dǎo)入。通過腳本可查看storage選項是否存在,segment_attributes是否存在。
使用transform可降低導(dǎo)入數(shù)據(jù)的存儲需求,比如若源數(shù)據(jù)需要30G的表空間,但導(dǎo)出數(shù)據(jù)后只有300M,再導(dǎo)入的時候不必分配30G,由于transform起作用,把storage去掉了。
這里尤其指出的是在11.2.0.2以上有個新增的參數(shù),SEGMENT_CREATION,如果設(shè)置其為n的話,ddl語句就不包含SEGMENT CREATION IMMEDIATE字段。
transform=storage:n
transform=oid:n
transform=segment_attributes:n
TRANSFORM=SEGMENT_CREATION:n
舉例:
沒指定transform,導(dǎo)入形成的dll
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 -----先要初始化這么大的空間出來,這個不必要。若空間不足導(dǎo)入會終止
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部分去掉了,這樣可不必需要那么多的空間,按數(shù)據(jù)庫默認的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的時候都是使用數(shù)據(jù)庫的默認存儲參數(shù),表空間也使用的是用戶默認表空間
---模擬導(dǎo)入,形成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
----真正導(dǎo)入:
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
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。