Oracle 11g开始,在impdp/expdp中提供remap_data参数,实现对导入或导出操作时转换数据.如果生产库数据要导出给测试库使用,并需要转换敏感数据,可以考虑通过remap_data参数去实现.
以下是简单的单表示例:
oracle version:11.2.0.4
[oracle@ct6605 ~]$ ORACLE_SID=ct66
#建测试表
SQL> create table scott.t_expdp as select * from dba_objects;
#建导入导出目录
SQL> create or replace directory home_dump as '/home/oracle';
#建用于转换数据的函数包
#转换的逻辑和复杂度可根据需求确定
SQL> create or replace package scott.pkg_remap
is
#转换number类型
function f_remap_number(p_number number) return number;
#转换varchar类型
function f_remap_varchar(p_varchar varchar2) return varchar2;
end;
/
SQL> create or replace package body scott.pkg_remap
2 is
function f_remap_number(p_number number) return number as
3 4 begin
5 return floor(dbms_random.value(1, 100000));
6