当前位置: 首页 > news >正文

OceanBase 缺少 dbms_obfuscation_toolkit.md5 包函数的解决方案

因为 dbms_obfuscation_toolkit.md5 是一个 Oracle 不推荐继续使用的函数,所以 OceanBase 没有对其兼容,取而代之的是兼容了 dbms_crypto.hash,其用法详见这篇 KB

但是,并不是所有业务都接受修改源码,因为复杂系统里,涉及到的修改点可能无法枚举。

这里提供一种临时解决方案:使用 OceanBase PL/SQL 实现一个 dbms_obfuscation_toolkit.md5 系统包,源码如下:

## 创建包 DBMS_OBFUSCATION_TOOLKIT 
CREATE OR REPLACE PACKAGE DBMS_OBFUSCATION_TOOLKITISFUNCTION MD5(input_string VARCHAR2)RETURN varchar2;END DBMS_OBFUSCATION_TOOLKIT;
/## 创建包体 DBMS_OBFUSCATION_TOOLKIT
CREATE OR REPLACE PACKAGE BODY DBMS_OBFUSCATION_TOOLKITIS FUNCTION MD5(input_string VARCHAR2)RETURN varchar2IS BEGINRETURN UTL_RAW.CAST_TO_VARCHAR2(dbms_crypto.hash(utl_raw.cast_to_raw(input_string), 2));END MD5;
END DBMS_OBFUSCATION_TOOLKIT;
/

测试效果如下:

OceanBase(TEST@TEST)>SELECT rawtohex(dbms_crypto.hash(utl_raw.cast_to_raw('hello world'),2 /*dbms_crypto.HASH_MD5*/)) md5 FROM dual;
+----------------------------------+
| MD5                              |
+----------------------------------+
| 5EB63BBBE01EEED093CB22BB8F5ACDC3 |
+----------------------------------+
1 row in set (0.000 sec)OceanBase(TEST@TEST)>SELECT utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string => 'hello world')) md5 FROM dual;
+----------------------------------+
| MD5                              |
+----------------------------------+
| 5EB63BBBE01EEED093CB22BB8F5ACDC3 |
+----------------------------------+
1 row in set (0.039 sec)

可见,上述 PL 代码完全实现了相关功能。

这个思路可以延伸到很多缺 PL 包的场景,我们很多时候可以使用自定义的 PL 包来模拟缺失的内容。当然,这个主要集中在计算领域,如果是要做一些网络 IO,就麻烦很多,比如 HTTP 相关的包,就很难模拟。

相关文章:

OceanBase 缺少 dbms_obfuscation_toolkit.md5 包函数的解决方案

因为 dbms_obfuscation_toolkit.md5 是一个 Oracle 不推荐继续使用的函数,所以 OceanBase 没有对其兼容,取而代之的是兼容了 dbms_crypto.hash,其用法详见这篇 KB 但是,并不是所有业务都接受修改源码,因为复杂系统里&…...

Java---类和对象第一节

目录 1.面向对象初步认识 1.1什么是面向对象 1.2面向对象和面向过程的区别 2.类的定义和使用 2.1简单认识类 2.2类的定义格式 2.3类的实例化 2.4类和对象的说明 3.this关键字 3.1访问本类成员变量 3.2调用构造方法初始化成员变量 3.3this引用的特性 4.对象的构造以…...

Zeller公式的应用:给定日期,确定周几

开篇 本篇文章依然是对于日期相关函数的实现。 问题概要 给定一个日期&#xff0c;返回为周几 思路分析 这个问题的思路只是对于Zeller公式的直接引用&#xff0c;不存在其他逻辑。公式详情可参考Zeller公式百科 代码实现 #include <stdio.h>// 根据Zeller公式计算 int …...

程序链接和运行 - 笔记

1 linux下程序a连接b.so后,运行时如何找到调用的函数 在Linux下,当程序A连接了动态链接库B(.so文件)后,在运行时,程序A会使用动态链接器(dynamic linker)来解析并加载动态链接库B中的函数。动态链接器会在系统中搜索动态链接库,并将它们加载到程序的地址空间中。 当…...

pyqt 按钮常用格式Qss设置

pyqt 按钮常用格式Qss设置 QSS介绍按钮常用的QSS设置效果代码 QSS介绍 Qt Style Sheets (QSS) 是 Qt 框架中用于定制应用程序界面样式的一种语言。它类似于网页开发中的 CSS&#xff08;Cascading Style Sheets&#xff09;&#xff0c;但专门为 Qt 应用程序设计。使用 QSS&am…...

websevere服务器从零搭建到上线(一)|阻塞、非阻塞、同步、异步

