自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DarkAthena的博客

个人网站:darkathena.top

  • 博客(106)
  • 收藏
  • 关注

原创 【MogDB】在ORACLE和MogDB中查看存储过程出参游标数据的方式

使用ORACLE作为数据库的应用软件中,偶尔会遇到使用游标作为出参的存储过程,这种存储过程迁移到MogDB并不需要进行改造,但是在开发这样的存储过程时,开发人员偶尔会想要在数据库中测试执行一下,看看游标中的数据是否符合预期,但游标并不是常规的基本数据类型,再写一段plsql或者其他语言的代码去扫游标中的数据打印出来又会有额外的开发量。因此本文介绍几种在开发过程中,ORACLE和MogDB查看出参游标数据的方式。

2024-04-13 19:45:13 1114

原创 【MogDB】解读MogDB5.0.6版本中有关兼容性的一些更新

MogDB于2024-03-30发布了其5.0版本的补丁版本—5.0.6,其在MogDB 5.0.5的基础上新增部分特性并修复了部分缺陷,具体内容可参考官方文档# MogDB 5.0.6发布说明相信有一些伙伴和我一样对兼容性的部分感兴趣,因此本篇就针对本次更新的一些涉及到有关兼容性的东西,大概说说其实补丁版本中一般也不会增加多少内容,从本文列举的这些兼容性点上来看,很多都是很细小的变动。

2024-03-31 19:00:36 875

原创 【MogDB】实战MogDB数据库适配Halo博客系统1.6版本(基于springframework+hibernate+HikariPool)

前一篇文章说了MogDB适配Halo,【MogDB】将流行的博客系统Halo后端的数据库设置为MogDB,但是适配的是2.x版本,由于2.x版本已经引入了对postgresql的支持,而MogDB对于postgresql有很好的兼容性,因此适配起来很简单。但是由于halo2.x的版本进行了全部的重构,从1.6版本并不能无痛升到2.x版本,所以仍有很多用户在使用1.6版本。

2024-03-06 23:01:24 1003

原创 【MogDB】将流行的博客系统Halo后端的数据库设置为MogDB

本人的个人博客站点()基于Halo博客系统搭建,该博客系统后端可以配置多种数据库,默认为H2,但是最新版已不建议使用H2,而是建议使用mysql/postgresql等数据库。经验证,MogDB数据库也可以作为Halo博客系统的后端数据库。

2024-02-21 20:32:44 661

原创 恼人的“龙天“(䶮)--谈谈从GBK转到GB18030的特殊情况

这个字的外形是 ,上面是“龙”,下面是“天”。其实正常的输入法是可以输入这个外形的字的,但是,实际上你用输入法输入的这个字,并不是我上面提到的这个字,它们只是外形完全一样的“两个字”

2024-01-12 18:58:23 1386

原创 【openGauss】如何通过pg_trigger.tgtype获取触发器的各种触发条件

最近有客户反馈兼容的dba_triggers视图中,同一个触发器的trigger_event被拆成了多行,和ORACLE中表现不一致,于是我进行了一些分析,发现是在其引用的information_schema.triggers视图中就已经拆开成了INSERT/DELETE/UPDATE,但是这些属性都是通过tgtype这一个int2整型的字段获取的,甚至连before/after/instead of/row/statement 等都是通过这一个字段。

2023-12-02 01:53:30 383

原创 【MogDB】操作系统依赖动态库解耦测试(MogDB 5.0.1以上)

数据库作为一类软件,用户期望的是功能越多越好,但是同时又期望越轻量化越简单越好,本身就是一种矛盾。MogDB在openGauss社区版的基础上,不断吸收来自各行各业真实用户的各种建议,结合团队丰富的开发和运维经验,对于数据库快速安装方面,摸索出其中的平衡点,即ptk+mogdb的组合,让用户不再为安装数据库而发愁。DarkAthena本博客所有文章除特别声明外,均采用许可协议。转载请注明出处!

2023-12-02 01:42:40 365

原创 【openGauss】带有out参数的存储过程及自定义函数的重载测试

对于openGauss一、以下两条不会由于重载选项的差异发生行为改变1.使用ORACLE风格语法的procedure和function,创建规则和ORACLE一致,同名对象直接覆盖2.使用PG风格的FUNCTION,支持入参不一致的重载创建;对于入参一致,仅出参有差异的,会直接覆盖(如果return类型变化,创建会报错)二、重载选项会控制package中的procedure能否创建仅出参不一致的重载,关闭选项时,重载规则为仅入参不匹配;开启选项时,重载规则为任意参数不匹配。

