一个表可以跨多个数据库共享吗
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
【讨论】:
以上是关于一个表可以跨多个数据库共享吗的主要内容,如果未能解决你的问题,请参考以下文章