文章目录 数据准备(阻塞和非阻塞)、数据读写(同步和异步)小总结&#xff08;陈硕老师的总结&#xff09; 知识拓展同步执行实例异步编程实例 八股 数据准备(阻塞和非阻塞)、数据读写(同步和异步) 无论是什么样的IO都包含两个阶段&#xff1a;数据准备和数据读写。 我们的网络IO…...

【C++】引用传递 常量引用

在C中&#xff0c;引用传递和常量引用是两个常用的概念&#xff0c;主要用于函数参数传递。它们提供了对变量或对象更有效率和更安全的访问方式。 引用传递&#xff08;Pass by Reference&#xff09; 引用传递意味着当你将变量作为参数传递给函数时&#xff0c;你实际上是传…...

Docker停止不了

报错信息 意思是&#xff0c;docker.socket可能也会把docker服务启动起来 解决 检查服务状态 systemctl status dockersystemctl is-enabled docker停止docker.socket systemctl stop docker.socket停止docker systemctl stop docker知识扩展 安装了docker后&#xff0c;…...

【网络】为什么TCP需要四次挥手?

在网络通信中&#xff0c;TCP&#xff08;传输控制协议&#xff09;是一种可靠的、面向连接的协议&#xff0c;它在数据传输过程中保证了数据的可靠性和顺序性。而TCP的连接建立过程只需要三次握手&#xff0c;但是TCP的挥手过程却需要四次挥手&#xff0c;这是为什么呢&#x…...

2024自动化测试市场分析

大家都说2024年软件测试讲会卷的更厉害,从原来的功能测试到现在自动化测试,那么2024年是否可以学习自动化冲一把,我们先看一下2023年自动化测试在测试行业中的分析: 1.市场需求增长&#xff1a; 随着技术的进步和企业对软件质量的要求日益提高&#xff0c;自动化测试在测试行…...

什么是机器视觉应用解决方案?

机器视觉应用解决方案通常指的是利用视觉系统自动检测、处理和分析图像的技术方案&#xff0c;以便执行各种工业或研究任务&#xff0c;如质量控制、自动检测、导航和识别等。在LabVIEW环境中&#xff0c;这些解决方案通常涉及到硬件和软件的紧密集成&#xff0c;以实现高效的数…...

使用 scrapyd 部署 scrapy

1.scrapyd 是什么&#xff1f; Scrapyd 是一个用于部署和运行 Scrapy 爬虫项目的服务器应用程序。它使得你可以通过 HTTP 命令来部署、管理和执行多个 Scrapy 爬虫&#xff0c;非常适合持续集成和生产环境中的爬虫部署。 2.安装scrapyd 并使用 2.1 安装 scrapyd F:\scrapydTes…...

Python计算器程序代码

from tkinter import * import random class App: def __init__(self, master): self.master master self.initwidgets() #表达式的值 self.expr None def initwidgets(self): #定义一个输入组件 self.show Label(relief SUNKEN, font (Courier New, 24), width 25, bg …...

图像分割各种算子算法-可直接使用(Canny、Roberts、Sobel)

Canny算子&#xff1a; import numpy as np import cv2 as cv from matplotlib import pyplot as pltimg cv.imread("../test_1_1.png") edges cv.Canny(img, 100, 200)plt.subplot(121),plt.imshow(img,cmap gray) plt.title(Original Image), plt.xticks([]), …...

Spring Boot进阶 - 实现自动装配原理

Spring Boot的自动装配&#xff08;Auto-Configuration&#xff09;是其核心特性之一&#xff0c;它极大地简化了Spring应用的配置过程。自动装配的原理基于Spring框架的Configuration、ConditionalOnClass、ConditionalOnMissingBean等注解&#xff0c;以及Spring Boot提供的s…...

面向电商家居行业3D室内场景合成中的空间感知

本文主要介绍了3D场景合成技术在电商领域&#xff0c;尤其是家居家装行业的应用。它解释了如何使用3D场景合成创建逼真的室内设计&#xff0c;让消费者能够交互式地查看和体验产品&#xff0c;提高购物的趣味性和效率。文章提到了两种主要的3D室内场景生成算法&#xff1a;传统…...

ERROR 1045 (28000) Access denied for user ‘root‘@‘IP‘(using password YES/NO)

查看权限 要查看MySQL用户的权限&#xff0c;您可以使用SHOW GRANTS语句。这将列出用户的权限&#xff0c;包括授予的权限和可以授予其他用户的权限。 以下是查看当前用户权限的SQL命令&#xff1a; SHOW GRANTS; 如果您想查看特定用户的权限&#xff0c;可以使用以下命令&…...

verilog $test$plusargs和$value$plusargs

