v$sqlarea,v$sql,v$sqltext的区别和联系

原创 2004年07月05日 17:48:00

v$sqltext 存储的是完整的SQL,SQL被分割

SQL> desc v$sqltext
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDRESS RAW(4) ---------
HASH_VALUE NUMBER --------- 和 address 一起唯一标志一条sql
COMMAND_TYPE NUMBER
PIECE NUMBER ---------- 分片之后的顺序编号
SQL_TEXT VARCHAR2(64) -------------- 注意长度



v$sqlarea --------- 存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息
SQL> desc v$sqlarea
Name Null? Type
----------------------------------------- -------- ----------------------------
SQL_TEXT VARCHAR2(1000)
SHARABLE_MEM NUMBER
PERSISTENT_MEM NUMBER
RUNTIME_MEM NUMBER
SORTS NUMBER
VERSION_COUNT NUMBER
LOADED_VERSIONS NUMBER
OPEN_VERSIONS NUMBER
USERS_OPENING NUMBER
FETCHES NUMBER
EXECUTIONS NUMBER
USERS_EXECUTING NUMBER
LOADS NUMBER
FIRST_LOAD_TIME VARCHAR2(38)
INVALIDATIONS NUMBER
PARSE_CALLS NUMBER
DISK_READS NUMBER
BUFFER_GETS NUMBER
ROWS_PROCESSED NUMBER
COMMAND_TYPE NUMBER
OPTIMIZER_MODE VARCHAR2(25)
PARSING_USER_ID NUMBER
PARSING_SCHEMA_ID NUMBER
KEPT_VERSIONS NUMBER
ADDRESS RAW(4)
HASH_VALUE NUMBER
MODULE VARCHAR2(64)
MODULE_HASH NUMBER
ACTION VARCHAR2(64)
ACTION_HASH NUMBER
SERIALIZABLE_ABORTS NUMBER
CPU_TIME NUMBER
ELAPSED_TIME NUMBER
IS_OBSOLETE VARCHAR2(1)
CHILD_LATCH NUMBER




v$sql ----------
存储的是具体的SQL 和执行计划相关信息,实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by 之后的信息


SQL> desc v$sql
Name Null? Type
----------------------------------------- -------- ----------------------------
SQL_TEXT VARCHAR2(1000)
SHARABLE_MEM NUMBER
PERSISTENT_MEM NUMBER
RUNTIME_MEM NUMBER
SORTS NUMBER
LOADED_VERSIONS NUMBER
OPEN_VERSIONS NUMBER
USERS_OPENING NUMBER
FETCHES NUMBER
EXECUTIONS NUMBER
USERS_EXECUTING NUMBER
LOADS NUMBER
FIRST_LOAD_TIME VARCHAR2(38)
INVALIDATIONS NUMBER
PARSE_CALLS NUMBER
DISK_READS NUMBER
BUFFER_GETS NUMBER
ROWS_PROCESSED NUMBER
COMMAND_TYPE NUMBER
OPTIMIZER_MODE VARCHAR2(10)
OPTIMIZER_COST NUMBER
PARSING_USER_ID NUMBER
PARSING_SCHEMA_ID NUMBER
KEPT_VERSIONS NUMBER
ADDRESS RAW(4)
TYPE_CHK_HEAP RAW(4)
HASH_VALUE NUMBER
PLAN_HASH_VALUE NUMBER
CHILD_NUMBER NUMBER ---------- 注意这个
MODULE VARCHAR2(64)
MODULE_HASH NUMBER
ACTION VARCHAR2(64)
ACTION_HASH NUMBER
SERIALIZABLE_ABORTS NUMBER
OUTLINE_CATEGORY VARCHAR2(64)
CPU_TIME NUMBER
ELAPSED_TIME NUMBER
OUTLINE_SID NUMBER -------------- 注意这里跟 outline 有关
CHILD_ADDRESS RAW(4)
SQLTYPE NUMBER
REMOTE VARCHAR2(1)
OBJECT_STATUS VARCHAR2(19)
LITERAL_HASH_VALUE NUMBER
LAST_LOAD_TIME VARCHAR2(38)
IS_OBSOLETE VARCHAR2(1)
CHILD_LATCH NUMBER


