乐于分享
好东西不私藏

(文档)第121讲:Oracle兼容工具—orafce使用技巧

(文档)第121讲:Oracle兼容工具—orafce使用技巧

目标

• orafce概述

• orafce安装

• orafce应用案例

orafce概述

orafce(Oracle Functions for PostgreSQL)是一个开源项目,旨在为 PostgreSQL 数据库提供一些 Oracle 数据库中缺失或行为不同的函数。该项目通过在 PostgreSQL 中实现这些函数,帮助用户在从 Oracle 迁移到 PostgreSQL 时减少工作量,并提高生产效率。Orafce 项目已经过 Oracle 10g 的验证,并且适用于生产环境。

后面将介绍orafce的核心功能,包括日期时间处理、空值处理、数学和字符串操作以及其他兼容性函数。

orafce安装

1、下载

git clone https://github.com/orafce/orafce.git

2、源码安装(适用于所有系统)

make

make install

3、安装插件

CREATE EXTENSION orafce;

4、验证

\dx

\dx+ orafce

Orafce使用注意事项

在使用orafce时,选择一个与你的PostgreSQL版本兼容的orafce版本是关键。由于PostgreSQL和orafce都在持续开发中,每个版本都可能包含对旧版本的改进和新特性。在安装前,应查阅官方文档以确定最佳匹配版本。

在某些情况下,orafce提供的函数与PostgreSQL内建函数可能会有命名冲突。为了避免这种情况,应使用 CREATE EXTENSION 命令时明确指定带模式名字的函数名称,或者使用别名来区分。

orafce函数

orafce提供了数百个函数,模拟了Oracle数据库中的相应功能。下面表格展示了部分orafce函数和它们在Oracle中的等价物。

Oracle与postgres数据类型对比

Oracle数据类型简介

• 整数型(如NUMBER、INTEGER、FLOAT 等)

• 二进制浮点数(如BINARY_FLOAT和BINARY_DOUBLE)

• 货币值DECIMAL和NUMERIC

• 字符型CHAR、VARCHAR2、LONG等

• 日期时间型DATE和TIMESTAMP

PostgreSQL数据类型简介

• 数值型SMALLINT、INT、BIGINT、REAL、DOUBLE PRECISION

• 字符型CHAR、VARCHAR、TEXT等,其中TEXT类型可以存储无限长度的字符串,比Oracle中的LONG类型更加灵活

日期时间型DATE、TIME、TIMESTAMP

Orafce功能列表

使用oracle数据类型

cast from bigint to oracle.nvarchar2

cast from bigint to oracle.varchar2

cast from character to oracle.nvarchar2

cast from character to oracle.varchar2

使用oracle的函数

function dbms_random.normal()

function dbms_random.random()

function dbms_random.seed(integer)

orafce实现特殊日期时间处理

• 使用 TO_DATE 将字符串转换为日期类型

• SELECT Oracle.to_date(‘2023-01-01’, ‘YYYY-MM-DD’) from oracle.dual;

• 使用TO_CHAR将日期类型转换为字符串

• SELECT TO_CHAR(NOW(), ‘YYYY-mm-dd’) from oracle.dual;

• 使用ADD_MONTHS对日期进行操作

• SELECT oracle.ADD_MONTHS(NOW(), -3) FROM oracle.dual;

• 使用NEXT_DAY函数用于获取给定日期的下一个指定的星期几是几号

• SELECT oracle.NEXT_DAY(NOW(), ‘FRIDAY’) FROM oracle.dual;

orafce实现空值处理函数

• NVL函数

• select oracle.nvl(comm,0) from emp;

• NVL2函数

• SELECT comm,oracle.NVL2(comm, ‘NOT NULL’, ‘IS NULL’) FROM emp;

• 检查第一个参数是否为NULL,如果不为NULL则返回第二个参数,否则返回第三个参数。

orafce实现字符处理函数

• INSTR 函数为例,用于查找子字符串在字符串中出现的位置

• SELECT oracle.INSTR(‘PostgreSQL is fun’, ‘is’) FROM oracle.dual;

• NVL2函数

• SELECT comm,oracle.NVL2(comm, ‘NOT NULL’, ‘IS NULL’) FROM emp;

• 检查第一个参数是否为NULL,如果不为NULL则返回第二个参数,否则返回第三个参数。

orafce官方帮助网站

官方软件下载和帮助网站。

https://github.com/orafce/orafce

PostgreSQL中文社区认证

与工信部人才交流中心合作,推出PostgreSQL初/中/高级证书,证书中明确指定适用于信息技术应用创新人才岗位能力评定要求。

PostgreSQL技术大讲堂系列课程

    PostgreSQL从入门到精通,

    系列课程始于23年初,

    在周日19:30与大家分享PG技术,

    从基础的PG介绍与安装,

    到后续的调优、流复制等企业应用,

    涉及90多个知识点的介绍与演示,

    截至25年8月9日,

    系列课程已讲100期,

    欢迎继续关注PostgreSQL技术大讲堂,

    如果你也有意学习PostgreSQL,

    可以联系客服,领取相关资料。

相关阅读:

·2025年11月份工信部人才交流中心PostgreSQL能力认证证书

·工信部人才交流中心PostgreSQL能力认证证书【10月25日】

· 6月6日证书 – 工信部人才交流中心PostgreSQL中级高级认证

· 关于举办PostgreSQL数据库管理人才研修与评测班(二期)的通知

· 榜上有名!2024年工业和信息化重点领域人才能力评价支撑机构

·关于举办PostgreSQL数据库管理人才研修与评测班的通知

·工信部人才交流中心PostgreSQL中高级认证 纸质证书【9月16日】
(文档)第118讲:定时任务调度插件–pg_cron 使用技巧
(文档)第119讲:参数调优利器—pgtune 使用技巧