#学习记录# 目录 Abstract 1 使用宏定义的条件编译 2 $test$plusargs 3 $value$plusargs 参考文献 Abstract 我们在进行verilog仿真时&#xff0c;经常喜欢采用宏定义&#xff0c;来做条件判断&#xff0c;但是通过宏定义做条件判断的这种方法&#xff0c;存在很大的弊端…...

Linux设置open files

临时设置 ulimit -n 1025 查看是否成功 ulimit -n 永久设置&#xff0c;网上很多说添加* soft nofile 65535 * hard nofile 65535但设置后不生效 vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 然后重新…...

Linux下安装JDK并配置环境变量

一、Oracle官网下载jdk 1、官网地址 https://www.oracle.com/java/technologies/downloads/#java17 2、命令下载 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 3、解压 tar -zxvf jdk-17_linux-x64_bin.tar.gz 4、配置环境变量 ec…...

擎天科技与禅道合作,打造统一的项目管理平台

统一、全面的项目管理平台能够帮助企业优化管理流程&#xff0c;提升业务效率。擎天集团选择与禅道软件合作&#xff0c;打造统一的项目管理平台&#xff0c;在降低自研软件的研发成本、打破团队信息孤岛、保障数据全面性等方面效果显著&#xff0c;大大提高了团队沟通协作效率…...

ansible报错解决:Failed to import the required Python library (netaddr)

ansible报错解决&#xff1a;Failed to import the required Python library (netaddr) 问题情况 今天我在做实验的时候出现了一个问题&#xff0c;以下是我的playbook&#xff0c;这个playbook是验证变量ip_address是否是一个合法的IP地址&#xff0c;并打印相应的信息的一个…...

盛邦安全拟战略收购卫星通信加密厂商天御云安

近日&#xff0c;远江盛邦&#xff08;北京&#xff09;网络安全科技股份有限公司&#xff08;以下简称“盛邦安全”&#xff0c;股票代码:688651)对外公布&#xff0c;拟使用自有资金不超过人民币3000万元持有北京天御云安科技有限公司&#xff08;以下简称“天御云安”&#…...

iOS MRC那句话

混编时使用MRC文件需要使用这句话 -fno-objc-arc在下图中显示的位置添加...

macOS DOSBox 汇编环境搭建

正文 一、安装DOSBox 首先前往DOSBox的官网下载并安装最新版本的DOSBox。 二、下载必备的工具包 在用户目录下新建一个文件夹&#xff0c;比如 dosbox: mkdir dosbox然后下载一些常用的工具。下载好了后&#xff0c;将这些工具解压&#xff0c;重新放在 dosbox 这个文件夹…...

Python深度学习基于Tensorflow(1)Numpy基础

文章目录 数据转换和数据生成存取数据数据变形和合并算数计算广播机制使用Numpy实现回归实例 numpy的重要性不言而喻&#xff0c;一般不涉及到GPU/TPU计算&#xff0c;都是用numpy&#xff0c;常见的np就是这个玩意。其特点就是快&#xff01;其实如果不涉及到深度学习&#xf…...

体验GM CHM Reader Pro,享受高效阅读

还在为CHM文档的阅读而烦恼吗&#xff1f;试试GM CHM Reader Pro for Mac吧&#xff01;它拥有强大的功能和出色的性能&#xff0c;能够让你轻松打开和阅读CHM文件&#xff0c;享受高效、舒适的阅读体验。无论是学习、工作还是娱乐&#xff0c;GM CHM Reader Pro都能成为你的得…...

校园网拨号上网环境下多开虚拟机,实现宿主机与虚拟机互通,并访问外部网络

校园网某些登录客户端只允许同一时间一台设备登录&#xff0c;因此必须使用NAT模式共享宿主机的真实IP&#xff0c;相当于访问外网时只使用宿主机IP&#xff0c;此方式通过虚拟网卡与物理网卡之间的数据转发实现访问外网及互通 经验证&#xff0c;将centos的物理地址与主机物理…...

cpu常用命令

1.平台信息 # 读节点 adb shell "cat proc/cpuinfo" # 读属性 adb shell getprop ro.hardware 2.负载信息 # 负载信息 adb shell dumpsys cpuinfo 3.原生定频 # 频率档位 adb shell "cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies&q…...

Vue3实战笔记(06)--- Axios 基本用法

文章目录 前言一、发送get请求二、发送post请求三、另一种写法总结 前言 今天学习Vue官方推荐的请求工具Axios &#xff0c;Axios 是一个基于 promise 的 HTTP 库&#xff0c;可用于浏览器和 node.js 中。它简洁、易用且功能强大&#xff0c;支持多种请求类型&#xff08;GET、…...