我们正在PL / SQL中编写一些接口例程,通过使用另一个oracle数据库作为主机在几个oracle数据库之间传输数据。 (即hr - > host - > finance)
传输通过db_links进行 基本上
insert into schema.tablname@dblink1 select * from schema.tablename@dblink2;
(它比使用多个表和转换等更复杂..但这是一般的想法)
我们在这里讨论的是以下哪项应该做
schema.tablename@dblink
”
创建同义词(公共或私人)“create synonym tablename for schema.tablename@dblink
”
在对象“create view tablename as select * from schema.tablename@dblink
”
还有其他选择吗? 是否比其他人更好?
注意:dblink名称在每个级别dev / test / prod中都是标准化的 这样dblink'server1'就会转到dev主机上的dev服务器和测试主机上的测试服务器等。
多个服务器上都不应存在任何表名
答案 0 :(得分:2)
通过为远程对象创建同义词,可以最简单地设置位置透明度。这比在每个SQL中使用远程地址更容易维护。您如何对其他远程数据库中的某些内容进行快速测试?只需重新创建所涉及的数据库链接就足以实现这一目标。
另一个选项可能是创建快照是本地数据库中远程表的物化视图,但也需要数据库链接。它将以额外的空间为代价获得良好的性能。