我正在将应用程序从Access迁移到Oracle,并且遇到了一个奇怪的问题。所以我们有一个常规的oracle模式--没什么特别的。在该模式的顶部,我创建了许多视图-大约15个。这些视图相互使用,并且依赖关系树可以很深-我认为最多6-8个级别。
所以现在我遇到了一个问题,当我无法创建另一个视图时--当我执行'create or replace view‘语句时,oracle服务器上的CPU会占用50%的时间,而且会持续很长时间。视图现在处于这样一种状态,从这些视图中选择数据可能需要时间,但问题出现在“create”语句中。我没有使用'select * ...‘在视图和有问题的视图中仅依赖于另外两个。
我在SQL Server中使用Oracle 10g Enterprise v10.2,我熟悉事件探查器,可以执行跟踪、查看模式锁,但我对Oracle了解不多。
感谢您的任何提示。谢谢。
发布于 2013-07-21 00:59:33
视图引用视图引用视图在我看来是非常不必要的。我知道我们都应该赞成“不要重复你自己”,但DRY是一个指导原则,而不是铁的规则。它的目的当然不是为了在数据库上下文中如此紧凑地应用,以至于什么都不能编译。
因此,请尝试分离所有视图,以便每个视图只引用FROM子句中的表。这应该可以解决您的问题,并允许您在代码方面取得进展。
您可以在以后随时查看情况。视图的巧妙之处在于它只是一个界面。如果你想重构一些视图,用比你所能做到的更少的视图替换表格(除非你重新引入编译挂起)。
https://stackoverflow.com/questions/17757599
复制相似问题