2023-07-31 13:50:56 245

原创 【openGauss】从“functions in index expression must be marked IMMUTABLE“谈起

函数索引无论在哪个数据库中,都不是推荐用法

2023-07-11 23:24:50 838

原创 【ORACLE】一条看不出会删哪个表的delete语句

最近遇上一条ORACLE里的SQL,以我十多年的复杂SQL编写经验,我竟然一时半会无法用SQL语法解析出这条SQL的语义,而且这个SQL竟然是可能可以执行成功的!

2023-06-04 01:05:00 737

原创 【openGauss】如何将数据库中的自定义复合类型绑定到java的class中

某客户,将应用的数据库从oracle迁移到openGauss系,源库中使用了大量的自定义type,所以java代码里也有很多对type对象的处理。在oracle中可以直接传对象给数据库,但是openGauss/postgresql的源码用例中,都是通过PGobject.setValue,把对象中的所有值拼成一个字符串,用逗号分隔,用括号括起来。如果对象中的某个值可能存在有逗号,那么就会出现异常。我以前没正经写过java,只能看懂个大概意思,当然,依葫芦画瓢也没啥问题。

2023-05-22 00:38:47 434 2

原创 【ORACLE】极速通关Oracle23c开发者免费版连接

oracle23c开发者免费版已经于2023年4月4日(北京时间)推出,并且官方也公布了安装介质的下载地址,有RPM安装包、VM虚拟机、docker镜像(下载链接见文末)。由于最近工作比较忙,暂时无法写一篇内容丰富的测试,所以先提供一个最快速体验的方法,省去对于开发者而言,繁琐的安装步骤。(docker环境部署略,实测windows docker也能启动)

2023-04-05 14:33:44 503

原创 【openGauss】把应用开发中的设置客户端字符编码往细了说

早前写过两篇有关Oracle字符集的文章基本说明了 ”数据字符编码“、”客户端字符编码“、”数据库字符编码“三者的关系,这些关系,对于openGauss/MogDB/postgresql其实是一样的,即”数据字符编码“和”客户端字符编码“应保持一致,且对应的字符集为”数据库字符集“的”子集

2023-02-01 20:08:57 1239

原创 【openGauss】一键编译openGauss3.1+dolphin,体验新增的mysql兼容特性

前两天写了一篇openGauss3.1关于mysql的相关特性,但由于openGauss官网提供下载的版本还是9月30号第一次发布的版本,很多特性都还没合入,于是我整理了2个脚本,实现真正的一键式编译并自动安装及启动数据库

2022-12-25 14:20:37 889 8

原创 【openGauss】浅试openGauss3.1.0中有关mysql兼容的部分特性

在9月30号,openGauss推出了3.1.0这一预览版。这个版本增加了不少新内容,但让我最感兴趣的是其中关于mysql兼容的部分

2022-12-23 22:56:39 2546

原创 【UOS-MogDB】如何在未进入开发者模式的统信UOS上使用Mogeaver

最近有使用UOS桌面办公环境的客户在问,目前MogDB提供的开发工具Mogeaver只有tar包,而UOS使用软件比较严格,未签名的软件无法直接使用,所以希望能有一个能在UOS上使用的deb包。我和同事在网上搜了一下如何编写deb包,然后根据步骤在ubuntu下生成了一个deb包,但实测无法在UOS上使用,不过好在最后找到了办法,因为过程略微曲折,于是写下本文记录操作过程。

2022-12-15 00:42:01 969 2

原创 【openGauss】在WPS表格里制作连接到openGauss的实时刷新报表

其实我的数据库启蒙,是在一家甲方公司。当时一进这家公司,就见到了通过连接数据库自动刷新的excel表。而我们的国产数据库,是不是也可以通过这种方式制作报表呢?

2022-11-20 00:56:49 574 3

原创 【工具技巧】在windows terminal中保存SSH连接密码(明文)

从2020年开始,网上时不时会刷到windows terminal(缩写wt,下同)这个软件的各种讨论及新闻。这玩意已在新版的win11中,代替了cmd成为了默认的终端软件,而且集成了cmd/powershell,甚至还能自行添加其他终端进去。拥有各种字体、颜色的个性化设置,一时间互联网上无数好评。而且,这个软件是开源的,微软开源。既然是个终端,在windows操作系统上,,一般情况下,几乎很少需要使用cmd或者powershell去执行什么东西,真正用得多的场景应该是ssh连接linux服务器。

