同义词或者通过dblink查看视图

4
我们正在使用PL/SQL编写一些接口程序,通过使用另一个Oracle数据库作为主机,在几个Oracle数据库之间传输数据。(例如:hr -> host -> finance)
这些传输是通过db_links完成的。
insert into schema.tablname@dblink1 select * from schema.tablename@dblink2;

具体情况可能更加复杂,包括多个表和转换等,但这是一个基本的概念。

我们一直在讨论以下哪种方法应该使用:

  1. 在代码中到处引用“schema.tablename@dblink
  2. 创建公共或私有同义词“create synonym tablename for schema.tablename@dblink

  3. 在对象上创建视图“create view tablename as select * from schema.tablename@dblink

还有其他选项吗? 有没有任何一种方法比其他方法更好?

注意:每个级别(dev/test/prod)的dblink名称都是标准化的,因此dblink“server1”会连接到dev主机上的开发服务器和测试主机上的测试服务器等。

任何表名都不应存在于多个服务器上。

1个回答

3

通过创建远程对象的同义词来设置位置透明度是最简单的。这比在每个 SQL 中使用远程地址更容易维护。如果您想要在其他远程数据库中进行快速测试,只需重新创建相关的数据库链接即可完成。

另一种选择是从本地数据库中创建远程表的快照或材料化视图,但这也需要一个数据库链接。这将以额外的空间为代价获得良好的性能。


我认为我们现在不用担心性能问题,我们不指望它会成为一个问题,但这是一些表格的一个想法。 - ShoeLace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接