问题标签 [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 回答
918 浏览

oracle - PostgreSQL 9.5 - 使用 utf8 解码/选择案例以解决错误不起作用

继续我的上一篇文章-“将 oracle 迁移到 postgresql 用于编码“UTF8”的无效字节序列:0x00”

我正在尝试从远程 Oracle 表(通过 oracle_fdw 扩展)插入本地 PostgreSQL 表数据。我的 Oracle 表有一个名为 street 的列,它有有效的字符串值,有时还有下一个无效的(在 PostgreSQL 中)字符串:''(空格)。

当我尝试复制列值时,我收到了上面和上一篇文章中提到的错误。我知道在将 Oracle 数据插入 PostgreSQL 之前,我需要更改它。我必须即时执行,所以我尝试在 PostgreSQL 中搜索 oracle decode func。我找到了两个解决方案,我都使用了它们,但我得到了同样的错误:

1.使用选择与案例:


2.使用 orafce 扩展的解码功能:

所以,我仍然收到错误。我该如何解决这个问题?

0 投票
1 回答
594 浏览

oracle - 提高查询性能——从oracle选择数据到postgresql

我有 3 个运行速度非常慢的查询。所有这些通常都在做同样的事情:从 oracle 中的视图中选择(viw oracle_fdw 扩展)。所有视图看起来像这样:select / parallel (table_Name,4) / column1,column2,replace(column 3,' ',null),...,replace(...),column8 from table_name。

*我每个表都有 40 多列,所以我只是提到了查询的格式。

我在 postgresql 中运行的选择如下所示:

  • table1 大小为 10G,有 100,000,000 条记录。

  • table2 大小为 1.3G,有 6,000,000 条记录。

  • table3 大小为 8G,有 75,000,000 条记录。

所有这些都是作为从 oracle db 获取数据的大函数的一部分发生的。在将数据导入到 postgresql 中的本地表之前,我删除了本地表的索引和约束,并在导入数据之后创建了它们。

关于我的服务器的一些信息:

  • 我在服务器上有 5 GB RAM,其中 4 个是免费的。

  • 我有 2 个 CPU

关于我的 Postgresql 实例的一些信息:

目前我在实例上只有 1 db。

此外,我有很多选择 * from foreign_Table。所有这些都需要一些时间,但是这 3 个都花费了太多时间。请帮助提高这 3 个的性能,如果可以的话,我的所有选择。

0 投票
1 回答
309 浏览

database - Postgres:我们如何保存使用外部数据包装器创建的外部表的数据

我正在尝试通过创建外部表使用 foreign_database_wrapper 将 Oracle 数据库迁移到 Postgres。

但由于外部表的作用类似于 Oracle 的视图,因此在执行任何查询时,它会从原始源中即时获取数据,因此会增加处理时间。

截至目前,为了在 Postgres 端维护物理数据,我正在创建表并将这些数据插入其中。

例如:create table employee_details as select * from emp_det;

其中employee_details 是物理表,emp_det 是外部表

但我觉得这个过程有点多余,有时我们需要操作这个表(新插入、更新或删除)

因此,如果有人可以分享一些相关的方式,我可以用其他方式保存这些数据。

问候,

0 投票
1 回答
438 浏览

oracle - Postgresql 9.6 从外部表并行执行

我将我的 postgresql 从 9.5 升级到 9.6,以便使用并行执行来提高我的性能。但是,我没有成功使用它。在我的主数据库中,几乎所有的选择看起来都像:外表 select * from foreign_table 是一个位于 oracle 数据库上的外表。有些表是 10G+ 和 1,000,000+ 条记录,因此在这种选择情况下,并行查询应该对我有很大帮助。

我配置的参数:

当我尝试从她的大小为 1.5G 并且有 5,000,000 条记录的大表中使用解释分析选择 * 时,我只看到外部扫描:

*我还尝试了 select * from foreign_table where 1=1 但仍然是相同的结果。

另一方面,下一个代码有效:

知道如何继续吗?

0 投票
1 回答
401 浏览

postgresql - Oracle 外部数据包装器

我有主从架构。在从属服务器上,我有一个具有两种模式的 Oracle 数据库,例如TEST1TEST2.

我将所有对象(例如EMPLOYEES)存储在 schema 中TEST1,并且用户(或管理员)已授予对to 的TEST1只读权限,因此当我在 Oracle 数据库上的查询中使用时,我可以访问其数据。TEST1.EMPLOYEESTEST2TEST1.EMPLOYEES

我如何在 postgres 9.5 中使用 Oracle 外部数据包装器来实现相同的功能,因为我有凭证TEST2而不是凭证TEST1?当我尝试访问外部表时,它会给出一个错误,TEST2.EMPLOYEES说不存在。

0 投票
0 回答
428 浏览

oracle - 从 oracle (oracle-fdw) 到 PostgreSQL 的缓慢交叉加载

我在论坛上创建了多个关于我遇到的性能问题的帖子,但现在在我进行了一些测试并收集了所有需要的信息之后,我正在创建这个帖子。

我有两张大桌子的性能问题。这些表位于 oracle 远程数据库上。我正在查询: insert into local_postgresql_table select * from oracle_remote_table.

第一个表有 45M 记录,大小为 23G。从 oracle 远程数据库导入数据需要 1 小时 38 分钟。之后,我在表上创建了 13 个常规索引,每个表需要 10 分钟 -> 总共需要 2 小时 10 分钟。

第二个表有 29M 条记录,大小为 26G。从 oracle 远程数据库导入数据需要 2 小时 30 分钟。创建索引需要 1 小时 30 分钟(有些是一列的索引,创建需要 5 分钟,有些是多列的索引,需要 11 分钟。

这些操作对我来说非常有问题,我正在寻找一种解决方案来提高性能。我分配的参数:

- 我尝试在 oracle 和 postgresql 中从表中运行 select count(*),运行时间几乎相等。

- 在导入数据之前,我删除了索引和约束。

-我尝试将一个23G的文件从oracle服务器复制到postgresql服务器,花了我12分钟。

请建议我该如何继续?我该如何改进此操作中的某些内容?

0 投票
1 回答
159 浏览

postgresql - POSTGRESQL 9.6 COPY 创建的文件大于表

我试图通过复制命令将 oracle 表导出到本地 postgresql 转储中:

oracle 表的大小为 25G。但是,复制命令创建了一个 50G 的文件。这怎么可能 ?

我能够从远程 oracle 表中进行选择,因为我有 oracle_fdw 扩展名。

0 投票
1 回答
389 浏览

oracle - Postgresql 9.6 从远程 oracle db 写入数据很慢

我在我的 postgresql 数据库中使用 oracle_fdw 扩展。我正在尝试将 oracle 数据库中许多表的数据复制到我的 postgresql 表中。我通过运行来做到这一点insert into local_postgresql_temp select * from remote_oracle_table。此操作的性能非常缓慢,我尝试检查原因并选择其他替代方案。

1)第一种方法 -Insert into local_postgresql_table select * from remote_oracle_table这产生了 7 M/s 的总磁盘写入和 4 M/s(iotop)的实际磁盘写入。对于 32G 表,我花了 2 小时 30 分钟。

2)第二种方法 -copy (select * from oracle_remote_table) to /tmp/dump生成 4 M/s 的总磁盘写入和 100 K/s 的实际磁盘写入。复制实用程序假设非常快,但似乎非常慢。

