问题标签 [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.
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):
任何帮助表示赞赏。谢谢!
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.成功创建以下步骤。
但是在选择表格时仍然出错,如果我错过了任何步骤,请告诉我。
谢谢
postgresql - 错误:获取结果时出错:OCIStmtFetch2 未能获取下一个结果行
在 Postgres 中运行外部表时,请帮助我解决以下错误。
postgresql - 当主键由两个字段组成时,如何使用 oracle_fdw 将巨大的 Oracle 表迁移到 Postgres?
目前正在使用 oracle_fdw 将大表从 Oracle 迁移到 Postgres。在小型表上一切正常,甚至可以在单个查询中传输。但是有些表很大(100GB - 2TB),所以我必须分批进行。对于其中一些,主键由两个字段组成。
多批次迁移这些表的最佳做法是什么?
postgresql - 识别postgres扩展版本显示不同版本
有一个带有扩展的 postgres 数据库
如果我做 psql>\dx 它显示
但是如果我这样做 psql>SELECT oracle_diag('oraclegwserver'); 它说
哪个版本是正确的或使用的?
postgresql - 在 Oracle 的查询中使用 oracle_fdw 比较操作时 PostgreSQL 太慢
当Oracle日期类型为varchar2时,通过oracle_fdw在PostgreSQL中执行查询时,使用比较运算符>=进行查询,这种情况下不能使用索引。
不能使用索引:
但是 = 在这种情况下,使用索引。
使用索引:
我可以知道有什么区别吗?
我目前使用的是 Oracle 19.0.2 版本
PostgreSQl oracle_fdw 2.2
和 PostgreSQL 12.7
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:我对甲骨文完全陌生。
谢谢!
postgresql - 如何将外部表与本地表同步?
我正在使用 Oracle 外部数据包装器,并希望在本地拥有一些外部表的本地副本。除了物化视图并手动刷新它们之外,还有其他选择吗?
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。
想知道是否有一些我应该禁用的选项.......
postgresql - 用 Postgres db 替换 Oracle db ,添加一个适配器
我有一个查询 Oracle 数据库的源代码。
是否可以在不修改源代码的情况下将 Oracle 数据库替换为 PostgreSQL 数据库?
我考虑在我的源代码和 PostgreSQL 数据库之间添加一个适配器/包装器模块,以使源代码与 PostgreSQL 兼容。
谢谢