错误:无法建立外部表“test_enames”的连接

问题描述

我在从 Postgres 选择外部表时遇到以下错误,请帮助我解决问题。

错误:无法建立外部表“test_enames”的连接

详细信息:ORA-12154:TNS:无法解析连接标识符 指定

sql 状态:HV00N

详情

1.我在 Windows 10 64 位机器上使用 Postgres 13 版本。

2.我在我的 Windows 10 6 位机器上成功安装了 oracle_fdw-2.3.0-pg13-win64

3.为 TNS_ADMIN=C:\Oracle\product\12.2.0x64\client_1\network\admin

创建系统变量

4.以下步骤创建成功。

CREATE FOREIGN DATA WRAPPER oracle_fdw

CREATE SERVER foreign_oracle
TYPE 'Oracle12'
VERSION '12'
FOREIGN DATA WRAPPER oracle_fdw
OPTIONS (dbserver '//vms1.abc.com:1524/ABC00D70');

CREATE USER MAPPING FOR postgres SERVER foreign_oracle
OPTIONS ("user" 'Test',password 'Test1');

CREATE FOREIGN TABLE test_enames(
eno numeric NULL,ename character varying(100),eloc character varying(100)
) SERVER foreign_oracle
OPTIONS (table 'TEST_ENAMES');

但是在选择表格时仍然出错,如果我错过了任何步骤,请告诉我。

谢谢

解决方法

这似乎是 Oracle 配置问题。 要对此进行调试,请尝试以运行 PostgreSQL 服务的操作系统用户身份运行以下命令:

sqlplus Test/Test1@//vms150.abc.com:1524/ABC00D70

如果这不起作用,请开始调试。那应该更容易,因为 oracle_fdw 不是等式的一部分。

如果上面的 sqlplus 调用按您的预期工作,请确保 PostgreSQL 服务设置了 TNS_ADMIN 环境变量(设置后是否重新启动了服务?)。我不确定如何检查 Windows 上正在运行的进程的环境,但“进程资源管理器”可能会起作用。

此外,您不应该使用 CREATE FOREIGN DATA WRAPPER 来创建 FDW,而是按照文档中的指定创建扩展:

CREATE EXTENSION oracle_fdw;

这将为您创建外部数据包装器。