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)模式模型。