问题描述
嗨,汤姆
我有一个数据屏蔽 (remp_data) 的问题。
当我使用dbms_datapump从源数据库导入表时,似乎必须在导入数据库中存在用于屏蔽数据的软件包。
这似乎违背了我所读到的关于数据掩蔽的所有内容,其中掩蔽发生在源数据库上,因此敏感数据不会离开源数据库。
简短的例子:
DB1 (源数据库,包含表SCOTT.EMP)
-----------------------------------------
连接系统/管理器1 @ db1
创建或替换软件包系统。pck
是
函数虚拟 (varchar2中的val) 返回varchar2;
结束pck;
/
创建或替换封装体系统。pck
是
函数虚拟 (varchar2中的val) 返回varchar2
是
开始
返回 'X';
结束假人;
结束pck;
/
Th是 package must be used for scrambling the data.
DB2 (导入数据库)
-----------------------------------------
连接系统/管理器1 @ db2
创建数据库链接db1连接到由manager1使用 'db1' 标识的系统;
声明
h1号;
l_status Varchar2(2000);
开始
h1 := dbms_datapump.open
(操作 => '导入'
,job_mode => '模式'
,远程链接 => 'db1'
,job_name => 'remap_data_test'
,版本 => '兼容'
);
dbms_datapump.add_file
(手柄 => h1
,文件名 => 'REMAP_DATA_TEST.log'
,目录 => '数据 _ 泵 _ 目录'
,文件类型 => DBMS_DATAPUMP.ku $ _ 文件 _ 类型 _ 日志 _ 文件
);
dbms_datapump.metadata_filter
(手柄 => h1
,名称 => 'schema_expr'
,值 => q' | = 'SCOTT' |'
);
dbms_datapump.data_remap
(手柄 => h1
,名称 => '列 _ 函数'
,table_name => '清空'
,column => 'ENAME'
,函数 => 'SYSTEM.PCK.DUMMY'
,schema => 'SCOTT'
);
dbms_datapump.start_job (h1,cluster_ok => 0);
--
--
dbms_datapump.wait_for_job
(手柄 => h1
,job_state => l_status);
--
dbms_output.put_line ( 'Fin是hed with status = '||l_status );
结束;
/
ORA-39001: 参数值无效
ORA-06512: 在 “SYS.DBMS_SYS_ERROR”,第79行
ORA-06512: 在 “SYS.DBMS_DATAPUMP”,第3507行
ORA-06512: 在 “SYS.DBMS_DATAPUMP”,第4309行
ORA-06512: 在第23行
但是,如果我在DB2上创建SYSTEM.PCK包,则表将从DB1传输到DB2,并且EMP中的列ENAME仅包含值 “X”。
Th是 是 a big 是sue, as we cannot have the sensitive data leave over production database "DB1".
Can You help, have I m是sed anything ?
Br,
金
我有一个数据屏蔽 (remp_data) 的问题。
当我使用dbms_datapump从源数据库导入表时,似乎必须在导入数据库中存在用于屏蔽数据的软件包。
这似乎违背了我所读到的关于数据掩蔽的所有内容,其中掩蔽发生在源数据库上,因此敏感数据不会离开源数据库。
简短的例子:
DB1 (源数据库,包含表SCOTT.EMP)
-----------------------------------------
连接系统/管理器1 @ db1
创建或替换软件包系统。pck
是
函数虚拟 (varchar2中的val) 返回varchar2;
结束pck;
/
创建或替换封装体系统。pck
是
函数虚拟 (varchar2中的val) 返回varchar2
是
开始
返回 'X';
结束假人;
结束pck;
/
Th是 package must be used for scrambling the data.
DB2 (导入数据库)
-----------------------------------------
连接系统/管理器1 @ db2
创建数据库链接db1连接到由manager1使用 'db1' 标识的系统;
声明
h1号;
l_status Varchar2(2000);
开始
h1 := dbms_datapump.open
(操作 => '导入'
,job_mode => '模式'
,远程链接 => 'db1'
,job_name => 'remap_data_test'
,版本 => '兼容'
);
dbms_datapump.add_file
(手柄 => h1
,文件名 => 'REMAP_DATA_TEST.log'
,目录 => '数据 _ 泵 _ 目录'
,文件类型 => DBMS_DATAPUMP.ku $ _ 文件 _ 类型 _ 日志 _ 文件
);
dbms_datapump.metadata_filter
(手柄 => h1
,名称 => 'schema_expr'
,值 => q' | = 'SCOTT' |'
);
dbms_datapump.data_remap
(手柄 => h1
,名称 => '列 _ 函数'
,table_name => '清空'
,column => 'ENAME'
,函数 => 'SYSTEM.PCK.DUMMY'
,schema => 'SCOTT'
);
dbms_datapump.start_job (h1,cluster_ok => 0);
--
--
dbms_datapump.wait_for_job
(手柄 => h1
,job_state => l_status);
--
dbms_output.put_line ( 'Fin是hed with status = '||l_status );
结束;
/
ORA-39001: 参数值无效
ORA-06512: 在 “SYS.DBMS_SYS_ERROR”,第79行
ORA-06512: 在 “SYS.DBMS_DATAPUMP”,第3507行
ORA-06512: 在 “SYS.DBMS_DATAPUMP”,第4309行
ORA-06512: 在第23行
但是,如果我在DB2上创建SYSTEM.PCK包,则表将从DB1传输到DB2,并且EMP中的列ENAME仅包含值 “X”。
Th是 是 a big 是sue, as we cannot have the sensitive data leave over production database "DB1".
Can You help, have I m是sed anything ?
Br,
金
专家解答
您是否有任何原因无法在本地进行导出并重新映射数据?
SQL> create or replace 2 package scott.pkg is 3 function randomizer(c number) return number; 4 end; 5 / Package created. SQL> SQL> create or replace 2 package body scott.pkg is 3 function randomizer(c number) return number is 4 begin 5 return trunc(dbms_random.value(1,1000)); 6 end; 7 end; 8 / Package body created. C:\>expdp scott/tiger directory=TEMP dumpfile=scott_mask logfile=scott_mask.log remap_data=emp.empno:pkg.randomizer Export: Release 12.2.0.1.0 - Production on Thu Aug 10 12:31:59 2017 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Starting "SCOTT"."SYS_EXPORT_SCHEMA_01": scott/******** directory=TEMP dumpfile=scott_mask logfile=scott_mask.log remap_data=emp.empno:pkg.randomizer Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type SCHEMA_EXPORT/STATISTICS/MARKER Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/SYNONYM/SYNONYM Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE Processing object type SCHEMA_EXPORT/SEQUENCE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type SCHEMA_EXPORT/TABLE/COMMENT Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC Processing object type SCHEMA_EXPORT/FUNCTION/FUNCTION Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC Processing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE Processing object type SCHEMA_EXPORT/VIEW/VIEW Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT . . exported "SCOTT"."EMP$" 8.796 KB 15 rows . . exported "SCOTT"."EMP" 8.773 KB 14 rows . . exported "SCOTT"."DEPT" 6.023 KB 4 rows . . exported "SCOTT"."SALGRADE" 5.953 KB 5 rows . . exported "SCOTT"."BONUS" 0 KB 0 rows Master table "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ******************************************************************************复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
596次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
567次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
484次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
473次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
457次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
432次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
431次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
417次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
360次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
357次阅读
2025-04-15 14:48:05