2022-11-06 22:48:48 4742 4

原创 【openGauss】两种在openGauss中使用存储过程生成文本文件的方式

在很多使用Oracle数据库的业务应用系统中,尤其是涉及到多个系统需要进行大量数据交互的,如果使用httpapi直接传递表格数据,效率会极其的慢,且很耗应用的计算性能,所以往往会采取用文件的方式来传输大量数据。Oracle中有一个utl_file包,就适用于此场景,在数据库中直接查询出数据,然后写入文件,省去了应用的内存占用,也节省了应用到数据库之间的网络开销。可是,在openGauss中并无utl_file包,那么在openGauss中该如何实现utl_file包的功能呢?

2022-11-06 21:25:10 727

原创 【openGauss】如何在openGauss中实现类似Oracle中constructor function、member function的功能

在数据库中编程,大多都是用的存储过程,但是Oracle也支持面向对象的编程方式,即在自定义type中,包含constructor function、member function的声明及定义。这种方式,能够较为轻松地使用其他面向对象编程的语言进行相互移植,虽然语法上有所区别,但是重要的是主体逻辑基本不用变,甚至oracle也提供了其他开发语言对这种type对象直接调用的支持。

2022-10-31 21:28:16 340

原创 【ORACLE】谈一谈NVARCHAR2、NCHAR、NCLOB等数据类型和国家字符集

一直以来,很多用过ORACLE数据库的开发人员,都知道在ORACLE中,字符类型可以为varchar2,也可以为nvarchar2,但是很多人都不知道这两种类型有什么区别,同样还有char/nchar,clob/nclob这些,所以今天来谈谈我对这些数据类型的理解。

2022-10-23 23:13:52 5353 1

原创 【openGauss】让gsql和sqlplus输出包含有SQL及数据的完全一致的文本文件

其实写段Java或者python就可以输出格式完全相同的查询结果了,但这些开发语言都有环境依赖,且对于运维DBA这一特定角色,可能不是太愿意用这些语言来编写代码。所以,希望能从gsql和sqlplus获得完全一致的文本输出,这样就能用文本差异对比工具对输出的文本文件进行快速比对

2022-10-21 15:52:43 914

原创 【openGauss】一种可能是目前最快的从ORACLE同步数据到MogDB(openGauss)的方式

目前openGauss支持oracle中的绝大部分数据类型,基本上不用考虑类型转换的问题。所以从oracle到MogDB(openGauss)的数据同步无非就是从oracle里查出来再插入到MogDB(openGauss)中,只是查出来的结果是存成文件还是放内存而已。

2022-09-15 18:39:44 504

原创 【openGauss】在windows中使用容器化的mogeaver

这是一个对目前某些暂时在linux专享的功能,在windows上实现的探索,不建议在生产中使用。

2022-09-07 20:52:32 461

原创 【ORACLE】什么时候ROWNUM等于0和ROWNUM小于0,两个条件不等价?

也就是说,“rownum=0” 被oracle 自动优化成了 “1=0” ,这是作为一个过滤条件,并且此处rownum始终是等于1的,印证了我之前的猜想。因为“rownum

2022-08-02 22:02:40 507

原创 【ORACLE】Oracle里有“time”数据类型吗?--关于对Oracle数据类型的一点研究

Oracle里有“time”数据类型吗?绝大多数熟悉oracle的人都会说没有,但事实就是如此么?下面这个图一定会让不少人大跌眼镜

2022-06-18 23:01:57 1310

原创 【openGauss】使用Oracle VM VirtualBOX安装openEuler操作系统并手动安装MogDB主备

前言本文参考MogDB官方安装文档中的“手动安装”https://docs.mogdb.io/zh/mogdb/v3.0/manual-installation,使用Oracle VM VirtualBOX虚拟机软件,安装两台openEuler操作系统的虚拟机,并安装MogDB一主一备环境先说我遇到的坑在虚拟机硬件配置中,默认是1个cpu,操作系统是可以安装成功的,也可以正常启动,但是启动数据库时会报错,设置2个cpu后就没有报错了(我反复安装了七八次操作系统,还更换了镜像版本,使用同样的安装流

2022-05-19 02:27:50 857

原创 【openGauss】谈一谈openGauss对Oracle中lob类型的兼容情况

