程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 詳解Oracle 11g R1中數據泵增強

詳解Oracle 11g R1中數據泵增強

編輯:Oracle數據庫基礎

本文對Oracle數據庫11g R1中數據泵增強做一個簡單的概述,包括以下內容:

◆ 壓縮(COMPRESSION)

◆ 加密參數

a. 加密和加密密碼(ENCRYPTION and ENCRYPTION_PASSWord)

b. 加密算法(ENCRYPTION_ALGORITHM)

c. 加密模式(ENCRYPTION_MODE)

◆ 可傳輸性(TRANSPORTABLE)

◆ 分區選項(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 
logfile=expdpTEST.log compression=all

如果要使用這些選項,初始化參數COMPATIBLE應該設置為11.0.0或更高,但METADATA_ONLY選項可以用於10.2。

加密參數

數據泵加密是企業版的特性,因此下面描述的內容都只與企業版有關,此外,初始化參數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
encryption=all encryption_password=passWord

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
encryption=all encryption_password=passWord encryption_algorithm=AES256

3. ENCRYPTION_MODE

ENCRYPTION_MODE參數指出了在導出或導入過程中使用的安全類型,語法如下:

ENCRYPTION_MODE = { DUAL | PASSWord | TRANSPARENT }

有效值和它們的默認設置解釋如下:

◆ DUAL 這個模式下導出的轉儲文件可以使用Oracle加密錢夾導入,或者在導出時使用了ENCRYPTION_PASSWORD參數,如果設置了ENCRYPTION_PASSWord參數並且有一個打開的錢夾,這是默認設置。

◆ PASSWORD 這個模式導出的文件只能在導出時使用了ENCRYPTION_PASSWORD參數才能導入。如果設置了ENCRYPTION_PASSWord參數但沒有一個打開的錢夾,這是默認設置。

◆ TRANSPARENT 這個模式使用Oracle加密錢夾創建的加密轉儲文件,如果在這個模式下指定了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
encryption=all encryption_password=password encryption_mode=passWord

TRANSPORTABLE

TRANSPORTABLE參數和TRANSPORT_TABLESPACES參數類似,但TRANSPORT_TABLESPACES只能導出/導入表的元數據,需要你手動傳輸相關表空間數據文件,導出操作列出了必須被傳輸的表空間,語法如下:

TRANSPORTABLE = {ALWAYS | NEVER}

值ALWAYS開啟了可傳輸模式,默認值是NEVER,表示是一個正常的導入/導出。

使用TRANSPORTABLE參數導出時有下面的約束:

◆ 這個參數只在導出表一級時可用。

◆ 執行這個操作的用戶必須有EXP_FULL_DATABASE權限。

◆ 表空間包括的源對象必須是只讀的。

◆ COMPATIBLE初始化參數必須設置為11.0.0或更高。

◆ 用戶執行導出的默認表空間和要傳輸的表空間不能是同一個。

在導入時也有一些限制:

◆ 在導入過程中必須指定NETWORK_LINK參數,這個參數校驗數據庫連接到源方案的有效性。

◆ 執行導入操作的方案必須有EXP_FULL_DATABASE 和 IMP_FULL_DATABASE權限。

◆ TRANSPORT_DATAFILES參數用於識別容納表數據的數據文件。

下面是導入/導出操作的示例:

expdp system tables=TEST1.TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log
transportable=ALWAYS
impdp system tables=TEST1.TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=impdpTEST.log 
transportable=ALWAYS network_link=DB11G transport_datafiles='/u01/oradata/DB11G/test01.dbf'

PARTITION_OPTIONS

PARTITION_OPTIONS參數指定在導出和導入操作過程中分區表該如何處理,語法如下:

PARTITION_OPTIONS={none | departition | merge}

可用的值包括:

◆ NONE 象在系統上的分區表一樣創建。

◆ DEPARTITION 每個分區表和子分區表作為一個獨立的表創建,名字使用表和分區(子分區)名字的組合。

◆ MERGE 將所有分區合並到一個表。

如果導出時使用了TRANSPORTABLE參數,這裡就不能使用NONE和MERGE。

expdp test/test directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log tables=test.tab1
partition_options=merge

REUSE_DUMPFILES

如果在導出時轉儲文件已經存在,使用REUSE_DUMPFILES參數可以預防錯誤發生。

REUSE_DUMPFILES={Y | N}

設置為“Y”時,現在的轉儲文件將被覆蓋,當使用默認值“N”時,如果轉儲文件已經存在就會產生一個錯誤。

expdp test/test schemas=TEST directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log
reuse_dumpfiles=y

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
remap_table=TEST.TAB1:TAB2

現有表沒有被重命名,只創建了表。

DATA_OPTIONS

1. SKIP_CONSTRAINT_ERRORS

在導入過程中使用外部表訪問方法時,設置DATA_OPTIONS參數的值為SKIP_CONSTRAINT_ERRORS允許發生非延遲約束錯誤時繼續載入,如果沒有這個選項,默認將回滾整個操作,語法如下:

DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS

示例如下:

impdp test/test tables=TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=impdpTEST.log
data_options=SKIP_CONSTRAINT_ERRORS

這個參數對延遲約束沒有影響,但一旦檢測到還是引起回滾,如果對象有唯一性索引或約束,不能使用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
version=11.1 data_options=XML_CLOBS

導入/導出必須使用相同的XML方案,作業版本必須設置為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
remap_data:tab1.col1:remap_pkg.remap_col1 remap_data:tab1.col2:remap_pkg.remap_col2

重新映射函數必須返回和源列相同的數據類型,並且不能執行提交和回滾操作。

其它增強

如果由於某個錯誤,工作進程停止了,現在可以一次性自動重啟,如果進程第二次停止了,則必須手動重啟。

原文:Data Pump Enhancements in Oracle Database 11g Release 1         作者:Tim Hall

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved