详解Oracle 11g R1中数据泵增强

原创
数据库 Oracle 企业动态
本文对Oracle数据库11g R1中数据泵增强做一个简单的概述,包括:压缩、加密参数、可传输性、分区选项、重用转储文件、表重新映射、数据选项、重新映射数据。希望可以给你带来帮助。

【51CTO快译】

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

#p#

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

#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
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

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO

【编辑推荐】

  1. Oracle 11g新特性与应用详解
  2. Oracle 11g 新特性--自适应游标共享
  3. Oracle 11g新特性之模式管理
  4. 解析Oracle 11g闪回数据归档新功能
责任编辑:杨鹏飞 来源: 51CTO.com
相关推荐

2010-01-13 16:08:09

Oracle 11g 数据卫士

2010-04-30 13:35:28

Oracle 11g

2010-01-11 10:08:14

Oracle 11g

2010-01-18 10:15:47

Oracle 11g RMAN

2011-07-19 14:08:09

Oracle 11g 数据库

2011-08-22 14:37:33

2009-05-21 10:20:54

Oracle 11g数据卫士备用数据库

2009-03-12 10:28:32

数据库Oracle11g自我调整

2009-09-02 15:35:57

Oracle 11g

2010-04-07 17:27:38

Oracle 11g

2009-07-08 00:24:00

数据压缩Oracle 11g

2011-08-22 14:19:31

Oracle 11g 示例用户

2011-08-19 09:11:24

Oracle 11g回启动闪回数据库

2009-09-15 09:52:25

Oracle 11g分

2011-08-23 18:04:16

Oracle 10g数据泵

2009-11-19 17:28:43

Oracle数据库11

2009-04-15 09:49:20

2010-04-13 15:56:03

Oracle 11g

2009-08-20 09:42:46

Oracle 11g

2011-04-15 09:11:21

点赞
收藏

51CTO技术栈公众号