開源專案
IvorySQL/IvorySQL avatar
IvorySQL/IvorySQL

IvorySQL:在 PostgreSQL 上保留 Oracle 相容路徑

開源 Oracle 相容 PostgreSQL。 IvorySQL 的亮點之一是 PL/iSQL 流程語言,支援 Oracle 的 PL/SQL 語法和 Oracle 風格的套件。

1,062 個 Star223 個 ForkCApache-2.0

秒懂

它是什麼?
IvorySQL 是開源且 Oracle 相容的 PostgreSQL 發行版,README 特別介紹 PL/iSQL 與 Oracle 風格 Packages。
適合誰用?
適合需要研究 PL/iSQL、Oracle style Packages、PostgreSQL 並能自行維護測試環境的開發者,不適合把它直接視為完整商用方案的人。先按 README 使用 PL/iSQL 做最小流程,核對輸入、輸出、權限與失敗行為,再決定是否納入自己的系統。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 2 天前。
用什麼語言寫的?
主要是 C(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月19日)與我們的分析,不構成法律意見。

開源專案深度解析

問題邊界與閱讀方式:PL/iSQL

IvorySQL 的定位不是把 PostgreSQL 換一個名稱,而是在 PostgreSQL 基礎上處理 Oracle 相容需求。對已有 Oracle 程式碼的團隊,價值在於能把相容語法與既有 PostgreSQL 生態放進同一個評估範圍。

在 ivorysql-ivorysql-deep-analysis 的第 1 個觀察點,真正可核對的是 PL/iSQL、Oracle style Packages、PostgreSQL。README 能確認功能範圍、入口與部分限制,但沒有提供完整效能基準、長期維護承諾或所有環境的相容性資料。這代表讀者應把命令輸出、檔案變更、錯誤訊息與測試結果留下來,將示例的教學價值和正式產品的可靠性分開判讀。

在這一節應特別檢查 PL/iSQL 與前後元件的責任是否一致。若實際環境出現版本、權限或資料格式差異,先記錄差異再修改範例,才不會把偶然能跑通的結果誤判成穩定介面。 這是 ivorysql-ivorysql-deep-analysis 第 1 節的具體檢查。

在 ivorysql-ivorysql-deep-analysis 中,這個章節還要把實際版本、執行身分、輸入資料與錯誤輸出分開記錄。若結果只在單一機器或單一次啟動成立,不能直接推論成可部署能力;應再重跑同一個 問題邊界與閱讀方式:PL/iSQL 流程,確認狀態是否可重現。這項記錄能指出問題是在依賴、資料、權限還是介面,而不是把差異歸咎於環境。

入口與組成:Oracle style Packages

README 將 PL/iSQL 列為亮點,目標是支援 Oracle PL/SQL 語法與 Oracle style Packages。這些詞指向程序語言與封裝組織方式,卻不等於所有 Oracle 擴充都已相容,遷移清單仍須逐項驗證。

在 ivorysql-ivorysql-deep-analysis 的第 2 個觀察點,真正可核對的是 PL/iSQL、Oracle style Packages、PostgreSQL。README 能確認功能範圍、入口與部分限制,但沒有提供完整效能基準、長期維護承諾或所有環境的相容性資料。這代表讀者應把命令輸出、檔案變更、錯誤訊息與測試結果留下來,將示例的教學價值和正式產品的可靠性分開判讀。

在這一節應特別檢查 Oracle style Packages 與前後元件的責任是否一致。若實際環境出現版本、權限或資料格式差異,先記錄差異再修改範例,才不會把偶然能跑通的結果誤判成穩定介面。 這是 ivorysql-ivorysql-deep-analysis 第 2 節的具體檢查。

在 ivorysql-ivorysql-deep-analysis 中,這個章節還要把實際版本、執行身分、輸入資料與錯誤輸出分開記錄。若結果只在單一機器或單一次啟動成立,不能直接推論成可部署能力;應再重跑同一個 入口與組成:Oracle style Packages 流程,確認狀態是否可重現。這項記錄能指出問題是在依賴、資料、權限還是介面,而不是把差異歸咎於環境。

核心資料流:PostgreSQL

作為資料庫專案,建置與回歸測試比單看相容宣稱更關鍵。README 列有 GitHub Actions 的 build、contrib regression 與 Meson build 工作流程,這些名稱可協助讀者理解專案如何檢查變更。

在 ivorysql-ivorysql-deep-analysis 的第 3 個觀察點,真正可核對的是 PL/iSQL、Oracle style Packages、PostgreSQL。README 能確認功能範圍、入口與部分限制,但沒有提供完整效能基準、長期維護承諾或所有環境的相容性資料。這代表讀者應把命令輸出、檔案變更、錯誤訊息與測試結果留下來,將示例的教學價值和正式產品的可靠性分開判讀。

在這一節應特別檢查 PostgreSQL 與前後元件的責任是否一致。若實際環境出現版本、權限或資料格式差異,先記錄差異再修改範例,才不會把偶然能跑通的結果誤判成穩定介面。 這是 ivorysql-ivorysql-deep-analysis 第 3 節的具體檢查。