Oracle中的lob在Oracle数据库中,有blob和clob这两种较为特殊的数据类型,之所以特殊,是因为这两个类型中能存储大量的数据,最高可达4GB,因此比较适合用来存文件,其中blob用于存储二进制数据,而clob用于存储纯文本数据。另外,如果表里有字段是这两种类型,那么这些类型的数据也会有个单独的存储扩展段。而表内这两列实际存储的是“LOB locator”,即LOB定位器,相当于一个索引值,可以根据这个值在另外的存储扩展段里找到实际的lob数据。也是由于存储是分开的,所以对这两种字段的操作

2022-05-14 23:19:49 1084

原创 【openGauss】记录一次关于对openGauss(postgresql)数据类型的摸索经过及感想

背景起因是这样的,本来想写一篇文章来描述Oracle及openGauss中raw/blob类型的差异,但是写到一半,发现对官方文档中raw存储的是十六进制字符串这点有点不理解https://opengauss.org/zh/docs/3.0.0/docs/Developerguide/%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%B1%BB%E5%9E%8B.html它到底是存储的实际数据的二进制数据?还是实际数据转成十六进制文本再把文本转换成二进制数据存储?思考经过如果是在ora

2022-05-14 01:36:38 654

原创 【openGauss】尝鲜openGauss官方客户端工具DataStudio3.0.0

前言我是去年年底开始接触到openGauss的,仅仅用了一周时间,就用DataStudio2.1.1写了不少函数,这说明这个工具的确容易上手。当时我也找到了一些这个工具的bug,官方已经回应会在下一个版本进行修复,然后DataStudio3.0.0开源了!开源地址:https://gitee.com/opengauss/DataStudio(在3月份开源消息刚放出来时,master分支里还没有代码,需要手动切换分支到3.0.0才能看到源码,然后在4月13号以后才能在master中看到,而且我按文档

2022-05-10 01:34:30 1032 3

原创 【openGauss】Oracle到postgresql的字符集名称映射表

