问题标签 [oracle-fdw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
294 浏览

foreign-data-wrapper - 通过 oracle_fdw 从 Postgres 外部表中选择数据不使用 Oracle 端的索引

简而言之:我们面临一个问题,即在远程 Oracle DB 上执行全表扫描而不是使用索引。

设置:

Postgres 12.3 在带有 oracle 基本客户端的丰富 docker 容器中,连接到版本 19c 中的远程 Oracle DB。访问的表有 2M 个条目。安装的 oracle_fdw 是 2.30 版本。

问题:

似乎外部表上的选择没有使用外部表的索引。我们要根据本地表中的数据来选择外部表中的数据。我们尝试了不同的方法,例如连接或子选择,但未使用外表上的索引。我们尝试使用函数生成不可变数据,这确实有效。对于这个单一的 id,语句在 12 毫秒内返回,解释计划显示使用了索引。

但它实际上是行不通的,如果我们使用这里看到的函数返回多行:

在这种情况下,即使是一行,语句也需要大约 4 分钟才能返回。解释计划显示执行了全表扫描。

为什么不使用索引?我们可以做些什么来强制使用索引?

如果需要有关设置或表格的更多信息,我们将更新问题。


我们基本上追踪到了这个需求(WHERE 语句似乎没有被强制到 Oracle):

任何帮助表示赞赏。谢谢!

0 投票
1 回答
360 浏览

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

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

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

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

SQL状态:HV00N

细节

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

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

3.为TNS_ADMIN创建系统变量=C:\Oracle\product\12.2.0x64\client_1\network\admin

4.成功创建以下步骤。

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

谢谢

0 投票
1 回答
226 浏览

postgresql - 错误:获取结果时出错:OCIStmtFetch2 未能获取下一个结果行

在 Postgres 中运行外部表时,请帮助我解决以下错误。

0 投票
1 回答
61 浏览

postgresql - 当主键由两个字段组成时,如何使用 oracle_fdw 将巨大的 Oracle 表迁移到 Postgres?

目前正在使用 oracle_fdw 将大表从 Oracle 迁移到 Postgres。在小型表上一切正常,甚至可以在单个查询中传输。但是有些表很大(100GB - 2TB),所以我必须分批进行。对于其中一些,主键由两个字段组成。

多批次迁移这些表的最佳做法是什么?

0 投票
1 回答
57 浏览

postgresql - 识别postgres扩展版本显示不同版本

有一个带有扩展的 postgres 数据库

如果我做 psql>\dx 它显示

但是如果我这样做 psql>SELECT oracle_diag('oraclegwserver'); 它说

哪个版本是正确的或使用的?

0 投票
1 回答
83 浏览

postgresql - 在 Oracle 的查询中使用 oracle_fdw 比较操作时 PostgreSQL 太慢

当Oracle日期类型为varchar2时,通过oracle_fdw在PostgreSQL中执行查询时,使用比较运算符>=进行查询,这种情况下不能使用索引。

不能使用索引:

但是 = 在这种情况下,使用索引。

使用索引:

我可以知道有什么区别吗?

我目前使用的是 Oracle 19.0.2 版本

PostgreSQl oracle_fdw 2.2

和 PostgreSQL 12.7

0 投票
1 回答
174 浏览

oracle11g - 在不安装 oracle 的情况下安装 oracle_fdw - 可能吗?

我想将数据从远程 oracle 数据库(版本 11.2)传输到 localhost postgres(版本 13)数据库(后来也传输到远程 Postgres db)。因此,我在自己的 Ubuntu 20.04.3 LTS 焦点上安装了 PostgreSQL 13,并尝试使用此指令安装 oracle_fdw 。因此,当尝试为 Linux x86-64 安装 Instant Client Installation(ZIP 包;据我所知,rpm 不适用于我的操作系统配置 - 20.04 ubuntu 焦点中没有 yum lib)我遵循所有步骤(除了最后一个 -启动您的应用程序 - 这是什么意思?)),当尝试在 oracle_fdw 目录中执行“make”时出现错误

致命错误:oci.h:没有这样的文件或目录

(我下载了oracle_fdw的最新开发版)。我找到了开发者 oracle_fdw 扩展的答案

“如果你没有oci.h,你没有安装oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm。”

但我已经解压缩了 Instantclient-basic-linux.x64-11.2.0.4.0.zip 和 Instantclient-sdk-linux.x64-11.2.0.4.0.zip ...(与远程 oracle db 版本 11.2 兼容)

当我试图find -name oci.h得到./sdk/include/oci.h

我的问题是——我真的必须在我的机器上安装 ORACLE 吗?或者我必须安装哪些 oracle 依赖项才能使用 oracle_fdw 扩展?也许我的 oracle-instantclient 安装不正确(我如何测试 oracle-instantclient 的安装?或者安装 oracle-instantclient 的位置必须是特定的)。PS:我对甲骨文完全陌生。

谢谢!

0 投票
1 回答
31 浏览

postgresql - 如何将外部表与本地表同步?

我正在使用 Oracle 外部数据包装器,并希望在本地拥有一些外部表的本地副本。除了物化视图并手动刷新它们之外,还有其他选择吗?

0 投票
1 回答
26 浏览

postgresql - oracle_fdw 的奇怪查询

我正在使用 oracle_fdw 2.2.0devel、PostgreSQL 10.13、Oracle 客户端 18.3.0.0.0

我们在 Postgres 中有一个外表定义如下:

这是作为 12c SE 数据库连接的。这很好用,但是,我注意到 Oracle 中的查询实际上是这样的:

为什么它会自动添加“UPPER”子句?这会减慢 Oracle 查询并且不使用索引,除非我使用“upper”创建 FBI。

想知道是否有一些我应该禁用的选项.......

0 投票
1 回答
20 浏览

postgresql - 用 Postgres db 替换 Oracle db ,添加一个适配器

我有一个查询 Oracle 数据库的源代码。

是否可以在不修改源代码的情况下将 Oracle 数据库替换为 PostgreSQL 数据库?

我考虑在我的源代码和 PostgreSQL 数据库之间添加一个适配器/包装器模块,以使源代码与 PostgreSQL 兼容。

谢谢