我想描述我的问题。我们有两个数据库:一个用于开发的测试数据库和一个生产数据库。两个数据库上的所有表,视图,包,函数,触发器等都相同。 dbs结构和内容都应该相同,但在某些部分它们的工作方式不同。
测试数据库。
PROD。 DB。
在测试数据库中。 Schema2 / Package2 / Procedure1调用Schema1 / Package1 / Function1。它工作正常(几秒钟)。
在Prod DB中。 Schema2 / Package2 / Procedure1调用Schema1 / Package1 / Function1。它工作得很慢。 (更多分钟)
在Prod DB Schema2 / Package2 / Procedure1中调用Schema2 / Package1 / Function1。它的工作速度相同。
我们应该在哪里检查Prod DB中的问题。在ini文件或其他地方可能出现什么设置错误?
有什么想法吗?
答案 0 :(得分:0)
好的,让我们尝试一种自上而下的方法。 Test DB和Prod DB是否在不同的服务器上?如果是这样,一台服务器可能比另一台服务器负载更重吗? (查看顶部,sar等,以了解整体系统资源以及它们如何被使用。)
其次,在数据库级别,Oracle配备齐全,可帮助您确定任何性能问题的根本原因。第一步,你在测试和生产中有相同的执行计划吗?如果执行计划有所不同(并且可以根据数据量和数据分布等因素而变化),那么可能会导致巨大的性能差异。 (使用dbms_xplan显示执行计划。)
如果执行计划没有区别,您还应该考虑数据量和分布的差异是否会导致产品性能下降,即使执行计划相同。
最后,您可以使用像Tanel Poder的snapper.sql(http://blog.tanelpoder.com/files/scripts/snapper.sql)这样的工具来确切地查看花费的时间。这可能会导致您出现性能问题的根本原因。
您的问题的性质确实没有具体的答案。我只是想让你指出正确的方向,并给你一些思考点。
希望有所帮助。