詳解Oracle 11g R1中數(shù)據(jù)泵增強(qiáng)
原創(chuàng)【51CTO快譯】
本文對Oracle數(shù)據(jù)庫11g R1中數(shù)據(jù)泵增強(qiáng)做一個簡單的概述,包括以下內(nèi)容:
◆ 壓縮(COMPRESSION)
◆ 加密參數(shù)
a. 加密和加密密碼(ENCRYPTION and ENCRYPTION_PASSWORD)
b. 加密算法(ENCRYPTION_ALGORITHM)
c. 加密模式(ENCRYPTION_MODE)
◆ 可傳輸性(TRANSPORTABLE)
◆ 分區(qū)選項(PARTITION_OPTIONS)
◆ 重用轉(zhuǎn)儲文件(REUSE_DUMPFILES)
◆ 表重新映射(REMAP_TABLE)
◆ 數(shù)據(jù)選項(DATA_OPTIONS)
a. 跳過約束錯誤(SKIP_CONSTRAINT_ERRORS)
b. XML CLOB
◆ 重新映射數(shù)據(jù)(REMAP_DATA)
◆ 其它增強(qiáng)
壓縮
COMPRESSION參數(shù)允許你確定在導(dǎo)出時對什么進(jìn)行壓縮,語法如下:
COMPRESSION={ALL | DATA_ONLY | METADATA_ONLY | NONE} |
可用的選項有:
◆ ALL 元數(shù)據(jù)和數(shù)據(jù)都被壓縮
◆ DATA_ONLY 只壓縮數(shù)據(jù)
◆ METADATA_ONLY 只壓縮元數(shù)據(jù)
◆ NONE 不壓縮
下面是一個使用COMPRESSION參數(shù)的示例:
expdp test/test schemas=TEST directory=TEST_DIR dumpfile=TEST.dmp |
如果要使用這些選項,初始化參數(shù)COMPATIBLE應(yīng)該設(shè)置為11.0.0或更高,但METADATA_ONLY選項可以用于10.2。
加密參數(shù)
數(shù)據(jù)泵加密是企業(yè)版的特性,因此下面描述的內(nèi)容都只與企業(yè)版有關(guān),此外,初始化參數(shù)COMPATIBLE應(yīng)該設(shè)置為11.0.0或更高。
1. ENCRYPTION 和 ENCRYPTION_PASSWORD
加密的使用是由ENCRYPTION 和 ENCRYPTION_PASSWORD參數(shù)控制的,ENCRYPTION參數(shù)的語法如下:
ENCRYPTION = {ALL | DATA_ONLY | ENCRYPTED_COLUMNS_ONLY | METADATA_ONLY | NONE} |
可用的選項有:
◆ ALL 元數(shù)據(jù)和數(shù)據(jù)都加密
◆ DATA_ONLY 只加密數(shù)據(jù)
◆ ENCRYPTED_COLUMNS_ONLY 只加密寫入到轉(zhuǎn)儲文件中的列
◆ METADATA_ONLY 只加密元數(shù)據(jù)
◆ NONE 不加密
如果既沒有設(shè)置ENCRYPTION參數(shù)也沒有設(shè)置ENCRYPTION_PASSWORD參數(shù),可能需要的加密級別是NONE,如果只設(shè)置了ENCRYPTION_PASSWORD參數(shù),可能需要的參數(shù)應(yīng)該是ALL,下面是一個使用這些參數(shù)的示例:
expdp test/test schemas=TEST directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log |
2. ENCRYPTION_ALGORITHM
ENCRYPTION_ALGORITHM參數(shù)指定了在導(dǎo)出時使用的加密算法,默認(rèn)使用的是“AES128”,語法如下:
ENCRYPTION_ALGORITHM = { AES128 | AES192 | AES256 } |
ENCRYPTION_ALGORITHM參數(shù)必須和ENCRYPTION 或 ENCRYPTION_PASSWORD參數(shù)聯(lián)合使用,如:
expdp test/test schemas=TEST directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log |
3. ENCRYPTION_MODE
ENCRYPTION_MODE參數(shù)指出了在導(dǎo)出或?qū)脒^程中使用的安全類型,語法如下:
ENCRYPTION_MODE = { DUAL | PASSWORD | TRANSPARENT } |
有效值和它們的默認(rèn)設(shè)置解釋如下:
◆ DUAL 這個模式下導(dǎo)出的轉(zhuǎn)儲文件可以使用Oracle加密錢夾導(dǎo)入,或者在導(dǎo)出時使用了ENCRYPTION_PASSWORD參數(shù),如果設(shè)置了ENCRYPTION_PASSWORD參數(shù)并且有一個打開的錢夾,這是默認(rèn)設(shè)置。
◆ PASSWORD 這個模式導(dǎo)出的文件只能在導(dǎo)出時使用了ENCRYPTION_PASSWORD參數(shù)才能導(dǎo)入。如果設(shè)置了ENCRYPTION_PASSWORD參數(shù)但沒有一個打開的錢夾,這是默認(rèn)設(shè)置。
◆ TRANSPARENT 這個模式使用Oracle加密錢夾創(chuàng)建的加密轉(zhuǎn)儲文件,如果在這個模式下指定了ENCRYPTION_PASSWORD參數(shù)并產(chǎn)生了錯誤,如果只設(shè)置了ENCRYPTION參數(shù)這是默認(rèn)設(shè)置。
關(guān)于錢夾的設(shè)置請參考http://www.oracle-base.com/articles/11g/TablespaceEncryption_11gR1.php#wallet_creation。
ENCRYPTION_MODE參數(shù)需要指定ENCRYPTION 或 ENCRYPTION_PASSWORD參數(shù)。
expdp test/test schemas=TEST directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log |
#p#
TRANSPORTABLE
TRANSPORTABLE參數(shù)和TRANSPORT_TABLESPACES參數(shù)類似,但TRANSPORT_TABLESPACES只能導(dǎo)出/導(dǎo)入表的元數(shù)據(jù),需要你手動傳輸相關(guān)表空間數(shù)據(jù)文件,導(dǎo)出操作列出了必須被傳輸?shù)谋砜臻g,語法如下:
TRANSPORTABLE = {ALWAYS | NEVER} |
值A(chǔ)LWAYS開啟了可傳輸模式,默認(rèn)值是NEVER,表示是一個正常的導(dǎo)入/導(dǎo)出。
使用TRANSPORTABLE參數(shù)導(dǎo)出時有下面的約束:
◆ 這個參數(shù)只在導(dǎo)出表一級時可用。
◆ 執(zhí)行這個操作的用戶必須有EXP_FULL_DATABASE權(quán)限。
◆ 表空間包括的源對象必須是只讀的。
◆ COMPATIBLE初始化參數(shù)必須設(shè)置為11.0.0或更高。
◆ 用戶執(zhí)行導(dǎo)出的默認(rèn)表空間和要傳輸?shù)谋砜臻g不能是同一個。
在導(dǎo)入時也有一些限制:
◆ 在導(dǎo)入過程中必須指定NETWORK_LINK參數(shù),這個參數(shù)校驗數(shù)據(jù)庫連接到源方案的有效性。
◆ 執(zhí)行導(dǎo)入操作的方案必須有EXP_FULL_DATABASE 和 IMP_FULL_DATABASE權(quán)限。
◆ TRANSPORT_DATAFILES參數(shù)用于識別容納表數(shù)據(jù)的數(shù)據(jù)文件。
下面是導(dǎo)入/導(dǎo)出操作的示例:
expdp system tables=TEST1.TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log impdp system tables=TEST1.TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=impdpTEST.log |
PARTITION_OPTIONS
PARTITION_OPTIONS參數(shù)指定在導(dǎo)出和導(dǎo)入操作過程中分區(qū)表該如何處理,語法如下:
PARTITION_OPTIONS={none | departition | merge} |
可用的值包括:
◆ NONE 象在系統(tǒng)上的分區(qū)表一樣創(chuàng)建。
◆ DEPARTITION 每個分區(qū)表和子分區(qū)表作為一個獨立的表創(chuàng)建,名字使用表和分區(qū)(子分區(qū))名字的組合。
◆ MERGE 將所有分區(qū)合并到一個表。
如果導(dǎo)出時使用了TRANSPORTABLE參數(shù),這里就不能使用NONE和MERGE。
expdp test/test directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log tables=test.tab1 |
REUSE_DUMPFILES
如果在導(dǎo)出時轉(zhuǎn)儲文件已經(jīng)存在,使用REUSE_DUMPFILES參數(shù)可以預(yù)防錯誤發(fā)生。
REUSE_DUMPFILES={Y | N} |
設(shè)置為“Y”時,現(xiàn)在的轉(zhuǎn)儲文件將被覆蓋,當(dāng)使用默認(rèn)值“N”時,如果轉(zhuǎn)儲文件已經(jīng)存在就會產(chǎn)生一個錯誤。
expdp test/test schemas=TEST directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log |
#p#
REMAP_TABLE
這個參數(shù)允許在導(dǎo)入過程中使用TRANSPORTABLE方法時對表進(jìn)行重命名,在使用PARTITION_OPTIONS導(dǎo)入時也可以使用這個參數(shù)修改基礎(chǔ)表名,語法如下:
REMAP_TABLE=[schema.]old_tablename[.partition]:new_tablename |
下面是一個示例:
impdp test/test tables=TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=impdpTEST.log |
現(xiàn)有表沒有被重命名,只創(chuàng)建了表。
DATA_OPTIONS
1. SKIP_CONSTRAINT_ERRORS
在導(dǎo)入過程中使用外部表訪問方法時,設(shè)置DATA_OPTIONS參數(shù)的值為SKIP_CONSTRAINT_ERRORS允許發(fā)生非延遲約束錯誤時繼續(xù)載入,如果沒有這個選項,默認(rèn)將回滾整個操作,語法如下:
DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS |
示例如下:
impdp test/test tables=TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=impdpTEST.log |
這個參數(shù)對延遲約束沒有影響,但一旦檢測到還是引起回滾,如果對象有唯一性索引或約束,不能使用APPEND提示,它可能會對性能產(chǎn)生負(fù)面影響。
2. XML_CLOBS
在導(dǎo)出過程中,如果XMLTYPE列以CLOB格式存儲,它們會被自動導(dǎo)出為非壓縮的CLOB,如果是以對象--關(guān)系,二進(jìn)制或CLOB格式組合存儲,默認(rèn)將以壓縮格式導(dǎo)出,設(shè)置DATA_OPTIONS參數(shù)的值為XML_CLOBS指定所有XMLTYPE列都以非壓縮CLOB格式導(dǎo)出,語法如下:
DATA_OPTIONS=XML_CLOBS |
例子:
expdp test/test tables=TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log |
導(dǎo)入/導(dǎo)出必須使用相同的XML方案,作業(yè)版本必須設(shè)置為11.0.0或更高。
REMAP_DATA
在導(dǎo)入/導(dǎo)出操作期間,REMAP_DATA參數(shù)允許你關(guān)聯(lián)一個重新映射封裝函數(shù),接受這個列的值作為其參數(shù),然后返回數(shù)據(jù)修改后的版本,語法如下:
REMAP_DATA=[schema.]tablename.column_name:[schema.]pkg.function |
這個功能在導(dǎo)入/導(dǎo)出操作時可以用來屏蔽敏感數(shù)據(jù),將原始數(shù)據(jù)替換成隨機(jī)數(shù)據(jù),映射是基于一列一列的,如:
expdp test/test tables=TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log |
重新映射函數(shù)必須返回和源列相同的數(shù)據(jù)類型,并且不能執(zhí)行提交和回滾操作。
其它增強(qiáng)
如果由于某個錯誤,工作進(jìn)程停止了,現(xiàn)在可以一次性自動重啟,如果進(jìn)程第二次停止了,則必須手動重啟。
原文:Data Pump Enhancements in Oracle Database 11g Release 1 作者:Tim Hall
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO】
【編輯推薦】