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