IvorySQL:兼容Oracle數(shù)據(jù)庫的開源PostgreSQL
今天給大家介紹一款基于 PostgreSQL 開發(fā)、兼容 Oracle 數(shù)據(jù)庫的國產(chǎn)開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng):IvorySQL。
IvorySQL 由商瀚高軟件提供支持,主要的功能特性包括:
- 完全兼容 PostgreSQL:IvorySQL 基于 PostgreSQL 內(nèi)核開發(fā),兼容 PostgreSQL 的語法、協(xié)議、擴(kuò)展接口及生態(tài)系統(tǒng)工具,現(xiàn)有 PostgreSQL 應(yīng)用可以無縫遷移。
- 兼容 Oracle:IvorySQL 實(shí)現(xiàn)了雙端口、雙解析器、PL/iSQL 過程語言、程序包等功能,可以方便用戶將 Oracle 數(shù)據(jù)庫遷移到 IvorySQL。
- 免費(fèi)開源:IvorySQL 的核心代碼包括兼容功能全部在開源協(xié)議下公開,沒有廠商的限制。
- 可定制化:用戶可以下載代碼,并按照自己的想法自定義配置構(gòu)建。
接下來我們通過 Docker 方式體驗(yàn)一下 IvorySQL。首先,從 Docker Hub上獲取 IvorySQL 鏡像:
$ docker pull ivorysql/ivorysql:4.4-ubi8
然后,運(yùn)行 IvorySQL:
$ docker run --name ivorysql -p 5434:5432 -e IVORYSQL_PASSWORD=your_password -d ivorysql/ivorysql:4.4-ubi8
其中,容器中的 5432 服務(wù)端口被映射為宿主機(jī)的 5434 端口;your_password 可以替換成任意想要設(shè)置的密碼。
查看 IvorySQL 容器運(yùn)行是否成功:
$ 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
然后就可以使用數(shù)據(jù)庫客戶端工具進(jìn)行連接,例如 psql:
$ psql -d ivorysql -U ivorysql -h 127.0.0.1 -p 5434
用戶 ivorysql 的口令:
psql (17beta1, 服務(wù)器 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,內(nèi)核基于 PostgreSQL 17.4。
如果想要使用 Oracle 兼容模式,可以通過 Ivorysql.compatible_mode 參數(shù)進(jìn)行設(shè)置。
ivorysql=# SHOW ivorysql.compatible_mode;
ivorysql.compatible_mode
--------------------------
pg
(1 行記錄)
ivorysql=# SET ivorysql.compatible_mode TO 'oracle';
SET
然后驗(yàn)證一個 Oracle 內(nèi)置函數(shù):
ivorysql=# select sysdate() from dual;
sysdate
------------
2025-03-29
(1 行記錄)
以上查詢中使用了 Oracle 版本的 sysdate() 函數(shù)和 dual 虛擬表。
下一步就是通過官方文檔了解更多功能: