使用oraclefdw让PostgreSQL访问远程Oracle数据库(oracle_fdw使用)
使用oracle_fdw让PostgreSQL访问远程Oracle数据库
在企业中,数据存储在不同的数据库中。有时您需要从 PostgreSQL 访问 Oracle 数据库以获取数据。 在这种情况下,可以使用 Oracle 适配器 oracle_fdw。 Oracle_fdw 既可用于远程 Oracle 数据库,也可用于本地安装的 Oracle 实例。 这篇文章将介绍如何使用 PostgreSQL 和 oracle_fdw 访问远程 Oracle 数据库。
在开始之前,您需要以下内容:
1. 安装 PostgreSQL 数据库。
2. 安装 Oracle_fdw 扩展。
3. PostgreSQL 和 Oracle 之间建立通信。
安装 PostgreSQL 数据库
在您的计算机上安装 PostgreSQL 数据库。 您可以从以下链接下载最新版本的 PostgreSQL:https://www.postgresql.org/download/
安装 Oracle_fdw 扩展
接下来,下载和安装 Oracle_fdw 扩展,以允许 PostgreSQL 访问远程 Oracle 数据库。 在 CentOS 上,您可以使用以下命令下载和安装 Oracle_fdw:
yum install postgresql12-contrib
yum install postgresql12-orafceyum install oracle_fdw
更多操作系统安装手册请参考:https://oracle-fdw.readthedocs.io/en/latest/installation.html
安装完成后,我们需要在 PostgreSQL 数据库中启用 Oracle_fdw 扩展。 运行以下命令:
psql
CREATE EXTENSION oracle_fdw;
在这里,请确保先进入您的 PostgreSQL 数据库。
PostgreSQL 和 Oracle 之间建立通信
在 PostgreSQL 中访问 Oracle 数据库,需要在两个数据库之间建立通信。 这个通信由 Oracle 的 tnsnames.ora 文件提供。 此文件位于 $ORACLE_HOME/network/admin 目录下。
我们可以使用以下步骤创建 tnsnames.ora 文件:
1. 进入 $ORACLE_HOME/network/admin 目录。
2. 创建 tnsnames.ora 文件。 文件结构应类似于以下示例:
ORACLE_ALIAS =
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.1)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = ORACLE_SERVICE_NAME) )
)
在这里,请使用实际的远程数据库 IP 地址和端口号。 还要将 ORACLE_SERVICE_NAME 替换为实际的 Oracle 数据库服务名称。
在创建 tnsnames.ora 文件后,您需要为 PostgreSQL 数据库配置 dblink。 dblink 是 PostgreSQL 允许连接远程数据库的扩展。
在 PostgreSQL 中使用 dblink 您需要执行以下命令:
CREATE EXTENSION dblink;
完成后,在 PostgreSQL 中执行以下命令以在 Oracle 和 PostgreSQL 之间建立链接:
CREATE SERVER oracledb FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '//ORACLE_ALIAS');
```
在这里,请将 ORACLE_ALIAS 替换为您在 tnsnames.ora 文件中设置的 alias 名称。
查询远程 Oracle 数据库
一旦您完成了上述步骤,您可以查询远程 Oracle 数据库。 为此,您可以在您的 PostgreSQL 数据库中执行以下命令:
SELECT * FROM dblink(‘oracledb’,
‘SELECT * FROM SCHEMA.TABLE’)
AS TB(COL1 INT, COL2 VARCHAR(50));
在这里,请将 SCHEMA 替换为实际的 Oracle 模式名称,TABLE 替换为实际的表名。 COL1 和 COL2 是查询结果的列名称。
结束语
现在您已经知道如何使用 oracle_fdw 让 PostgreSQL 访问远程 Oracle 数据库。 如果您在实验中遇到任何问题,请确保在安装和配置过程中查看错误 message 以获取有关解决问题的帮助。 另外,如果您需要更多的 Oracle_fdw 扩展信息,可以查看官方文档:https://oracle-fdw.readthedocs.io/en/latest/index.html