溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

impdp的transform參數(shù)去掉表空間和存儲子句 解決導(dǎo)入時報錯或空間不足問題

發(fā)布時間:2020-08-10 17:16:11 來源:ITPUB博客 閱讀:277 作者:wg0411 欄目:關(guān)系型數(shù)據(jù)庫

可以看看官網(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.


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參數(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


向AI問一下細節(jié)

免責(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)容。

AI