本文对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