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.pswp.cn/bicheng/74931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74931.shtml
英文地址,請注明出處:http://en.pswp.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毫米波射頻…