当前位置:  数据库>oracle

Oracle通过expdp的remap_data实现简单的数据脱敏

    来源: 互联网  发布时间:2017-06-22

    本文导语: Oracle 11g开始,在impdp/expdp中提供remap_data参数,实现对导入或导出操作时转换数据.如果生产库数据要导出给测试库使用,并需要转换敏感数据,可以考虑通过remap_data参数去实现. 以下是简单的单表示例:oracle version:11.2.0.4 [oracle@ct6605 ~]$ O...

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  end;
function f_remap_varchar(p_varchar varchar2) return varchar2 as
  7    8  begin
  9    return dbms_random.string('A',10);
 10  end;
 11  end;
 12  /

SQL> exit

#使用expdp时remap_data参数导出时转换数据
#remap_data格式是要转换的一个字段对应一个转换函数
#reuse_dumpfiles也是11g后的参数,用以确定是否覆盖同名导出文件
[oracle@ct6605 ~]$ expdp system dumpfile=home_dump:remap_t_expdp.dmp tables=scott.t_expdp reuse_dumpfiles=y remap_data=scott.t_expdp.object_id:scott.pkg_remap.f_remap_number,scott.t_expdp.object_name:scott.pkg_remap.f_remap_varchar

Export: Release 11.2.0.4.0 - Production on Fri Mar 25 11:02:51 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_TABLE_01":  system/******** dumpfile=home_dump:remap_t_expdp.dmp tables=scott.t_expdp reuse_dumpfiles=y remap_data=scott.t_expdp.object_id:scott.pkg_remap.f_remap_number,scott.t_expdp.object_name:scott.pkg_remap.f_remap_varchar
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 10 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "SCOTT"."T_EXPDP"                          7.257 MB  86526 rows
Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is:
  /home/oracle/remap_t_expdp.dmp
Job "SYSTEM"."SYS_EXPORT_TABLE_01" successfully completed at Fri Mar 25 11:03:08 2016 elapsed 0 00:00:13

#使用impdp导出转换后的表,这里由于测试,所以导入到同库同用户下
#remap_table也是11g后的参数,用以重映射表
[oracle@ct6605 ~]$ impdp system dumpfile=home_dump:remap_t_expdp.dmp remap_table=scott.t_expdp:t_impdp

Import: Release 11.2.0.4.0 - Production on Fri Mar 25 11:09:20 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Password: UDI-00001: user requested cancel of current operation

[oracle@ct6605 ~]$ impdp system dumpfile=home_dump:remap_t_expdp.dmp remap_table=scott.t_expdp:t_impdp

Import: Release 11.2.0.4.0 - Production on Fri Mar 25 11:11:23 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01":  system/******** dumpfile=home_dump:remap_t_expdp.dmp remap_table=scott.t_expdp:t_impdp
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."T_IMPDP"                          7.257 MB  86526 rows
Job "SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at Fri Mar 25 11:11:28 2016 elapsed 0 00:00:02


[oracle@ct6605 ~]$ sqlplus / as sysdba
#查看导入的数据是否经过转换
SQL> select object_name,object_id from scott.t_impdp where rownum


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪位大哥奉献一段调试通过的oracle中存取图片的例子oracle8.1.7,resin-2.1.6
  • 怎么直接通过JDBC连接oracle?
  • windows通过TCP/IP怎么连接到solaris上的oracle?
  • 急。。。在servlet如何连接到oracle(不通过odbc)
  • linux下通过对文件读取方式查询oracle的版本信息
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • 如何在UNIX上通过ODBC操纵Oracle等DBMS???
  • Window客户端通过ADO是否能够连接和操作Unix平台下的Oracle数据库?
  • 可否直接通过JDBC 连上Oracle(我并没有装oracle)
  • 通过win2000在linux上安装oracle,需要一个什么工具?在哪有下?
  • windows下通过ie访问不到linux环境下的oracle em
  • Linux/UNIX下,C++程序通过那些步骤访问Oracle或者Sybase SQL数据库?
  • 通过Oracle发送Email的实现方法
  • unix通过crontab 定时启动oracle应用程序??????????
  • 通过进程id号知道一个Oracle会话所占用的内存
  • oracle通过行范围查询取4至10行
  • apache通过php的oci函数读取Oracle(字符集ZHS16GBK)时,显示乱码,如何解决?
  • 通过一晚上.在2000上装了REDHAT9.再装ORACLE9I
  • 我准备装linux 7.3,大家能给点意见吗,我1GB的内存,那么交换区设多大? oracle9i能在7.3上通过吗?
  • 通过libsqlora8-2.2.10--c语言程序连接oracle数据库,需要连接,查询,修改等,急!!!
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3