-当我从本地转储运行复制时,读取速度非常快 300 M/s。

-我在oracle服务器上创建了一个32G的文件,用scp复制,花了我几分钟。

- wals 目录位于不同的文件系统上。我分配的参数:

我怎样才能增加写入?如何更快地将数据从 oracle 数据库获取到我的 postgresql 数据库?

我在整个过程和结果上运行 perf: 在此处输入图像描述

0 投票
0 回答
73 浏览

postgresql - Postgresql FS 已满,但表没那么大

我想在我的应用程序运行期间检查有关 PostgreSQL 性能的一些信息。

我的应用程序在循环中对 20 个表执行以下操作:

  1. 截断表。

  2. 删除表上的约束

  3. 删除表上的索引

  4. insert into local_table select * from remote_oracle_table

    最近我在这部分遇到了一个错误

    SQLERRM = 无法扩展文件“base/16400/124810.23”:在块 3092001 处仅写入了 8192 个字节中的 4096 个

  5. 在表上创建约束

  6. 在表上创建索引。

该操作每晚运行。大多数桌子都是500M-2G的小桌子,但很少有桌子是24G-45G的大桌子。

我的 wals 和我的数据目录在不同的 fs 上。我的数据目录 fs 大小是 400G。在此操作期间,数据目录 fs 变满。但是,在此操作之后,释放了 100G,这意味着从数据目录 fs 的 400g 中使用了 300G。关于这些尺寸的东西似乎不太好。

当我检查我的数据库大小时:

当我检查 mydb 数据库中的所有表时:

在数据目录中,基本目录的大小为 240G。我的机器上有 16G 的内存。

0 投票
1 回答
1387 浏览

oracle - 有没有办法通过 Postgres 调用/执行 Oracle 函数?

我需要将 Oracle DB 迁移到 Postgres,我可以这样做。通过使用 FDW,我可以在 Postgres 访问 Oracle 数据。现在需要通过 Postgres 调用/执行 Oracle 的功能。

有什么办法吗?

我找到了这个链接,同样的: https ://github.com/laurenz/oracle_fdw/issues/187

任何人都可以为我提供样本或示例吗?

问候,