概述
oracle数据库关于SQL查询相关的几个视图有v$sql,v$sqlarea,v$sqltext,那这中间有什么区别呢?
01
共同点
1)都存储了sql内容
2) 记录的都是位于内存中的sql内容
3) 因为是内存,所以都不保留历史记录
02
不同点
1、存储的位置不同
其中v$sql和v$sqlarea存储的sql都是位于shared sql area中的sql,而v$sqltext是位于sga中的sql。但文档没有明确说明这里的sga是否还包含了psa(私有sql区域--共享服务器模式下)。
2、存储sql的方式不同
v$sql和v$sqlarea都是用一行来存储sql全文,而v$sqltext用一行存储sql的一行。
3、v$sql不存储包含group by 的sql语句。
通常这个视图,在每个查询执行完成后更新,但对于执行很久的sql,它是每5秒更新一次,这点对于查看sql执行状态是有意义的。
4、存储的明细不同
V$SQL在子游标级别上列出了在共享sql区域的统计信息,他将原始sql文本展现为一行。V$SQL中的视图信息一般在sql执行的最后进行更新。然而,对于长时间执行的sql,每5秒会更新一次v$sql视图。这使得很容易查看长时间执行的sql在运行过程中带来的影响。
v$sql列说明,如没有特别说明,均指子游标,存储的是具体的SQL 和执行计划相关信息,实际