在 ivorysql-ivorysql-deep-analysis 中,這個章節還要把實際版本、執行身分、輸入資料與錯誤輸出分開記錄。若結果只在單一機器或單一次啟動成立,不能直接推論成可部署能力;應再重跑同一個 核心資料流:PostgreSQL 流程,確認狀態是否可重現。這項記錄能指出問題是在依賴、資料、權限還是介面,而不是把差異歸咎於環境。

實作中的取捨:PL/iSQL

PostgreSQL 底層意味著既有工具、SQL 習慣與管理方式可能仍有參考價值,但 Oracle 相容層會帶來語法、型別、例外與套件行為的差異。README 沒有提供完整差異矩陣或遷移效能數據。

在 ivorysql-ivorysql-deep-analysis 的第 4 個觀察點,真正可核對的是 PL/iSQL、Oracle style Packages、PostgreSQL。README 能確認功能範圍、入口與部分限制,但沒有提供完整效能基準、長期維護承諾或所有環境的相容性資料。這代表讀者應把命令輸出、檔案變更、錯誤訊息與測試結果留下來,將示例的教學價值和正式產品的可靠性分開判讀。

在這一節應特別檢查 PL/iSQL 與前後元件的責任是否一致。若實際環境出現版本、權限或資料格式差異,先記錄差異再修改範例,才不會把偶然能跑通的結果誤判成穩定介面。 這是 ivorysql-ivorysql-deep-analysis 第 4 節的具體檢查。

在 ivorysql-ivorysql-deep-analysis 中,這個章節還要把實際版本、執行身分、輸入資料與錯誤輸出分開記錄。若結果只在單一機器或單一次啟動成立,不能直接推論成可部署能力;應再重跑同一個 實作中的取捨:PL/iSQL 流程,確認狀態是否可重現。這項記錄能指出問題是在依賴、資料、權限還是介面,而不是把差異歸咎於環境。

授權與未說明之處:Oracle style Packages

Apache-2.0 對使用與修改通常較寬鬆,散布衍生版本仍應保留授權與通知內容。資料庫本身的備份、升級與相容承諾不會因開源授權自動產生,需由採用方自行建立。

在 ivorysql-ivorysql-deep-analysis 的第 5 個觀察點,真正可核對的是 PL/iSQL、Oracle style Packages、PostgreSQL。README 能確認功能範圍、入口與部分限制,但沒有提供完整效能基準、長期維護承諾或所有環境的相容性資料。這代表讀者應把命令輸出、檔案變更、錯誤訊息與測試結果留下來,將示例的教學價值和正式產品的可靠性分開判讀。

在這一節應特別檢查 Oracle style Packages 與前後元件的責任是否一致。若實際環境出現版本、權限或資料格式差異,先記錄差異再修改範例,才不會把偶然能跑通的結果誤判成穩定介面。 這是 ivorysql-ivorysql-deep-analysis 第 5 節的具體檢查。

在 ivorysql-ivorysql-deep-analysis 中,這個章節還要把實際版本、執行身分、輸入資料與錯誤輸出分開記錄。若結果只在單一機器或單一次啟動成立,不能直接推論成可部署能力;應再重跑同一個 授權與未說明之處:Oracle style Packages 流程,確認狀態是否可重現。這項記錄能指出問題是在依賴、資料、權限還是介面,而不是把差異歸咎於環境。

採用前的專案驗證:PostgreSQL

先用目標 Oracle schema 製作最小測試庫,逐一執行含 PL/iSQL 與 Packages 的程序,再跑倉庫既有的 `contrib regression` 與 Meson build 工作流程。把錯誤類型、結果差異與查詢計畫存下來,才能判斷相容層是否涵蓋自己的應用,而不是只依 README 的定位下結論。

在 ivorysql-ivorysql-deep-analysis 的第 6 個觀察點,真正可核對的是 PL/iSQL、Oracle style Packages、PostgreSQL。README 能確認功能範圍、入口與部分限制,但沒有提供完整效能基準、長期維護承諾或所有環境的相容性資料。這代表讀者應把命令輸出、檔案變更、錯誤訊息與測試結果留下來,將示例的教學價值和正式產品的可靠性分開判讀。

在這一節應特別檢查 PostgreSQL 與前後元件的責任是否一致。若實際環境出現版本、權限或資料格式差異,先記錄差異再修改範例,才不會把偶然能跑通的結果誤判成穩定介面。 這是 ivorysql-ivorysql-deep-analysis 第 6 節的具體檢查。

在 ivorysql-ivorysql-deep-analysis 中,這個章節還要把實際版本、執行身分、輸入資料與錯誤輸出分開記錄。若結果只在單一機器或單一次啟動成立,不能直接推論成可部署能力;應再重跑同一個 採用前的專案驗證:PostgreSQL 流程,確認狀態是否可重現。這項記錄能指出問題是在依賴、資料、權限還是介面,而不是把差異歸咎於環境。

編輯結論

適合需要研究 PL/iSQL、Oracle style Packages、PostgreSQL 並能自行維護測試環境的開發者,不適合把它直接視為完整商用方案的人。先按 README 使用 PL/iSQL 做最小流程,核對輸入、輸出、權限與失敗行為,再決定是否納入自己的系統。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記