1前言
1.1 概述
近日,公司的一套使用 postgresql 數據庫的應用軟件要兼容oracle。本文系統性地整理了PostgreSQL 和 Oracle的一些差異點,和應用程序中的改動點。
1.2 軟件介紹
PostgreSQL |
PostgreSQL是一個功能強大的開源對象關系數據庫系統,擁有30多年的積極開發經驗,在可靠性,功能強大和性能方面贏得了極高的聲譽。 |
oracle數據庫 |
甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處於領先地位的產品。系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的、適應高吞吐量的數據庫方案。 |
1.3 約定
以下是文中的sql代碼中,一些符號的含義:
方括弧([ 和 ]) :表示可選的部分。如 [ a ]
花括弧({ 和 }) 和豎條(|): 表示你必須選取其中一個。如 { a | b }
連續點(...) :表示前面的元素可以重復。[a,...]
2 數據庫結構的改造
在遷移之前,我們需要了解兩種數據庫的邏輯結構的差異。
在PostgreSQL 中,一個數據庫服務中可以創建多個數據庫,每個數據庫都有一個默認的模式“public”,用於存放用戶數據;而在 Oracle 中,一個數據庫服務中只能創建一個數據庫,這個數據庫中每個用戶都有與自己的同名的模式,存放他的數據。
PostgreSQL 11 |
Oracle 19c |
同一服務器,同一端口上,可以創建多個數據庫 |
同一服務器,同一端口上,只能創建一個數據庫 |
1. 每個數據庫中有默認的模式 public,存放用戶數據; 2. 有模式 information_schema和pg_catalog,存放系統數據; 3. public,information_schema 和 pg_catalog 三個模式默認所有用戶均可訪問; 4.用戶可創建並訪問新的模式 |
1. 數據庫中每個用戶都有與自己的同名的模式,存放他的數據; 2. 有模式 SYS,存放系統數據; 3. 用戶默認可訪問自己的同名模式以及SYS模式; 4. 用戶可創建並訪問新的模式 |
因此,在PostgrSQL中可以使用多數據庫(multi-database)模型,也可以使用多(multi-schema)模式模型。在Oracle 中只能使用多(multi-schema)模式模型。