使用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-orafce
yum 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

数据运维技术 » 使用oraclefdw让PostgreSQL访问远程Oracle数据库(oracle_fdw使用)