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

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

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

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

【问题讨论】:

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

标签: database oracle plsql


【解决方案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】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 2011-05-09
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      相关资源
      最近更新 更多