2017-04-06 51 views
0

假设我有一个名为db1的主数据库。还有另一个名为db2的数据库。有时我需要从db2获取数据。直接从db2获取数据还是使用db1进行查看会更好吗?从另一个数据库读取数据

+0

很多因素需要在这里考虑。数据库之间有快速连接吗?它有很多数据吗?两个数据库都可能移动吗? “使用db1查看”是什么意思,这仍然需要访问db2? – JohnHC

+0

感谢您的回答! 我对数据库并不是很了解,但有2种方法可以实现这个功能。首先是我在db1中查询时引用了db2。 SELECT * FROM db2.table1 还是我第一次创建视图(CREATE VIEW v_db1 SELECT * FROM db2.table1) ,然后当我需要在DB2中那个表我只是SELECT * FROM v_db1 我想知道何时使用第一路或第二路。那两者有什么区别? 我希望我说得更清楚我在想什么 – Kristjan

回答

1

如果您从db2获取数据,则应该在db2中为每个查询创建视图。为什么?创建接口。如果有人会在db2中进行更改,他不知道从db1执行的查询。您的查询可能会停止工作。如果您在db2中为查询创建视图,并从db1查询视图@ db2创建视图,那么任何在db2中更改结构的人都会在他的更改损坏您的查询时看到无效视图。
当然,我的意思是当你的查询嵌入到包或视图中时。如果您只是为了分析目的而进行查询,那么直接进行查询并不会有什么区别,只要查看db1或db2上的视图就可以了,因为它适合您。但好的做法是设置接口,所以我建议在db2上创建数据集的视图,这些数据集稍后将从db1中查询。在db1一侧创建附加视图或同义词以具有两个侧面接口也是有意义的。

+0

太好了。感谢您回答我的问题。 – Kristjan

1

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

重要的是,您尽可能尝试隔离一个数据库与另一个数据库的更改。

我已经完成了不同的方式,但是这对我有效;

  1. 对于在DB2中查询的每个表,只需从该表创建一个DB2列表视图即可。
  2. 在Oracle中创建一个查询DB2_VIEW @ DB2_database的视图。虽然不是绝对必要的,但只需查询您想要的列 - 它的良好做法。
  3. 通过它创建视图和查询的同义词。如果数据来源发生变化并且视图被另一个视图替换,则可以将同义词切换为指向新视图而不是更改代码。

摘要: 除非我误解你似乎会问我应该直接查询表在DB2或者我应该通过什么看法?我建议通过视图将你从两端的变化中隔离开来,以便在某种程度上使用视图。

+0

太好了,谢谢!回答了我所有的问题。 – Kristjan

相关问题