从另一个数据库读取数据

时间:2017-04-06 07:59:39

标签: sql oracle

假设我有一个名为db1的主数据库。还有另一个名为db2的数据库。有时我需要从db2获取数据。是直接从db2获取数据还是在db1中创建视图?

2 个答案:

答案 0 :(得分:1)

如果您从db2获取数据,则应在db2中为每个查询创建视图。为什么?创建接口。

如果有人在db2中进行更改,他就不知道从db1执行的查询。您的查询可能会停止工作。如果在db2和db1查询视图@ db2中为查询创建视图,则在db2中更改结构的任何人都将看到无效视图,以防他的更改损坏您的查询。

当然,我的意思是您的查询嵌入在包或视图中的情况。如果您只是查询分析目的,那么直接执行它就没有区别,在db1上查看或在db2上查看只是因为它适合您。但是好的做法是设置接口,所以我建议在db2上为数据集创建视图,以便稍后从db1查询。在db1端创建额外的视图或同义词以使其具有双侧接口也是有意义的。

答案 1 :(得分:1)

首先需要设置一个连接DB2的驱动程序,一个用于Oracle连接的TNS连接条目和一个Oracle中的数据库链接以指向连接。

重要的是,您尽可能尝试将一个数据库中的更改隔离开来。

我这样做的方式不同,但这对我有用;

  1. 对于您在DB2中查询的每个表,创建一个JUST所需列的DB2视图。
  2. 在Oracle中创建一个查询DB2_VIEW @ DB2_database的视图。虽然不是绝对必要,但只需查询您想要的列 - 这是一种很好的做法。
  3. 为视图创建同义词并通过该查询进行查询。如果数据源发生更改并且视图被其他视图替换,则可以将同义词切换为指向新视图而不是更改代码。
  4. <强>要点: 除非我误解了你似乎问我应该直接在DB2中查询表还是应该通过视图?我建议通过视图将您从两端的变化隔离到某种程度,以便使用视图。