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

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

在这里插入图片描述

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

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

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

$ docker pull ivorysql/ivorysql:4.4-ubi8

然后,运行 IvorySQL:

$ docker run --name ivorysql -p 5434:5432 -e IVORYSQL_PASSWORD=your_password -d ivorysql/ivorysql:4.4-ubi8

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

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

$ docker psCONTAINER 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:

$ 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 参数进行设置。

ivorysql=# SHOW ivorysql.compatible_mode;ivorysql.compatible_mode
--------------------------pg
(1 行记录)ivorysql=# SET ivorysql.compatible_mode TO 'oracle';
SET

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

ivorysql=# select sysdate() from dual;sysdate
------------2025-03-29
(1 行记录)

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

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

https://docs.ivorysql.org/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派超全系列文档--(13)如何使用raspi-config工具其二

如何使用raspi-config工具其二 raspi-configPerformance optionsOverclockGPU memoryOverlay file systemFan Localisation optionsLocaleTime zoneKeyboardWLAN country Advanced optionsExpand filesystemNetwork interface namesNetwork proxy settingsBoot orderBootloader…

QT音乐播放器(1):数据库保存歌曲

实现功能:用数据库保存本地导入和在线搜索的歌曲记录 目录 一. 保存本地添加的歌曲 1. 使用QSettings (1)在构造函数中,创建对象。 (2)在导入音乐槽函数中,保存新添加的文件路径&#xff0c…

自动化发布工具CI/CD实践Jenkins常用工具和插件的使用

1、安装常用工具 名称版本备注jdkjava8代码打包所需git1.8.3.1maven3.6.3注意配置私服内容nvm0.39.3多Node.js环境管理工具Node.jsv14.18.0 / v16.17.1包管理工具yarn1.22.15包管理工具 1.1 安装jdk Jenkins 需要使用java11 及以上,但是代码打包依赖jdk8&#xff…

shared_ptr和 weak_ptr的详细介绍

关于 shared_ptr 和 weak_ptr 的详细介绍及使用示例: 1. shared_ptr(共享所有权智能指针) 核心特性 引用计数:记录当前有多少个 shared_ptr 共享同一个对象。自动释放:当引用计数归零时,自动释放对象内存…

Spring AI MCP 架构详解

Spring AI MCP 架构详解 1.什么是MCP? MCP 是一种开放协议,它对应用程序向大语言模型(LLMs)提供上下文信息的方式进行了标准化。可以把 MCP 想象成人工智能应用程序的 USB-C 接口。就像 USB-C 为将设备连接到各种外围设备和配件提供了一种…

腾讯系AI应用,可以生视频,3D模型...

以下注册手机后就可以使用了。 腾讯智影 智能抹除-在线去水印去字幕-抹除水印字幕-腾讯智影 混元(文字,图片生成3D) 腾讯混元3D 混元视频(文字生成视频,可惜右下角有文字) https://video.hunyuan.tencen…

数据结构(并查集,图)