另外注意这个
QL> desc v$sql_plan
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDRESS RAW(4)
HASH_VALUE NUMBER
CHILD_NUMBER NUMBER ------------ 注意这个和 v$sql 里面的相同字段
OPERATION VARCHAR2(60)
OPTIONS VARCHAR2(60)
OBJECT_NODE VARCHAR2(20)
OBJECT# NUMBER
OBJECT_OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(64)
OPTIMIZER VARCHAR2(40)
ID NUMBER
PARENT_ID NUMBER
DEPTH NUMBER
POSITION NUMBER
SEARCH_COLUMNS NUMBER
COST NUMBER
CARDINALITY NUMBER
BYTES NUMBER
OTHER_TAG VARCHAR2(70)
PARTITION_START VARCHAR2(10)
PARTITION_STOP VARCHAR2(10)
PARTITION_ID NUMBER
OTHER VARCHAR2(4000)
DISTRIBUTION VARCHAR2(40)
CPU_COST NUMBER
IO_COST NUMBER
TEMP_SPACE NUMBER
ACCESS_PREDICATES VARCHAR2(4000)
FILTER_PREDICATES VARCHAR2(4000)


实际上,看起来同样的一句SQL ,往往具有不同的执行计划,如果是不同的数据库用户,那么相应的涉及的 对象 可能都不一样,注意v$sql 中
OBJECT# NUMBER
OBJECT_OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(64)
OPTIMIZER VARCHAR2(40)

即使是相同的数据库用户,若 session 的优化模式、session 级的参数 等不一样,执行计划也能不同。所以即使相同的sql,也可能具有不同的执行计划!

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

ADDRESS RAW(4)
HASH_VALUE NUMBER
CHILD_NUMBER NUMBER


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


oracle sql资源消耗相关视图:v$sql,v$sqlarea,v$sqltext

今天要验证一个Full table scan问题的patch,需要分析一下sql执行情况,用到了v$sqlarea视图,感觉这篇文章讲得挺明白,摘抄一部分做个读书笔记。 1       常用视图说明...
  • u013933870
  • u013933870
  • 2016年06月12日 22:51
  • 2394

查找oracle 需要优化的SQL (一) 之v$SQLarea

1、按物理读 读取磁盘次数   select s.SQL_FULLTEXT,s.DISK_READS/s.EXECUTIONS  from v$sqlarea s where s.EXECUTION...
  • u012952442
  • u012952442
  • 2016年09月05日 16:44
  • 176

v$sqlarea,v$sql,v$sqltext的区别和联系

v$sqltext 存储的是完整的SQL,SQL被分割SQL> desc v$sqltextName Null? Type---------------------------------------...
  • biti_rainy
  • biti_rainy
  • 2004年07月05日 17:48
  • 9001

V$SQLAREA

v$SQLAREA  是一张描述shared pool 父游标信息的视图。其含义为 Column Datatype Description 含义 SQL_...
  • daohengshangqian
  • daohengshangqian
  • 2015年09月28日 22:53
  • 1311

学习v$sql,v$sqlarea,v$sqltext,v$sqlstats和v$sql_plan

V$SQL  V$SQL在子游标级别上列出了在共享sql区域的统计信息,他将原始sql文本展现为一行。V$SQL中的视图信息一般在sql执行的最后进行更新。然而,对于长时间执行的sql,每5秒会更新一...
  • u012422541
  • u012422541
  • 2015年03月28日 23:18
  • 1088

v$sqlarea,v$sql,v$sqltext提供的sql语句区别

v$sqltext   存储的是完整的SQL,SQL被分割   SQL> desc v$sqltext   Name Null? Type   --------------------...
  • jlds123
  • jlds123
  • 2011年11月23日 10:05
  • 526

v$sql,v$sqlarea,v$sqltext有什么区别

共同点: 1)都存储了sql内容 2) 记录的都是位于内存中的sql内容 3) 因为是内存,所以都不保留历史记录 不同点: 1)存储的为止不都是相同。其中v$sql和v$...
  • study4034
  • study4034
  • 2016年05月06日 13:58
  • 340

V$SESSION、V$SQLTEXT、V$SQLAREA、V$SQL

转载自:http://lizhiyu.iteye.com/blog/966626    oracle系统表v$session、v$sql表的列字段说明 在本视图中,每一个连接到数据库实...
  • xuelanggongwu
  • xuelanggongwu
  • 2013年11月19日 13:37
  • 1725

视图 v$sql,v$sqlarea,$sqltext,v$sqltext_with_newlines 的差异

视图v$sql,v$sqlarea,v$sqltext,v$sqltext_with_newlines 是几个经常容易混淆的视图,主要是提供library cache中当前缓存的sql语句的信息。这几...
  • robinson_0612
  • robinson_0612
  • 2013年03月11日 10:27
  • 5482

V$SQL,V$SQLAREA,V$SQLTEXT

V$SQL*表用于查看Shared SQL Area中SQL情况V$SQLTEXTV$SQLTEXT用途很简单,就是用来查看完整的SQL语句,V$SQL和V$SQLAREA只能显示1000 bytes...
  • pan_tian
  • pan_tian
  • 2012年12月07日 16:04
  • 3971
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:v$sqlarea,v$sql,v$sqltext的区别和联系
举报原因:
原因补充:

(最多只允许输入30个字)