问题标签 [dblink]

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 投票
6 回答
48258 浏览

sql - 在 Oracle 分布式数据库中处理 LOB 的最佳方式

如果创建 Oracle dblink,则无法直接访问目标表中的 LOB 列。

例如,您使用以下命令创建 dblink:

在此之后,您可以执行以下操作:

除非该列是 LOB,否则您会收到错误:

这是一个记录在案的限制

同一页面建议您将值提取到本地表中,但那是......有点混乱:

还有其他想法吗?

0 投票
2 回答
914 浏览

postgresql - Solaris 10 上的 PostgreSQL DbLink 编译

在使用 Sun C 5.9 SunOS_sparc 2007/05/03 和 gmake 在 solaris 10 上成功构建 dblink 之后。

我运行 gmake installcheck 并得到以下输出:

可以在文件“./regression.diffs”中查看导致某些测试失败的差异。您在上面看到的测试摘要的副本保存在文件“./regression.out”中。

regression.diffs 文件中的第一个错误:

psql:dblink.sql:11:错误:无法加载库“/apps/postgresql/lib/dblink.so”:ld.so.1:postgre s:致命:重定位错误:文件/apps/postgresql/lib/dblink .so:符号 PG_GETARG_TEXT_PP:未找到引用的符号

我正在使用最新的 dblink 源运行 postgreSQL 版本 8.2.4。

有没有人知道我需要做什么来解决这个问题。谢谢。

0 投票
3 回答
4878 浏览

oracle - 为什么在通过 Oracle DBLINK 复制时 Char(1) 会更改为 Char(3)?

我有 2 个数据库,我想将包含 CHAR 列的现有表从数据库 A 传输到数据库 B。

数据库 A 是 Oracle 9i,编码为 WE8ISO8859P1,并包含一个表“foo”,其中至少有 1 列类型为 CHAR(1 char)。我无法更改数据库 A 上的表,因为它是第三方设置的一部分。

数据库B是我自己的Oracle 10g数据库,由于各种原因使用编码AL32UTF8,我想将foo复制到这个数据库中。

我设置了从数据库 B 到数据库 A 的数据库链接。然后发出以下命令:

*从#link#.foo中选择*创建表格栏;*

数据被很好地复制了,但是当我检查列的类型时,我注意到 CHAR(1 char) 已转换为 CHAR(3 char),并且在查询数据库 B 中的数据时,它都用空格填充.

我认为在水下某处,Oracle 混淆了它自己的字节和字符。CHAR(1 byte) 与 CHAR(1 char) 等不同。我已经阅读了所有这些内容。

为什么数据类型变为填充的 CHAR(3 char) 以及如何阻止 Oracle 这样做?

编辑:这似乎与在 Oracle 9 和 10 的两个特定补丁级别之间传输 CHAR 有关。看起来这确实是一个错误。一旦我发现我会发布更新。同时:不要尝试像我描述的那样在数据库之间移动 CHAR。VARCHAR2 工作正常(经过测试)。

编辑 2:我找到了答案并将其发布在这里: Why does Char(1) change to Char(3) when copying over an Oracle DBLINK? 太糟糕了,我不能接受自己的答案,因为我的问题已经解决了。

0 投票
2 回答
19413 浏览

oracle - 通过 DBLINK 引用 Oracle 用户定义类型?

我在两个不同的 Oracle 实例上使用两个不同的 Oracle 模式。我已经定义了几种类型和类型集合来在这些模式之间传输数据。我遇到的问题是,即使类型具有完全相同的定义(用于在模式中创建两个集合的脚本相同),Oracle 仍将它们视为不可互换的不同对象。

我曾考虑将传入的远程类型对象转换为相同的本地类型,但我收到关于跨 dblink 引用类型的错误。

本质上,我正在执行以下操作:

失败是因为 REMOTE 过程调用无法理解 MyType,因为它将 LocalType 和 RemoteType 视为不同的对象类型。

我也尝试如下 DECLARING MyType:

但我得到另一个关于跨 dblinks 引用类型的错误。类型之间的 CAST 也不起作用,因为为了进行转换,我需要跨 dblink 引用远程类型——同样的问题,同样的错误。我也尝试使用 SYS.ANYDATA 作为跨越两个实例的对象,但它得到了类似的错误。

有任何想法吗?

