作者
digoal
日期
2018-11-10
标签
PostgreSQL , Greenplum , gpdb , oracle 兼容 , orafce , orafunc
背景
orafce插件没有适配gpdb,安装时会有一些小问题。可以修改一下安装成功(本文修改方法并不优雅)。
例子
假设gpdb安装在/usr/local/gpdb目录
安装orafce插件软件:
git clone https://github.com/orafce/orafce
cd orafce/
export PATH=/usr/local/gpdb/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/gpdb/lib:/usr/local/gpdb/lib/postgresql:$LD_LIBRARY_PATH
USE_PGXS=1 make
USE_PGXS=1 make install
orafce插件控制文件如下
```
orafce.control
orafce extension
comment = 'Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS'
default_version = '3.7'
module_pathname = '$libdir/orafce'
relocatable = false
```
修改orafce插件
cd /usr/local/gpdb/share/postgresql/extension/
vi orafce--3.7.sql
1、
```
首行增加:
set allow_system_table_mods =on;
```
2、
```
替换
MODULE_PATHNAME
为
$libdir/orafce
或
/usr/local/gpdb/lib/postgresql/orafce.so
```
3、
```
替换
decode(
为
"decode"(
```
截取其中一个已替换的
CREATE FUNCTION "decode"(anyelement, anyelement, text)
RETURNS text
AS '/usr/local/gpdb/lib/postgresql/orafce.so', 'ora_decode'
LANGUAGE C IMMUTABLE;
最后,将其拷贝到所有SEGMENT和master standby节点。
创建orafce插件:
```
[gpadmin@pg11-test ~]$ psql
psql (9.4beta1)
Type "help" for help.
postgres=# create extension orafce ;
CREATE EXTENSION
```
PostgreSQL 许愿链接
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.
9.9元购买3个月阿里云RDS PostgreSQL实例
PostgreSQL 解决方案集合
德哥 / digoal's github - 公益是一辈子的事.





