首页 > 代码库 > v$sql、v$sqlarea、v$sqltext、v$sql_plan

v$sql、v$sqlarea、v$sqltext、v$sql_plan

转自:http://gldbhome.blog.51cto.com/1552935/886316

 

视图v$sqltext中没有SQL语句的相关统计信息,但是v$sqltext用多行来保存sql语句,而v$sqlarea中只能
保存sql语句的前1000个字节,所以如果sql语句大于1000个字节,就要到v$sqltext中查看完整的语句,其字
段PIECE表示每个sql的行顺序。


v$sqlarea --------- 存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息
v$sql ---------- 存储的是具体的SQL 和执行计划相关信息,实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by 之后的信息
v$sqltext---------分片之后按顺序编号保存sql,存储的是完整的SQL,SQL被分割
v$sql_plan-------即使相同的sql,也可能具有不同的执行计划

v$sql join to v$sql_plan 就代表了具体的sql的执行计划,通过下面3个字段做连接

ADDRESS RAW(4)
HASH_VALUE NUMBER
CHILD_NUMBER NUMBER

而v$SQLAREA 忽略了 执行计划 等差异,只是在形式上sql文本看起来一样!相当于做了个聚合,是多个不同执行计划的sql的聚合和累计信息

v$sql、v$sqlarea、v$sqltext、v$sql_plan