如何查看长时间运行的查询&调整查询的步骤? (Oracle)
答案 0 :(得分:2)
explain plan for select ....
以查看Oracle对您的查询执行的操作。答案 1 :(得分:1)
您可以通过从v $ sql或v $ sqltext中进行选择来捕获查询。 如果您不熟悉它,请在Oracle中查找“解释计划” 文档。性能调优应该有很多 引导。
看看Quest Software的Toad是否有帮助的第三方工具 在这方面也是如此。
ķ
答案 2 :(得分:0)
很遗憾,您的问题没有明确表达。其他答案已经解决了调整已知错误查询的问题,但另一种解释是您希望监视数据库以查找性能不佳的查询。
如果您没有带有诊断程序包的企业版 - 我们不是很多人这样做 - 您最好的选择是在reqular的基础上运行statspack快照。这将为您提供有关系统的大量信息,包括哪些查询需要很长时间才能完成以及哪些查询会消耗大量系统资源。您可以找到有关statspack here的更多信息。
答案 3 :(得分:0)
如果您不想使用OEM,那么您可以查询并查找。
首先找到长时间运行的查询。如果它当前正在执行,您可以加入gv $ session以查找长时间运行的会话。然后转到gv $ sql查找SQL详细信息。您需要查看last_call_et列。如果SQL执行了一段时间,您可以使用dba_hist_snapshot,dba_hist_sqlstat,DBA_HIST_SQLTEXT表来查找有问题的SQL。
一旦获得查询,您可以检查从dba_hist_sql_plan表中选择的计划,如果此SQL在过去执行,或者从gv $ sql_plan执行,如果它当前正在执行。
现在您分析执行计划并查看它是否正在使用正确的索引,连接等。 如果不调整那些。
让我知道您遇到问题的步骤。我可以帮你回答这些问题。