【金仓数据库产品体验官】KingbaseES-ORACLE兼容版快速体验

不知不觉中,社区活动之金仓数据库产品体验官第三期开始了,本次在介绍产品体验的同时也希望感兴趣的朋友们一起来参加:

关于活动发起者:金仓社区

金仓社区通常不是一个单一的论坛,而是一个由多个平台和渠道组成的综合体,主要包含以下几大部分:

1、问答中心:用户遇到问题时可以在此提问,由金仓的技术支持工程师、资深用户或社区专家进行解答。这是解决问题、交流故障排除经验最重要的地方。

2、知识库/技术文章:包含大量的官方技术文档、白皮书、最佳实践、迁移案例、性能优化技巧等高质量内容,是系统学习金仓数据库的宝库。

3、产品资料下载:提供最新版本的数据库安装包、驱动(JDBC/ODBC等)、迁移工具、管理工具等资源的下载。

活动公告:发布线上/线下的技术沙龙、培训、大赛、技术分享直播等活动信息。

附一张社区首页截图:

体验官活动参加地址:(https://bbs.kingbase.com.cn/forumDetail?articleId=8a3fc929b40be1e5b6ad5bca3c9da3f9)我们继续来看下金仓数据库的ORACLE兼容模式:

金仓数据库(KingbaseES)是北京人大金仓信息技术股份有限公司推出的国产大型通用关系型数据库,其 Oracle 兼容版 是其最重要的产品形态之一,核心目标是为使用 Oracle 数据库的用户提供一套平滑、低风险、高性能的国产化迁移替代方案。

该版本并非简单的"仿制",而是基于深度兼容的理念进行设计和开发。

其核心思想是:让原有的 Oracle 应用系统,能够以最小的修改代价(甚至零修改)迁移到金仓数据库上运行,从而极大地降低数据库国产化替代的技术风险、成本和时间周期。

本文将深入探讨金仓数据库对ORACLE的兼容特性,通过实际测试体验其兼容程度,为考虑数据库迁移或国产化替代的企业提供参考。话不多说,我们接下来开启体验之旅:

开启体验之旅

首先进行下载ORACLE 兼容版本安装包:

下载地址:(https://www.kingbase.com.cn/download.html)

PS:下载安装包的同时,记得下载授权文件哦。

一、安装部署KingbaseES

查看Kingbase支持的OS版本:

KingbaseES支持各种主流的Linux操作系统64位发行版本,包括CentOS、中标麒麟、银河麒麟、统信UOS、Deepin、凝思、中科方德、欧拉等操作系统。

本次使用OS版本及配置:

1、新建kingbase用户

安装前必须创建 kingbase 用户,禁止使用 root 用户安装数据库。

创建用户所在的组:

groupadd dinstall -g 2001

创建用户:

useradd -G dinstall -m -d /home/kingbase -s /bin/bash -u 2001 kingbase

修改用户密码:

passwd kingbase

2、配置内核参数

cat >> /etc/sysctl.conf<<OEF

fs.aio-max-nr= 1048576

fs.file-max= 6815744

kernel.shmall= 2097152

kernel.shmmax= 4294967295

kernel.shmmni= 4096

kernel.sem= 250 32000 100 128

net.ipv4.ip_local_port_range= 9000 65500

net.core.rmem_default= 262144

net.core.rmem_max= 4194304

net.core.wmem_default= 262144

net.core.wmem_max= 1048576

EOF

#生效配置

sysctl -p

3、修改文件打开最大数在 Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响。

#设置永久生效:

vi /etc/security/limits.conf

*表示所有用户,可只设置root和kingbase用户

* soft nofile 65536

注意:设置nofile的hard limit不能大于/proc/sys/fs/nr_open,否则注销后将无法正常登陆

* hard nofile 65535

* soft nproc 65536

* hard nproc 65535

unlimited表示无限制

* soft core unlimited

* hard core unlimited

登录Kingbase用户验证是否生效:

4、RemoveIPC参数

systemd-logind服务中引入的一个特性,是当一个用户退出系统后,会删除所有有关的IPC对象。该特性由/etc/systemd/logind.conf文件中的RemoveIPC参数控制。某些操作系统会默认打开,会造成程序信号丢失等问题(只有redhat7及以上和一些特殊的国产Linux的版本需要修改,改之前可先查看此项是否为默认yes)。设置RemoveIPC=no。 设置后重启服务:

systemctl daemon-reload

systemctl restart systemd-logind.service

5、创建目录并授权

mkdir /data/kdb

chown -R kingbase:kingbase /data/kdb

6、设置环境变量:

cat >>~/.bash_profile<<EOF

export PATH=/data/kdb/V9/Server/bin:$PATH

export KINGBASE_DATA=/data/kdb/V9/data

EOF

二、安装部署KingbaseES ORACLE兼容版

1、挂载镜像

切换到 root 用户,将 KingbaseES 数据库的 iso 安装包保存在任意位置

cd /data/soft

mount KingbaseES_V009R002C012B0003_Lin64_install.iso /mnt

2、命令行安装

切换至 kingbase 用户下,在 /mnt 目录下使用命令行安装数据库程序,依次执行以下命令安装 DM 数据库

su - kingbase

cd /mnt

开始进行一步步回车安装,中间篇幅太长,就先省略了。。。

看到Complate,表示安装已完成。

4、将KES服务注册为Linux系统服务

/data/kdb/install/script/root.sh

注册到Linux系统 进行使服务可以开机自启

登录验证连接:

三、开始进行功能体验

  1. 测试 yminterval (年月至月间隔)和 dsinterval (天至秒间隔)数据类型

官方文档介绍:

开始测试:

测试间隔类型的运算

如上可以得出KingbaseES成功支持了yminterval和dsinterval数据类型。

  1. 虚拟列测试

虚拟列(Virtual Column)是一种特殊的列,其值是根据其他列的值通过表达式计算得到的,而不直接存储在数据库中。虚拟列可以节省存储空间、保持数据一致性,并简化查询操作。

通过上边得结果可以看到,更新了基础列之后,虚拟列也会自动更新。PS:官方对GENERATED ALWAYS AS ..... STORED语法解释

  1. 伪列测试(使用ROWNUM)

说明伪列测试也是正常支持的。

  1. 分区表及interval自动分裂

说明Kingbase oracle兼容模式支持分区表以及interval自动分裂。

5、INTO子句与USING子句测试

创建测试基础表:

可以得到正常的返回说明是正常支持的。

6、RETURNING ... INTO 语句,及EXECUTE IMMEDIATE

达到预期效果,说明是正常支持的。

7、函数及数组测试

达到预期效果,说明是正常支持的。

8、LATERAL连接测试

达到预期效果,说明是正常支持的。

9、使用ARRAY_AGG和循环批量处理

达到预期效果,说明是正常支持的。

10、临时表测试

达到预期效果,说明是正常支持的。

总结

经过如上体验我们可以得知:

金仓数据库Oracle兼容模式基础语法支持良好:大多数基础DML,DDL语句与Oracle高度兼容,

同时PL/SQL高度兼容性(存储过程和函数: PL/SQL语法基本兼容),带来了非常棒的体验,

常见数据类型和基础函数能够正常工作,提供了非常好的兼容性,大大降低了从Oracle迁移至金仓数据库的技术门槛,

平滑迁移:极大减少了代码改写量,缩短了迁移周期,降低了项目风险。

期待金仓对Oracle的兼容性将进一步提升,为数据库国产化替代提供更加平滑的迁移路径。

相关推荐
数据库知识分享者小北8 分钟前
AI Agent的未来之争:任务规划,该由人主导还是AI自主?——阿里云RDS AI助手的最佳实践
数据库·阿里云·数据库rds
凸头14 分钟前
MySQL 的四种 Binlog 日志处理工具:Canal、Maxwell、Databus和 阿里云 DTS
数据库·mysql·阿里云
码界奇点1 小时前
MongoDB 排序操作详解sort方法使用指南
数据库·mongodb·性能优化
武子康1 小时前
Java-155 MongoDB Spring Boot 连接实战 | Template vs Repository(含索引与常见坑)
java·数据库·spring boot·后端·mongodb·系统架构·nosql
武子康1 小时前
Java-157 MongoDB 存储引擎 WiredTiger vs InMemory:何时用、怎么配、如何验证 mongod.conf
java·数据库·sql·mongodb·性能优化·系统架构·nosql
野犬寒鸦1 小时前
从零起步学习MySQL || 第八章:索引深入理解及高级运用(结合常见优化问题讲解)
java·服务器·数据库·后端·mysql
奥尔特星云大使1 小时前
Docker 拉取 MySQL 5.7 镜像、启动容器并进入 MySQL
数据库·mysql·docker·容器
低音钢琴3 小时前
【从零开始构建性能测试体系-08】如何诊断性能瓶颈:从服务器到数据库的全方位分析
服务器·数据库·php
蜡笔小炘3 小时前
SQL sever数据库--第三次作业
数据库·sql·oracle