问题标签 [database-link]
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.
oracle - 通过两个数据库链接使用 PL/SQL API
有一个 Oracle 数据库(版本 8)充当 PL/SQL API,提供对该数据库中不同过程和表的访问。
我有另一个 Oracle 数据库(版本 10g),它通过数据库链接使用这些过程和表。
我将数据库升级到版本 12g,但显然使用版本 8 和 12g 之间的数据库链接存在兼容性问题。所以想出了一个计划,用 Oracle 10g 版本创建第三个数据库,并将它放在 8 到 12g 之间作为“代理”。
制作了从 v12g 到 v10g 以及从 v10g 到 v8 的数据库链接。在“代理”(v10g)数据库中为 v8 数据库中的表和过程创建了同义词。我可以从 v12g 创建一个标准的 SELECT 子句:
但将其放入匿名块中:
给出错误:“PL/SQL:ORA-00980:同义词翻译不再有效”。有没有办法我可以通过 v10g 从 v12g 访问 v8 过程和表 - 这意味着通过 2 个数据库链接?
sql - 一次更新多个列(变体)
我正在尝试更新 Oracle 中的多个列,并在经历了一些场景后解决了下面的代码。
我的问题是,更精简的代码不会更新我需要的内容,而更复杂的代码会更新——我正在尝试通过最小的处理能力来实现这一点,因为我正在查看数十万甚至更多的更新。
所以第一个代码:
现在,如果我运行它,而不是只更新大约 700 条与上述子查询匹配的记录,它会更新表“table@database1”中的所有记录,我不明白为什么(可能是我不明白的事情之一甲骨文 :) )
但是,如果我运行以下命令——唯一的区别是我将整个子查询插入到“存在的地方”中——那么这只会更新我需要的内容。我的问题是,按照我的理解,子查询运行了两次——一次在更新中,一次在 where 子句中——我会说这是对处理能力的浪费。
注意:如果它没有显示,我有多个具有相同架构的数据库。我正在尝试使用来自主模式的信息更新跨数据库的表。Temp 表充当不同且需要更新的记录的存储库 - 如果仅 15% 与主模式不同,则没有理由更新数百万条记录。
db2 - Oracle DB 链接 - where 子句评估
我有一个 DB2 数据源和一个 Oracle 12c 目标。Oracle 有一个到定义的 DB2 的 DB 链接,该链接通常工作。
现在我在 DB2 中有一个巨大的表,它有一个用于行更改的时间戳列(我们称之为 ROW_CHANGED)。我想检索在特定时间后发生变化的行。
跑步
SELECT * FROM lib.tbl WHERE ROW_CHANGED >'2016-08-01 10:00:00'
在 DB2 上恰好返回 1 行之后 ca。90秒就好了。
现在我通过 db 链接尝试来自 Oracle 的相同查询:
SELECT * FROM lib.tbl@dblink_name WHERE ROW_CHANGED >TO_TIMESTAMP('2016-08-01 10:00:00')
这会运行数小时并以超时结束。我阅读了一些 Oracle 文档并找到了分布式查询优化技巧,但其中大多数是指将本地表连接到远程表,这不是我的情况。
绝望中,我尝试了 DRIVING_SITE 提示,但没有效果。
现在我想知道何时评估查询的 WHERE 部分。由于我必须使用 Oracle 语法而不是 DB2 语法进行查询,Oracle 是否有可能首先尝试复制完整表并随后应用 where 子句?我做了一些研究,但没有找到任何可以帮助我朝这个方向发展的东西。
如果重要的话,ROW_CHANGED 是 DB2 中的隐藏列。
感谢您提前提供任何提示。
更新
谢谢@all 的帮助。我将分享对我有什么帮助。
首先,我使用了 TO_TIMESTAMP,因为 DB2 列也是 Timestamp(不是日期),我曾期望以此规避隐式转换。如果没有我遇到的显式转换ORA-28534: Heterogeneous Services preprocessing error
,我没有希望在合理的时间内接触数据库配置。
顺便说一句,解释计划并没有带来太多。它显示了一个完整的提示,并且没有对谓词进行转换。事实上,它显示 ROW_CHANGED 列作为日期,我想知道为什么。
我已经尝试过 Justins 建议使用绑定变量,但是我又得到了 ORA-28534。接下来我做的是将它包装到一个 pl/sql 块中(以后无论如何都会在 SP 中运行)。
这与在 DB2 本身中的执行时间相同。日期格式在这里是 DD.MM.YY,因为不幸的是它是默认的。将变量赋值更改为
我遇到了和以前一样的问题。
与此同时,DB2 操作员在我当天早些时候请求的 ROW_CHANGED 列中创建了一个索引。这似乎解决了一般问题。甚至我最初的查询现在也很快完成。
oracle - ORA-02019: 未找到远程数据库的连接描述
我AM_ADMIN
通过 SQL Developer 创建了一个数据库链接:
我正在尝试检查它是否是有效的数据库链接。当我从 SQL Developer 向导测试它时,它是成功的。但是当我使用以下命令时:
我收到错误:
ORA-02019: 未找到远程数据库的连接描述
我该如何纠正这个错误?
sql - 为什么数据库链接不利于安全?
我听说数据库链接不适合组织使用。为什么对安全不利?
oracle - How to create a database link to a local access db from oracle remote db
I have a requirement from my client to access a locally installed access database through a oracle remote database. These separate access databases are in their user's laptops. Is it possible to create a one database link in the remote oracle database to work in every laptop? How we can create this link?
sql-server - 从 Oracle 10g 连接到 SQL Server
我有 Oracle 10 g 和 SQL Server 2014。SQL Server 主机名是server8.as.local
, login - test2, passw - test2, DB - Northwind
这就是我所做的。
tnsnames.ora
:
使用名称 mymssql 创建的 ODBC DSN。
我还创建了一个数据库链接命令:
执行 tnsping hsodbc 表示一切正常。
但是 PL/SQL Developer 查询select * from categories @ hsodbc
显示错误:
ORA-12154:
ORA-28545: 连接到代理时由 Net8 诊断出的错误
oracle - 使用远程非 Oracle 数据库时,PL/SQL 块返回 ORA-06553:PLS-114:标识符“MyMSAccessFieldIsOver30CharsLong”太长
我有一个使用 Oracle 异构服务的 Oracle 数据库中的 MS Access 数据库的数据库链接。某些 Access 表列名的长度超过了 Oracle 允许的 30 个字符。结果,我的 PL/SQL 代码返回错误:
使用 %rowtype 语法时,有没有办法修剪或截断列名?我不允许修改 Access 数据库。我可以使用记录数据类型声明,但这将涉及将所有列数据类型复制到 pl/sql 块或包中。我尝试使用以下内容:
在 PL/SQL 块中使用 %rowtype 语法时,有没有办法修剪或截断列名?
oracle - Oracle 数据库链接 + 内连接 + To_Number 查询
DatabaseA - TableA - FieldA VARCHAR2
DatabaseB - TableB - FieldB NUMBER
[ dblink created ]
有2个并发症。
1. FieldA 是VARCHAR2
,但 FieldB 是NUMBER
。
2. FieldA 包含-
,FieldB 包含0
。
有关字段
FieldA的更多信息:VARCHAR2(15)
,NOT NULL
示例值
-
123
没有非数字值,除了 -
FieldB:NUMBER(5,0)
样本值
0
123
没有非数字值
如果FieldA ='-' OR FieldB = 0,我要做的是忽略行,否则将FieldA与FieldB进行比较。
我收到以下错误:
oracle - 来自其他数据库方案的 Oracle 负载
我是oracle的新手(大约6个月),我管理2个数据库,比如说DB_A和DB_B,都是Oracle数据库,DB_A有公共数据库链接到DB_B,这个dbLink用于包函数从DB_B获取数据并写入数据到表 DB_A.DailyValueOfB
该包函数由linux服务器中的脚本使用sqlplus命令定期(每天)调用,并结合cron。
问题是,这个包函数目前没有写任何东西,因为没有输入,但是表 DB_A.DailyValueOfB 仍然有最新的数据。
我曾尝试使用 SQL Developer 软件进行查找。DB_B 中 DB_A 的 DBlink,以防 DB_B 访问 DB_A,但没有找到 b. 我在每个数据库中浏览,“调度程序”文件夹及其子文件夹,但没有找到 c。使用这个查询
我只是在上面提到的 package.function 主体上找到了。
d。我尝试了访问 DB_B 的 package.function 的一部分,它可以正常从 DB_B 获取数据。
有没有我想念的场景?除了使用 DBlink 之外,oracle 数据库还有什么方法可以访问其他 oracle 数据库?
之前谢谢