0

我正在将应用程序从 Access 迁移到 Oracle 并且遇到了一个奇怪的问题。所以我们有一个常规的 oracle 模式——没什么特别的。在该模式的顶部,我创建了许多视图 - 大约 15 个。这些视图相互使用并且依赖关系树可以很深 - 我会说最多 6-8 个级别。

所以现在我遇到了一个问题,当我无法创建另一个视图时——当我执行“创建或替换视图”语句时,oracle 服务器上的 CPU 达到 50%,并且需要很长时间。视图现在处于这样一种状态,从这些视图中选择数据可能需要一些时间,但问题出现在“创建”语句中。我没有在视图中使用“select * ...”,有问题的视图仅取决于另外两个。

我在 SQL Server 中使用 Oracle 10g Enterprise v 10.2 我熟悉 Profiler 并且会进行跟踪、查看模式锁,但我对 Oracle 了解不多。

将不胜感激任何提示。谢谢你。

4

1 回答 1

1

引用视图的视图引用视图让我觉得非常不必要。我知道我们都应该支持“不要重复自己”,但 DRY 是指导方针,而不是铁律。它当然不打算在数据库上下文中如此紧凑地应用,以至于没有任何编译。

所以试着分离出所有的视图,让每个视图只引用 FROM 子句中的表。这应该可以解决您的问题并允许您在代码方面取得进展。

您以后可以随时查看情况。视图的巧妙之处在于它只是一个界面。如果您随后想要重构一些视图,用视图替换表,而不是您将能够做到的,以最小的不便(除非您重新引入编译挂起)。

于 2013-07-20T16:59:32.563 回答