如果我从V $ SQL视图查询,是否包括仍在运行但尚未完成的SQL?

时间:2019-05-14 14:27:30

标签: sql oracle

我正在下面的oracle数据库中运行查询。

New-Item : An item with the specified name C:\Users\bhabib\test already exists.
At C:\Users\bhabib\source\repos\TSS---New-Starter-automation-master\folder creation.ps1:6 char:9
+         New-Item -Path $folder -Type Directory
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceExists: (C:\Users\bhabib\test:String) [New-Item], IOException
    + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand

我只想问一下此查询返回的结果是否包含仍在运行的sql或用户超时或取消的查询?

1 个答案:

答案 0 :(得分:2)

是的,V$SQL显示有关仍在运行的查询的信息。来自Oracle's documentation

  

V$SQL列出不具有GROUP BY子句的共享SQL区域的统计信息   并为输入的原始SQL文本的每个子项包含一行。   V$SQL中显示的统计信息通常在查询结束时进行更新   执行。但是,对于长时间运行的查询,它们每5个更新一次   秒。这使得很容易看到长时间运行的SQL的影响   声明仍在进行中。

对于问题的第二部分,答案是:取决于。查询在缓存中停留的时间长度(V$SQL在其中收集信息)取决于缓存的大小以及在任何给定时间运行的唯一/不同查询的数量。如果在数据库中经常运行相同类型的查询(即,将它们缓存),则旧查询在V$SQL视图中的保留时间将比在数据库中执行许多不同查询的时间更长(假设尚未存储在缓存中的不同查询将添加到缓存库中,从而将较早/超时的查询从缓存中推出。如果要配置查询在缓存中花费的时间,则必须配置共享池的大小。我建议阅读https://docs.oracle.com/database/121/TGDBA/tune_shared_pool.htm#TGDBA560

上的库缓存