DM创建外部JAVA函数

DM创建外部JAVA函数

要求说明:

1.用户需要有DBA权限,比如EUNOMIA用户,需要给该用户分配DBA权限。

2.配置可以使用外部函数,设置dm.ini参数 ENABLE_EXTERNAL_CALL=1

3.JAVA 外部函数的执行都通过代理 dmagent 工具进行,为了执行 JAVA 外部函数,需

要先启动 dmagent 服务

4.JAVA 外部函数调用应保证当前用户可以运行 JAVA 命令,否则会

导致调用失败。

目录说明

当前dm安装目录为C:\dmdbms,则

Agent使用脚本目录为:C:\dmdbms\web\dem_init.sql

Agent配置目录C:\dmdbms\tool\dmagent\config.properties

dm.ini目录:C:\dmdbms\data\DAMENG\dm.ini

示例:

在windows环境下,以用户名为EUNOMIA,schema为EUNOMIA为例。

启动DM数据库,登入EUNOMIA用户,执行相关脚本

修改脚本的schema为EUNOMIA,执行脚本。

脚本目录为:C:\dmdbms\web\dem_init.sql

说明:

DM Agent 是对一个库的代理。所以首先需要一个用户对应的库,然后执行相应的脚本。

比如当前用户为EUNOMIA,一般定义schema为EUNOMIA,则先修改脚本的schema为EUNOMIA,执行脚本。

相关配置修改

修改Agent配置:

C:\dmdbms\tool\dmagent\config.properties

#[General]
#run_mode values:
#0 - assist process
#1 - assist process & monitor
#2 - assist process & monitor & deployer
run_mode=2
ap_port=6363
rmi_port=6364

#[DEM]
center.url=http://localhost:8080/eunomia
center.agent_servlet=dem/dma_agent

说明:

1.修改run_mode为2

2.修改center.url为当前DM数据库服务器地址,这里的eunomia为schema的名,一般与用户名相同。

DM数据库配置修改

1.dm.ini参数 ENABLE_EXTERNAL_CALL=1

2.dm.ini中的 EXTERNAL_JFUN_PORT 和dmagent的ap_port保持一致

重新启动DM数据库

运行Agent

(以下内容以 windows 平台为例,Linux 平台请运行同名的 sh 脚

本)

DMAgentRunner.bat:dmagent 命令行模式运行脚本。

用户如果以命令行模式运行 dmagent,请直接运行 DMAgentRunner.bat。

创建JAVA类,打包成jar包后,复制到相应目录

目录为:C:\dmdbms\bin

需要在该目录下创建文件夹external_jar,然后将jar包放入该文件夹下。

这里我们将 eu_account_extend_encrypt.jar放到该目录下:

C:\dmdbms\bin\external_jar\eu_account_extend_encrypt.jar

创建JAVA函数

执行脚本,创建JAVA函数

CREATE OR REPLACE function eu_account_extend_encrypt(str varchar2,str2 varchar2) return varchar2

EXTERNAL ‘C:\dmdbms\bin\external_jar\eu_account_extend_encrypt.jar’ “com/test/encrypt/EncryptUtil.encrypt” USING java;

测试JAVA函数

select eu_account_extend_encrypt(‘需要加密的值’,‘AES加密秘钥’);

执行脚本对账户拓展表数据进行加密

注意:

函数 eu_account_extend_encrypt(ACCEX_VALUE,'2k8j s ′ ) , 第 二 个 参 数 值 为 A E S 加 密 算 法 的 秘 钥 , 需 要 根 据 配 置 中 心 的 配 置 值 来 确 认 。 比 如 : a c c o u n t . e x t e n d . a e s . s e c r e t = 2 k 8 j s'),第二个参数值为AES加密算法的秘钥,需要根据配置中心的配置值来确认。比如:account.extend.aes.secret=2k8j s)AESaccount.extend.aes.secret=2k8js ,则该秘钥值为 2k8j$s。修改sql后,执行。

– 对身份证号进行加密处理
update eu_account_extend set ACCEX_VALUE=eu_account_extend_encrypt(ACCEX_VALUE,‘2k8j s ′ ) w h e r e a c c e x c o d e = ′ I D C A R D N O ′ a n d r e g e x p l i k e ( A C C E X V A L U E , ′ [ 1 − 9 ] [ [ : d i g i t : ] ] 7 ( ( 0 [ [ : d i g i t : ] ] ) ∣ ( 1 [ 0 − 2 ] ) ) ( ( [ 0 ∣ 1 ∣ 2 ] [ [ : d i g i t : ] ] ) ∣ 3 [ 0 − 1 ] ) [ [ : d i g i t : ] ] 3 s') where accex_code ='ID_CARD_NO' and regexp_like(ACCEX_VALUE,'^[1-9][[:digit:]]{7}((0[[:digit:]])|(1[0-2]))(([0|1|2][[:digit:]])|3[0-1])[[:digit:]]{3} s)whereaccexcode=IDCARDNOandregexplike(ACCEXVALUE,[19][[:digit:]]7((0[[:digit:]])(1[02]))(([012][[:digit:]])3[01])[[:digit:]]3|1[[:digit:]]{5}[1-9][[:digit:]]{3}((0[[:digit:]])|(1[0-2]))(([0|1|2][[:digit:]])|3[0-1])[[:digit:]]{3}([0-9]|X)$’);

– 对手机号进行加密处理
update eu_account_extend set accex_value=eu_account_extend_encrypt(ACCEX_VALUE,‘2k8j s ′ ) w h e r e a c c e x c o d e = ′ P H O N E N O ′ a n d r e g e x p l i k e ( A C C E X V A L U E , ′ [ 1 ] [ 35678 ] [ 0 − 9 ] 9 s') where accex_code ='PHONE_NO' and regexp_like(ACCEX_VALUE,'^[1][35678][0-9]{9} s)whereaccexcode=PHONENOandregexplike(ACCEXVALUE,[1][35678][09]9’);

– 对邮箱进行加密处理
update eu_account_extend set accex_value=eu_account_extend_encrypt(ACCEX_VALUE,‘2k8jKaTeX parse error: Can't use function '\.' in math mode at position 100: …[a-zA-Z0-9_-]+(\̲.̲[a-zA-Z0-9_-]+)…’);


  1. 1-9 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值