合 PG插件之oracle_fdw可以让PG直接访问Oracle
Tags: PG插件DBLinkoracle_fdw
简介
PG中的file_fdw、postgres_fdw和dblink
github:https://github.com/laurenz/oracle_fdw
基于FDW(Foreign Data Wrappers)插件可以如本地表一般在PG里访问其他异构数据库的表,下面再次记录并分享下oracle_fdw的配置使用过程,其他fdw如tds_fdw(访问sqlserver),mysql_fdw(访问mysql)类似。
oracle_fdw是PostgreSQL外部表插件,可以读取Oracle数据库的数据,也非常方便地实现PostgreSQL与Oracle数据同步。Oracle_fdw是PG的一个外部数据接口,可以使PostgreSQL轻松跨库操作Oracle。
Oracle_fdw的作用有以下两点:
- PG可以跨库增删改查Oracle中的表,可以查询Oracle的视图,可以使PG中的表和Oracle中表/视图作Join查询,类似dblink的功能。
- 快速将Oralce表迁移进入PostgreSQL。
安装
oracle_fdw 的编译依赖系统中需要有pg_config和Oracle客户端的环境。
Oracle客户端环境
参考:https://www.dbaup.com/oraclekehuduananzhuang.html
从oracle官网下载 ‘Basic’ and ‘SDK’,sqlplus和tools可选:
下载网址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-basic-21.5.0.0.0-1.x86_64.rpm wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-devel-21.5.0.0.0-1.x86_64.rpm wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-sqlplus-21.5.0.0.0-1.x86_64.rpm wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-tools-21.5.0.0.0-1.x86_64.rpm rpm -ivh *.rpm mkdir -p /usr/lib/oracle/21/client64/network/admin cat >> /root/.bashrc << "EOF" export ORACLE_HOME=/usr/lib/oracle/21/client64 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH export TNS_ADMIN=$ORACLE_HOME/network/admin EOF source /root/.bashrc cat >> /etc/profile << "EOF" export ORACLE_HOME=/usr/lib/oracle/21/client64 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH export TNS_ADMIN=$ORACLE_HOME/network/admin EOF source /etc/profile |
oracle_fdw下载安装
可以github(https://github.com/laurenz/oracle_fdw),也可以:https://pgxn.org/dist/oracle_fdw/
1 2 3 4 5 | wget https://codeload.github.com/laurenz/oracle_fdw/zip/refs/tags/ORACLE_FDW_2_4_0 -O oracle_fdw-2_4_0.zip wget https://api.pgxn.org/dist/oracle_fdw/2.4.0/oracle_fdw-2.4.0.zip unzip oracle_fdw-2_4_0.zip cd ORACLE_FDW_2_4_0 make && make install |
操作步骤
新建oracle_fdw插件。命令如下:
123456CREATE EXTENSION oracle_fdw;postgres=# select oracle_diag();oracle_diag-------------------------------------------------------------oracle_fdw 2.4.0, PostgreSQL 12.9, Oracle client 21.5.0.0.0(1 row)创建Oracle数据库映射。有如下两种命令:
123456789101112CREATE SERVER <SERVER名称>FOREIGN DATA WRAPPER oracle_fdwOPTIONS (dbserver '//<Oracle数据库的内网连接地址>:<Oracle数据库的内网连接端口>/<数据库名>');CREATE SERVER oradbFOREIGN DATA WRAPPER oracle_fdwOPTIONS (host '<Oracle数据库的内网连接地址>', port '<Oracle数据库的内网连接端口>', dbname '<数据库名>');create server ora21cforeign data wrapper oracle_fdwoptions(dbserver '//172.17.0.4:1521/LHRCDB');创建用户映射。命令如下:
123CREATE USER MAPPINGFOR <PostgreSQL用户名> SERVER <映射名>OPTIONS (user '<Oracle数据库用户名>', password '<Oracle数据库用户密码>');本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!