4.对导出数据进行加密
可使用后面的一个或多个与加密有关的参数指定数据写到转储集之前是否加密:ENCRYPTION、ENCRYPTION_ALGORITHM、ENCRYPTION_MODE和ENCRYPTION_PASSWORD。
•ENCRYPTION
ENCRYPTION 参数指定在将数据写到转储文件之前是否对其加密。可给ENCRYPTION参数指定以下值。
★ ALL:加密所有数据和元数据。
★ DATA_ONLY:只加密写到转储文件集的数据。
★ METADATA_ONLY:只对元数据加密。
★ NONE:指定不对数据加密。
★ ENCRYPTED_COLUMNS_ONLY:指定只对使用TDE特性的加密列进行加密。
注解 可通过指定ENCRYPTION或ENCRYPTION_PASSWORD参数,或两者都指定,实施加密。如果只指定ENCRYPTION_PASSWORD参数,则ENCRYPTION参数默认为ALL。
如果不指定ENCRYPT1ON或ENCRYPTION_PASSWORD参数,则ENCRYPTION参数默认为NULL。如果省略ENCRYPTION参数但指定ENCRYPTION_PASSWORD参数,则ENCRYPTION参数默认为ALL。
下面的例子说明如何只指定加密数据,其他不加密:
$ expdp hr DIRECTORY=dpump_dirl DUMPFILE=hr.dmp JOB_NAME=test1 ENCRYPTION=data_only ENCRYPTION_PASSWORD=foobar
•ENCRYPTION_ALGORITHM
ENCRYPTION_ALGORITHM参数指定数据加密中使用的加密算法。默认值为AES128,你也可以指定AE192和AES256。下面兩例子说明如何指定此参数:
$ expdp hr DIRECTORY=dpump_dirl DUMPFILE=hr.dmp ENCRYPTION_PASSWORD=foobar ENCRYPTION_ALGORITHM=AES128
•ENCRYPTION_MODE
ENCRYPTION_MODE 参数指定在导出中选择加密数据时,数据库执行的安全类型。此参数可取3个值:DUAL、PASSWORD希TRANSPARENT。此参数的默认值取决于是否指定其他与加密有关的参数,如下所示:
★ 如果只指定ENCRYPTION参数,则默认方式为TRANSPARENT;
★ 如果指定ENCRYPTION_PASSWORD参数,且Oracle加密钱夹打开,则就认值为DUAL;
★ 如果指定ENCRYPTION_PASSWORD参数,且OracIe加密钱夹关闭,则默认值为PASSWORD。
DUAL方式允许创建一个转储集,以后可以使用Oracle加密钱夹或用ENCRYPTION_PASSWORD参数指定的密码导入。如果希望将数据导入到未使用Oracle加密钱夹的站点,可使用DUAL.
PASSWORD方式允许在将转储文件集传送到远程数据库时保护它,但要求在导出中使用ENCRYPTION_PASSWORD参数提供密码。数据库将要求在导入该转储文件集时提供相同的密码。
TRANSPARENT方式允许不用ENCRYPTION_PASSWORD参数创建一个转储文件集。在导入与导出转储文件集相同的数据库时,使用此参数。
下面的例子说明如何对ENCRYPTION_MODE参数指定dual值。
$ expdp hr DIRECTORY=dpump_dirl DUMPFILE=hr.dmp ENCRYPTION=all ENCRYPTION_PASSWORD=encrypt_pwd ENCRYPTION_ALGORITHM=AES256 ENCRYPTION_MOOE=dual
•ENCRYPTION_PASSWORD
在导出转储文律中,可使用ENCRYPTION_PASSWORD参数加密表数据或元数据,以防止未授权用户从转储文件集读取数据。注意,如果指定ENCRYPTION_PASSWORD参数而省略ENCRYPTION参数,则数据库加密所有写到导出转储集的数据。
注解 如果导出具有加密列的表而不指定ENCRYPTION_PASSWORD参数,则导出时数据库将作为明文(clear text)存储加密表列,并且发布警告.
在导出表时,如果愿意可以提供一个密码,即使该表具有加密列也是如此。所提供的密码不要求与加密表列时的密码相同。如果设置ENCRYPTION_MODE参数为PASSWORD或DUAL,则数据库要求也指定ENCRYPTION_PASSWORD参数。
下面的例子说明如何指定ENCRYPTION_PASSWORD参数的值为testpass:
$expdp hr TABLES=employee_s_encrypt DIRECTORY=dpump_dir DUMPFILE=hr.dmp ENCRYPTION=ENCRYPTED_COLUMNS_ONLY ENCRYPTION_PASSWORD=testdass
导出的转储文件将加密employees表的加密列。
5.估算参数
使用两个有趣的参数可以估算导出作业中将消耗多少物理空间:ESTIMATE和ESTIMATE_ONLY。
•ESTIMATE
ESTIMATE参数将指岀新的导出作业将消耗多少空间。空间总是以字节为单位进行估算。可以指定数据库使用正在被导出的对象中的数据库块(BLOCK选项)的数量,或者表的优化程序统计数据(STATISTICS选项),进行空间估算。以下是ESTIMATE参数的语法说明:
ESTIMATE={BLOCKS | STATISTICS}
默认时,Oracle根据块估算导出作业的空间需求。它简单地提取数据库块大小,并乘以所有对象总共需要的块的数量。以下显示了将在日志文件(以及屏幕)中看到的信息:
Estimate in progress using BLOCKS method ...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 654 KB
根据块的空间估算是默认行为,不需要在导出过程中指定ESTIMATE参数。但是,如果最近刚分析了所有表,则可以请求数据泵导出实用程序使用数据库已经为每个表计算过的统计数据来估算空间需求。为了指定数据库使用数据库统计数据(而不是使用默认的BLOCK方法),需要按以下方法指定ESTIMATE参数:
ESTIMATE=STATISTICS
以下是在使用ESTIMATE=STATISTICS参数时将在日志文件中看到的信息:
Estimate in progress using STATISTICS method ...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
.estimated "SYSTEM"."HELP" 35.32 KB
Total estimation using STATISTICS method: 65.72 KB
•ESTIMATE_ONLY
虽然ESTIMATE参数只在导岀作业中生效,但是可以使用ESTIMATE_ONLY参数而不启动导出作业。
使用ESTIMATE_ONLY参数
$ expdp system/sarmyyl estimate_only=y
尽管日志表明导出作业"successfully completed (成功完成)",但是上述作业实际所做的只是估算了导出作业将需要的空间。




