IvorySQL:兼容Oracle数据库的开源PostgreSQL

今天给大家介绍一款基于 PostgreSQL 开发、兼容 Oracle 数据库的国产开源关系型数据库管理系统:IvorySQL

IvorySQL 由商瀚高软件提供支持,主要的功能特性包括:

  • 完全兼容 PostgreSQL:IvorySQL 基于 PostgreSQL 内核开发,兼容 PostgreSQL 的语法、协议、扩展接口及生态系统工具,现有 PostgreSQL 应用可以无缝迁移。
  • 兼容 Oracle:IvorySQL 实现了双端口、双解析器、PL/iSQL 过程语言、程序包等功能,可以方便用户将 Oracle 数据库迁移到 IvorySQL。
  • 免费开源:IvorySQL 的核心代码包括兼容功能全部在开源协议下公开,没有厂商的限制。
  • 可定制化:用户可以下载代码,并按照自己的想法自定义配置构建。

接下来我们通过 Docker 方式体验一下 IvorySQL。首先,从 Docker Hub上获取 IvorySQL 镜像:

bash 复制代码
$ docker pull ivorysql/ivorysql:4.4-ubi8

然后,运行 IvorySQL:

bash 复制代码
$ docker run --name ivorysql -p 5434:5432 -e IVORYSQL_PASSWORD=your_password -d ivorysql/ivorysql:4.4-ubi8

其中,容器中的 5432 服务端口被映射为宿主机的 5434 端口;your_password 可以替换成任意想要设置的密码。

查看 IvorySQL 容器运行是否成功:

bash 复制代码
$ docker ps

CONTAINER ID   IMAGE                        COMMAND                   CREATED          STATUS          PORTS                              
          NAMES
01ec6731bcb6   ivorysql/ivorysql:4.4-ubi8   "docker-entrypoint.s..."   45 seconds ago   Up 43 seconds   1521/tcp, 5866/tcp, 0.0.0.0:5434->5432/tcp   ivorysql

然后就可以使用数据库客户端工具进行连接,例如 psql:

bash 复制代码
$ psql -d ivorysql -U ivorysql -h 127.0.0.1 -p 5434
用户 ivorysql 的口令:

psql (17beta1, 服务器 17.4)
输入 "help" 来获取帮助信息.

ivorysql=# select version();
                                                        version                                                         
------------------------------------------------------------------------------------------------------------------------ 
PostgreSQL 17.4 (IvorySQL 4.4) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-24), 64-bit
(1 行记录)

最新版本为 IvorySQL 4.4,内核基于 PostgreSQL 17.4。

如果想要使用 Oracle 兼容模式,可以通过 Ivorysql.compatible_mode 参数进行设置。

sql 复制代码
ivorysql=# SHOW ivorysql.compatible_mode;
 ivorysql.compatible_mode
--------------------------
 pg
(1 行记录)


ivorysql=# SET ivorysql.compatible_mode TO 'oracle';
SET

然后验证一个 Oracle 内置函数:

sql 复制代码
ivorysql=# select sysdate() from dual;
  sysdate
------------
 2025-03-29
(1 行记录)

以上查询中使用了 Oracle 版本的 sysdate() 函数和 dual 虚拟表。

下一步就是通过官方文档了解更多功能:

https://docs.ivorysql.org/

相关推荐
开开心心就好21 分钟前
高效报价软件,简化商铺定价流程
服务器·数据库·安全·面试·职场和发展·电脑·symfony
钢铁男儿1 小时前
PyQt5高级界而控件(容器:装载更多的控件QDockWidget)
数据库·python·qt
阿蒙Amon4 小时前
C# Linq to SQL:数据库编程的解决方案
数据库·c#·linq
互联网搬砖老肖8 小时前
运维打铁: MongoDB 数据库集群搭建与管理
运维·数据库·mongodb
典学长编程9 小时前
数据库Oracle从入门到精通!第四天(并发、锁、视图)
数据库·oracle
积跬步,慕至千里9 小时前
clickhouse数据库表和doris数据库表迁移starrocks数据库时建表注意事项总结
数据库·clickhouse
极限实验室10 小时前
搭建持久化的 INFINI Console 与 Easysearch 容器环境
数据库
白仑色10 小时前
Oracle PL/SQL 编程基础详解(从块结构到游标操作)
数据库·oracle·数据库开发·存储过程·plsql编程
程序猿小D12 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的个人财务管理系统,推荐!
java·数据库·mysql·spring·毕业论文·ssm框架·个人财务管理系统
钢铁男儿13 小时前
C# 接口(什么是接口)
java·数据库·c#