一个表可以跨多个数据库共享吗

Posted

技术标签:

【中文标题】一个表可以跨多个数据库共享吗【英文标题】:Can a table be shared across multiple databases 【发布时间】:2013-04-26 17:55:28 【问题描述】:

我知道这很可能是不可能的。但我仍然会在这里详细说明我的问题,如果有人有类似我需要的东西,那就太好了。

我有一个托管在 Windows 服务器上的文件验证系统。该系统包含一个元数据表,前端文件验证应用程序使用该表来验证各种类型的数据。现在,它迎合了与元数据表托管在同一数据库中的单个应用程序。

问题是我希望这个系统具有可扩展性,以便它可以验证各种应用程序的文件,其中一些应用程序存在于不同的数据库中。由于我的元数据表中的某些检查基于 Pl/SQL,除非文件验证系统和应用程序数据库的数据库相同,否则我无法运行这些检查。有没有办法一次在多个数据库之间共享一个表?如果没有,可能的解决方法是什么?

【问题讨论】:

我能想到的两种可能性:外部表和数据库链接。 一般来说,DB links 可能值得研究。或者,如果您想走出 Oracle,您可以将检查公开为 Web 服务。输入这些建议很容易,但实现其中任何一个都有点麻烦:) 【参考方案1】:

如果您想像访问一个表一样访问多个数据库上的多个表,那么您必须使用使用数据库链接的视图。您应该首先了解数据库链接,然后创建视图应该不是问题。

数据库链接允许您访问另一个数据库表,就像访问同一数据库上的表一样。创建数据库链接后,您所做的就是将@mydblink 添加到表名中。示例

CREATE DATABASE LINK mydblink 
CONNECT TO user IDENTIFIED BY password
USING 'name_of_other_db'

SELECT * FROM sometable@mydblink

它运行良好,甚至在远程和本地数据库中都有两阶段提交更新。根据您的设置,还有更多需要了解的信息,但您可以在 oracle 文档中阅读所有相关信息。我曾在一个大型项目中广泛使用数据库链接,这是您想要做的正确方法。

http://docs.oracle.com/cd/E11882_01/server.112/e25494/ds_concepts002.htm#ADMIN12083

http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_5005.htm

这是我在谷歌搜索后发现的一个链接,告诉我如何构建一个访问多个数据库中数据的视图,并提供一些有关预期性能的信息

http://www.dba-oracle.com/t_sql_dblink_performance.htm

【讨论】:

【参考方案2】:

Oracle 有 DBLink。查看文档。

http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm

【讨论】:

以上是关于一个表可以跨多个数据库共享吗的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 React 中跨多个树共享一个组件实例吗?

跨多个用户共享 BigQuery 的缓存

单个 NAT 网关可以跨多个 AZ 吗?

SQLite 数据库可以跨 Windows 服务和用户应用程序共享吗?

SaaS 数据库设计 - 多个数据库?分裂? [关闭]

在 iOS 上跨多个应用程序共享数据