并查集 练习版 class UnionFindSet { public:void swap(int* a, int* b){int tmp *a;*a *b;*b tmp;}UnionFindSet(size_t size):_ufs(size,-1){}int UnionFind(int x){}void Union(int x1, int x2){}//长分支改为相同节点int FindRoot(int x){}bool InSet(int x1, int x2)…

数据结构:探秘AVL树

本节重点 理解AVL树的概念掌握AVL树正确的插入方法利用_parent指针正确更新平衡因子掌握并理解四种旋转方式:左单旋,右单旋,左右双旋,右左双旋 一、AVL树的概念 AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis&…

电源系统的热设计与热管理--以反激式充电器为例

前言 反激电源常用于各种电子设备中,比如充电器、适配器等,它们通过变压器进行能量转换。高温环境可能对电子元件造成影响,特别是像MOSFET、二极管、变压器这样的关键部件,导致效率变低,甚至可能导致功能失效。还有安…

linux课程学习二——缓存

一.文件io与标准io的一个区别 遇到死循环可以ctrl c结束进程 使用printf输出,输出没有问题 用wirte输出,参数1,可以理解为上面介绍的linux标准文件描述符的1(STDOUT)标准输出,我们加上一个死循环while&…

Kafka中的消息如何分配给不同的消费者?

大家好,我是锋哥。今天分享关于【Kafka中的消息如何分配给不同的消费者?】面试题。希望对大家有帮助; Kafka中的消息如何分配给不同的消费者? 在 Kafka 中,消息是通过 主题(Topic) 进行组织的&…

Android的安全问题 - 在 Android 源码的 system/sepolicy 目录中,区分 public、private 和 vendor的目的

参考:Google文档 在 Android 8.0 及更高版本中自定义 SEPolicy 在 Android 源码的 system/sepolicy 目录中,区分 public、private 和 vendor 是为了模块化 SELinux 策略,并明确不同部分的访问权限和接口边界。这种设计主要基于以下原因&…

Java NIO之FileChannel 详解

关键点说明 文件打开选项: StandardOpenOption.CREATE - 文件不存在时创建 StandardOpenOption.READ/WRITE - 读写权限 StandardOpenOption.APPEND - 追加模式 StandardOpenOption.TRUNCATE_EXISTING - 清空已存在文件 缓冲区操作: ByteBuffer.wrap…

stock-pandas,一个易用的talib的替代开源库。

原创内容第841篇,专注智能量化投资、个人成长与财富自由。 介绍一个ta-lib的平替——我们来实现一下,最高价突破布林带上轨,和最低价突破布林带下轨的可视化效果: cross_up_upper stock[high].copy()# cross_up_upper 最高价突破…

JVM 面经

1、什么是 JVM? JVM 就是 Java 虚拟机,它是 Java 实现跨平台的基石。程序运行之前,需要先通过编译器将 Java 源代码文件编译成 Java 字节码文件;程序运行时,JVM 会对字节码文件进行逐行解释,翻译成机器码指令&#x…

【JavaScript】合体期功法——DOM(一)

目录 DOMWeb API 基本概念作用和分类 什么是 DOMDOM 树DOM 对象 获取 DOM 元素根据 CSS 选择器来获取 DOM 元素选择匹配的第一个元素选择匹配的多个元素 其他获取 DOM 元素方法 修改元素的内容对象.innerText 属性对象.innerHTML 属性案例:年会抽奖 修改元素属性修改…

GAMMA数据处理(十)

今天向别人请教了一个问题,刚无意中搜索到了一模一样的问题 不知道这个怎么解决... ok 解决了 有一个GAMMA的命令可转换 但是很奇怪 完全对不上 转换出来的行列号 不知道为啥 再试试 是因为经纬度坐标的小数点位数 de as

Java入门知识总结——章节(二)

ps:本章主要讲数组、二维数组、变量 一、数组 数组是一个数据容器,可用来存储一批同类型的数据 🔑:注意 类也可以是一个类的数组 public class Main {public static class Student {String name;int age; // 移除 unsignedint…

动态IP:网络世界的“变色龙”如何改变你的在线体验?

你知道吗?有时候我觉得动态IP就像是网络世界里的“变色龙”。它不像静态IP那样一成不变,而是随时在变化,像是一个永远在换衣服的演员。你永远不知道它下一秒会变成什么样子,但正是这种不确定性,让它变得特别有趣。想象…

从24GHz到71GHz:Sivers半导体的广泛频率范围5G毫米波产品解析

在5G技术的浪潮中,Sivers半导体推出了创新的毫米波无线产品,为通信行业带来高效、可靠的解决方案。这些产品支持从24GHz到71GHz的频率,覆盖许可与非许可频段,适应高速、低延迟的通信场景。 5G通信频段的一点事儿及Sivers毫米波射频…