更新: 尝试使用相同的 OID 声明 DBLINK 两侧的对象类型(使用手动检索SYS_OP_GUID()),但 Oracle 仍然“认为”这两个对象不同,并引发“错误数量或类型的争论”错误。

0 投票
4 回答
10742 浏览

oracle - dblink 上的 Oracle sql 类型

我有两个模式:A 和 B (Oracle 9)。在 A 处有一个到 B 的 dblink。在 B 处有一个包,我从 A 调用它。B 包中的过程可以返回不同的计数结果,因此我认为返回一个集合是更好的方法。

但是从 A 方案我不能使用 tt_rad 类型,因为不支持通过 dblink 使用 SQL 类型。DBMS_SQL 不支持游标。创建具有相同 OID 的类型是不可能的。

我认为使用临时表。但首先它不是那么好(远程函数返回值后,调用方必须从远程表中选择集合)。人们担心临时表的工作会放缓。

也许谁知道替代交互?

0 投票
3 回答
3316 浏览

xml - 为什么不能通过 DBLink 发送 Oracle XMLType?

我有一些调用远程过程以发送 XMLType 的 PLSQL 代码。不过,它所做的是将 XMLType 分成多个 varchar2(4000) 参数,这些参数是该过程接受的。远程过程通过 DBLink 调用。

为什么必须拆分 XMLType?此限制是否适用于最近的数据库版本 (10g)?

0 投票
4 回答
2018 浏览

sql-server - 从 Oracle 查询 SQL Server - 强制元数据刷新

我是一名 SQL Server 开发人员,在 Oracle 中有一个任务。DBA 在 Oracle 中设置了指向 SQL Server 数据库的 DBLink。我正在编写一个关于 SQL Server 数据的视图,然后在 Oracle 端编写一个视图以将其与其他 Oracle 数据连接起来。

问题:如果我在 SQL Server 上更改视图的定义,甚至“Select * From myview@dblink”也会出现“列无效”的错误。关闭 TOAD 并重新打开似乎可以解决问题,但真正的问题是如何强制 Oracle 在不重置连接的情况下重新读取元数据?

0 投票
3 回答
29097 浏览

oracle - 用于创建另一个用户拥有的数据库链接的 Oracle 语法

创建数据库链接的典型语法如下:

但我希望我的数据库链接在创建后由另一个帐户拥有。有没有办法做到这一点?

以下不起作用:

0 投票
1 回答
3847 浏览

java - 是否可以在不同物理服务器上的 oracle 数据库和 postgresql 数据库之间使用数据库链接

我正在尝试简化一个 Intranet 应用程序,其中一些数据本地存储在 Intranet 服务器的 postgresql 数据库中,而其他相关数据存储在我们的企业 oracle 10g2r2 数据库中。

我想做的是在任一数据库框上创建一个视图,这并不重要,为了简单起见,将每个数据库中的一个表组合成两者的平面视图。这将允许我从 Intranet 应用程序中进行简单的查询。

目前,我必须将两个数据库中的数据提取到一个对象结构中,然后针对这些对象运行查找/搜索。我真的不喜欢这样做,并且希望能够创建一个视图。

如果这是不可能的,那么也许有一些关于处理这种情况的最佳方法的建议。

我的内网堆栈是 Linux、postgresql、tomcat (java)、apache。再次,oracle db 是 10gr2

蒂姆

0 投票
1 回答
6705 浏览

database - Oracle 通用数据库链接不工作

我正在尝试使用 oracle 的 hsodbc 通用数据库链接驱动程序从我的 oracle 10gr2 数据库服务器访问 postgresql 数据库。我想我已经配置了所有东西,但是在尝试远程查询后我从 sqlplus promt 收到了这个错误。

如果我从 linux 命令行使用“isql”(换句话说,只测试 odbc 连接),则查询有效。

我输入“isql Intranet”(intranet 是 odbc 连接的名称)我得到提示我输入 select * from temp_user 并在屏幕上收到我的 157 条记录。

所以我知道 odbc 配置设置正确。这是我为 oracle 所做的。

我已经重新启动了监听器。它的状态如下。

然后我从数据库服务器命令行进入 sqlplus 并执行以下操作。

创建数据库链接 Intranet 使用“intranet”连接到由密码标识的用户;

这是成功的。

但是,当我跑步时

我收到错误

我至少花了一天的时间回顾配置和尝试,但我总是收到这个错误。

大家有什么好的想法,