前言最近在写支持openGauss的dbms_lob包,其中的converttoblob及converttoclob两个过程涉及到了字符集相关内容(有个参数是nls_charset_id),但openGauss(基于postgresql)中的字符集名称和oracle的不一致,在迁移时,需要进行一些转换,因此本人做了如下整理。PG-ORACLE字符集映射以下是PG到Oracle字符集映射表,其中PG字符集清单来自PG官方文档(http://postgres.cn/docs/13/multibyte.h

2022-05-10 00:39:17 697

原创 【ORACLE】谈一谈PLSQL DEVELOPER的调试(debug)功能

前言最近在研究国产数据库存储过程debug的一些东西,想到以前我经常用plsql developer的debug功能,就整理回顾一下其用法,顺便也是给已经或者即将开发国产数据库存储过程debug功能的设计人员和开发人员一个借鉴,plsql开发者是如何进行debug的。基本操作在对象浏览器中鼠标右键,或者直接在sql编辑器中对对象名称鼠标右键,选择测试(debug),注意"添加调试信息"这里要打勾,否则无法跟踪到此对象内部。("添加调试信息"其实就是加上debug参数对对象进行编译,当然也可以直接在会话

2022-05-09 00:08:34 6055

原创 【openGauss】用plpgsql实现sha256算法(踩坑填坑实录)

前言在开发中,经常会使用类似MD5/ SHA-1/ SHA-2这样的hash算法来对数据进行处理,以防原始信息泄露,比如密码的存储。SHA-2中的SHA256,安全性比MD5更高,因此很多数据库增加了对SHA256计算的支持。比如从oracle12c起,数据库内原生提供了DBMS_CRYPTO包和STANDARD_HASH函数,可以用来进行sha256计算。在postgresql中,可以通过安装pgcrypto扩展来支持,安装命令也很简单。sqlcreate extension pgcrypto;

2022-04-27 20:25:59 2029

原创 【ORACLE】谈一谈分析函数(窗口函数)的前世今生-那些可能不为人知的事

一、前言经常写报表sql的小伙伴,应该都知道"分析函数"这一强大的功能,常见用法比如 取分组TOP-N、滚动求和、取当前行的上(下)N行等等。不过本篇不会再对这些常见基础用法进行介绍,只会说说那些关于"分析函数"可能不被人注意的事。二、最早使用分析函数的数据库有文章里说过,分析函数最早是在ORACLE8.1.6中出现的,我翻了下8.1.6和8.0的文档,发现的确如此(8.1.5版本文档已被移除,暂无法确认)而ORACLE8.1.6是在1999年11月发布的,因此早在二十多年前(此文创作日期为2022

2022-03-24 02:53:03 943 1

原创 【ORACLE】详解oracle数据库UTL_ENCODE包各个函数的模拟算法

前言在前后端交互的开发中,经常会遇到需要将一些二进制数据,比如图片文件,编码成可打印的ascii字符进行传递;又者,开发人员不希望数据在传递中明文显示传递的文本内容,并且有些字符不是ascii字符,无法很好的兼容各种环境。所以这就涉及到了各种编码的转换。虽然目前各种开发语言均可处理此类编码,但的确是存在一些场景需要在数据库中对数据直接进行编解码的操作。比如应用直接将编码后的数据存到了数据库,但如果直接在数据库去进行查找时,发现编码后的数据无法读,无法写出想要的数据的检索条件。在oracle数据库中,有

2022-03-15 21:47:58 2313 1

原创 【站长工具】jsdelivr挂了后,我是如何拯救我的个人网站的(halo)

前言众所周知,在去年年底,知名的免费cdn服务提供商jsdelivr由于大陆域名备案的问题,没有国内的CDN加速了,目前都只能解析到海外,不但速度慢,还会偶发性无法连接到服务器。因此国内超多网站都受到了影响。有人说可以批量修改引用的url,都改成 unpkg.com,但实测,我的个人网站上有一半的js和css在这个站点上是没有的。由于我的个人站点并没有提供多少花里胡哨的内容,所以我就想着把所有要从jsdelivr获取的文件都下载到服务器本地,不再从外部获取,没准哪天海外服务都没了那就芭比Q了。操作步

2022-03-08 00:39:28 8485 9

原创 【ORACLE】详解oracle数据库UTL_RAW包各个函数的模拟算法

前言这篇文章可能是你至今(2022-02-11)能在互联网看到的,关于utl_raw包的逻辑说得最深入的一篇文章了。由于最近在复刻oracle中自带的包到其他数据库,因此需要对oracle中的包的逻辑进行解析。比如UTL_RAW这个包,以前用得挺多,但没深究其函数逻辑,这次仔细分析,发现了有一些函数涉及到了一些计算机基本原理及IEEE标准,比较有意思,因此写一篇这样的文章来分享。函数清单先上官方文档 UTL_RAW再贴个函数清单,稍微翻译了下,方便理解|Subprogram|Descripti

2022-02-11 18:44:04 4092

原创 【openGauss】谈谈openGauss中的raw类型

前言在oracle数据库上进行开发的时候,经常会使用到raw类型,raw其实就是一段十六进制形式的二进制数据,最长长度和varchar2一致,都是32767个字节。在各种数据加解密或者数据传输时,使用二进制数据可以避免字符集异常或者特殊符号引起的程序运行错误。在postgresql(截止到当前最新的14版本)中,没有raw类型,只能使用text或者bytea转换来处理,所以这个点可能会让迁移项目变得很头疼。最近在写openGauss的兼容plsql包,正好写到了utl_raw,一开始我是完全按照pos

2022-02-07 03:37:37 1277

原创 【openGauss】我用plsql给openGauss手搓了一个UTL_URL包

前言最近开始啃openGauss的兼容package了,先拿简单点的练练手。UTL_URL这个包只有两个函数,"ESCAPE"和"UNESCAPE",其实就是在其他开发语言中使用的URLENCODE和URLDECODE两个函数,主要用于对url字符串的一些特定字符进行处理,以便将url字符串作为数据传输时不引起歧义,还算是经常会用到的功能,目前已经有三方扩展支持这两个函数(https://github.com/okbob/url_encode),但是在openGauss里编译扩展有点不方便,我直接用pl

2022-02-02 22:48:49 1939

原创 【ORACLE】谈一谈Oracle数据库使用的字符集,不仅仅是乱码

一、前言先看一个比较有意思的案例上面这个sql,查询了a和b两个字段,均为"张三"两个汉字,并且使用length函数检查,长度均为2。但是,当你看到下面这几个sql的输出结果时,很有可能第一反应是:"这特喵的怎么可能?"其实,你所看到的两个"张三",的确长得是一模一样,用显微镜去看也不可能看到区别。但为什么a和b不相等呢?这是因为组成他们的成分不一样,这个成分就是 字符集二、什么是字符集?百度百科简单来说,字符(Character)是各种文字和符号的总称,包括各国家文字、标

2022-01-23 23:52:11 3638

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除