注册
DM8创建外部函数(JAVA版国密SM3)-部署篇
技术分享/ 文章详情 /

DM8创建外部函数(JAVA版国密SM3)-部署篇

ZCH 2024/11/01 423 0 0

1 概述

本文讲述继《DM8创建外部函数(JAVA版国密SM3)-开发篇》之后部署外部jar包、创建达梦外部函数过程。

2 部署外部依赖包

2.1 主函数包

将SM3主函数包(Sm3ForDm.jar)传到达梦数据库以下目录:

[dmdba@db1 ~]$ mkdir $DM_HOME/bin/external_jar
[dmdba@db1 external_jar]$ pwd
/home/dmdba/dmdbms/bin/external_jar
[dmdba@db1 external_jar]$ ll
-rw-r--r-- 1 dmdba dinstall 3462988  6月 13 09:24 Sm3ForDm.jar

2.2 第三方依赖包

将SM3主函数包(Sm3ForDm.jar)需要引用的包(bcprov-ext-jdk15on-1.58.jar)传到以下目录,如:

[dmdba@db1 ~]$ cd $DM_HOME/tool/dmagent/lib
[dmdba@db1 lib]$ ll bcprov-ext-jdk15on-1.58.jar
-rw-r--r-- 1 dmdba dinstall 4025895  6月 13 10:36 bcprov-ext-jdk15on-1.58.jar

3 部署dmagent

3.1 配置agent.ini

[dmdba@db1 ~]$ cd $DM_HOME/tool/dmagent
[dmdba@db1 dmagent]$ vi agent.ini
#开启以下配置,默认为true
ap_enable       = true  #whether enable ap plugin
ap_port         = 6363  #ap listen tcp/ip port, range[1~65535]
#如果没部署DEM,或不用与DEM连接,修改以下参数关闭:
service_enable  = false #whether enable service plugin
gather_enable   = false #whether enable gather plugin
upgrade_enable  = false #whether enable upgrade plugin

3.2 配置dmagent服务

用root用户执行,配置服务:

[root@db1 ~]# cd /home/dmdba/dmdbms/tool/dmagent
[root@db1 dmagent]# ./service.sh install
input agent home [/home/dmdba/dmdbms/tool/dmagent] :
input agent.ini path [/home/dmdba/dmdbms/tool/dmagent/agent.ini] :
installation the service DmAgentService completed.
启动服务:
[root@db1 ~]# systemctl start DmAgentService

4 开启外部函数功能

查询创建外部函数参数,如果无记录或参数为0,则未开启:

SELECT * FROM V$DM_INI WHERE PARA_NAME= 'ENABLE_EXTERNAL_CALL';
开启参数:
SP_SET_PARA_VALUE(2,'ENABLE_EXTERNAL_CALL',1);

5 重启数据库服务

根据实际部署情况,执行脚本重启数据库服务,如:

[dmdba@db1 bin]$ cd $DM_HOME/bin
[dmdba@db1 bin]$ ./DmServiceDMSERVER restart
或
[root@db1 ~]# systemctl restart DmServiceDMSERVER

6 创建外部函数

6.1 计算SM3摘要值

CREATE OR REPLACE FUNCTION getSM3Hash(originalStr VARCHAR)
RETURN VARCHAR
EXTERNAL ‘/home/dmdba/dmdbms/bin/external_jar/Sm3ForDm.jar’ “com.dm.crypto.SM3ForDM.getSM3Hash” USING java;

6.2 验证摘要

CREATE OR REPLACE FUNCTION verifySM3Hash(originalStr VARCHAR,sm3Hash VARCHAR)
RETURN VARCHAR
EXTERNAL ‘/home/dmdba/dmdbms/bin/external_jar/Sm3ForDm.jar’ “com.dm.crypto.SM3ForDM.verifySM3Hash” USING java;

6.3 计算SM3 Mac值

CREATE OR REPLACE FUNCTION getHmac(keyStr VARCHAR,originalStr VARCHAR)
RETURN VARCHAR
EXTERNAL ‘/home/dmdba/dmdbms/bin/external_jar/Sm3ForDm.jar’ “com.dm.crypto.SM3ForDM.getHmac” USING java;

7 测试外部函数

image.png
image.png
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服