v$sqltext中有内存中完整的sql语句(SQL被分割为多行存储),而其他两个视图都是部分sql语句。但v$sqltext中存储的比较简单,没有该语句的统计信息,比如执行次数等。

v$sqltext 的字段如下: 
ADDRESS       RAW(4 | 8)     Used with HASH_VALUE to uniquely identify a cached cursor 
HASH_VALUE    NUMBER         Used with ADDRESS to uniquely identify a cached cursor 
SQL_ID        VARCHAR2(13)   SQL identifier of a cached cursor 
COMMAND_TYPE  NUMBER         Code for the type of SQL statement (SELECT, INSERT, and so on) 
PIECE         NUMBER         Number used to order the pieces of SQL text 
SQL_TEXT      VARCHAR2(64)   A column containing one piece of the SQL text

其中piece表示SQL语句分片之后的顺序编号,比如三行的值为0,1,2, 按照顺序连接起来就是一个完成的SQL语句。 
sql_text 表示分片后的sql语句的一部分,注意它的长度只有64 bytes . 字段HASH_VALUE 和 address 一起唯一标志一条sql 。

v$sql :   存储的是具体的SQL 和执行计划相关信息。

v$sqlarea : 存储SQL语句的前1000个bytes和一些相关的统计信息,比如累计的执行次数,逻辑读,物理读等统计信息
V$SQLAREA 在Oracle9i, Oracle10.1 和Oracle10.2 版本中字段定义都不太一样,Oracle10.2 中会多出sql_fulltext字段,
是一个CLOB字段。

实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by 之后的信息 。

--------------------------------------------------------------------------------------------------------------

1、可以通过以下语句查一下这些视图的定义,可以看出v$sql及v$sqlarea的源表比较接近 。

SELECT view_definition FROM v$fixed_view_definition WHERE view_name='GV$SQL';
SELECT view_definition FROM v$fixed_view_definition WHERE view_name='GV$SQLAREA'; 
SELECT view_definition FROM v$fixed_view_definition WHERE view_name='GV$SQLTEXT';

-- V$SQL 在Oracle10.2.0.4 中的定义:

select inst_id,kglnaobj,kglfnobj,kglobt03, kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6+kglobt16, 
kglobt08+kglobt11, kglobt10, kglobt01, decode(kglobhs6,0,0,1), decode(kglhdlmd,0,0,1), kglhdlkc, kglobt04, kglobt05, 
kglobt48, kglobt35, kglobpc6, kglhdldc, substr(to_char(kglnatim,'YYYY-MM-DD/HH24:MI:SS'),1,19), kglhdivc, kglobt12, 
kglobt13, kglobwdw, kglobt14, kglobwap, kglobwcc, kglobwcl, kglobwui, kglobt42, kglobt43, kglobt15, kglobt02, 
decode(kglobt32,        0, 'NONE',        1, 'ALL_ROWS',        2, 'FIRST_ROWS',        3, 'RULE',        4, 'CHOOSE', 
'UNKNOWN'), kglobtn0, kglobcce, kglobcceh, kglobt17, kglobt18, kglobts4, kglhdkmk, kglhdpar, kglobtp0, kglnahsh, kglobt46, 
kglobt30, kglobt09, kglobts5, kglobt48, kglobts0, kglobt19, kglobts1, kglobt20, kglobt21, kglobts2, kglobt06, kglobt07, 
decode(kglobt28, 0, to_number(NULL), kglobt28), kglhdadr, kglobt29, decode(bitand(kglobt00,64),64, 'Y', 'N'), 
decode(kglobsta, 1, 'VALID', 2, 'VALID_AUTH_ERROR',3, 'VALID_COMPILE_ERROR', 4, 
'VALID_UNAUTH', 5, 'INVALID_UNAUTH', 6, 'INVALID'), kglobt31, substr(to_char(kglobtt0,'YYYY-MM-DD/HH24:MI:SS'),1,19), 
decode(kglobt33, 1, 'Y', 'N'),  kglhdclt, kglobts3, kglobt44, kglobt45, kglobt47, kglobt49, kglobcla,  kglobcbca, kglobt22  
from   x$kglcursor_child

--V$SQLAREA 在Oracle10.2.0.4 中的定义:

select inst_id, kglnaobj, kglfnobj, kglobt03, kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6, kglobt08+kglobt11, 
kglobt10, kglobt01, kglobccc, kglobclc, kglhdlmd, kglhdlkc, kglobt04, kglobt05, kglobt48, kglobt35, kglobpc6, kglhdldc, 
substr(to_char(kglnatim,'YYYY-MM-DD/HH24:MI:SS'),1,19), kglhdivc, kglobt12, kglobt13, kglobwdw, kglobt14, kglobwap, 
kglobwcc, kglobwcl, kglobwui, kglobt42, kglobt43, kglobt15, kglobt02, decode(kglobt32, 0, 'NONE',1, 'ALL_ROWS',  2, 'FIRST_ROWS', 
3, 'RULE', 4, 'CHOOSE', 'UNKNOWN'), kglobtn0, kglobcce, kglobcceh, kglobt17, kglobt18, kglobts4, kglhdkmk, kglhdpar, kglnahsh, 
kglobt46, kglobt30, kglobts0, kglobt19, kglobts1, kglobt20, kglobt21, kglobts2, kglobt06, kglobt07, 
decode(kglobt28, 0, NULL, kglobt28), kglhdadr, decode(bitand(kglobt00,64),64, 'Y', 'N'), 
decode(kglobsta,1, 'VALID', 2, 'VALID_AUTH_ERROR',3, 'VALID_COMPILE_ERROR', 4, 'VALID_UNAUTH', 5, 'INVALID_UNAUTH',6, 'INVALID'), 
kglobt31, kglobtt0, decode(kglobt33, 1, 'Y', 'N'),  kglhdclt, kglobts3, kglobt44, kglobt45, kglobt47, kglobt49,  kglobcla,  
kglobcbca,  kglobt22  
from  x$kglcursor_child_sqlid  
where kglobt02 != 0

--V$SQLTEXT 在Oracle10.2.0.4 中的定义:

select inst_id,kglhdadr, kglnahsh, kglnasqlid, kgloboct, piece, name  
from x$kglna 
where kgloboct != 0

2、v$sql与v$sqlarea的区别与联系 :

a、v$sqlarea相当于是按INST_ID, KGLNAOBJ, KGLHDPAR, KGLNAHSH, KGLNATIM, GLOBTS0,GLOBT19, KGLOBTS1, KGLOBT20,DECODE(KGLOBT33, 1, 'Y', 'N'),
KGLHDCLT这些列的自v$sql的group by,也就是说v$sql的每一行表示的是每一个sql语句的一个version,而v$sqlarea存放的是相同语句不同version一个汇总
(相同语句只有一行记录,但是version_count记录了次数)。

b、实际调优中建议使用v$sql, 相对来说比v$sqlarea快,而且还不会产生share pool latch的争用。

3、因v$sql及v$sqlarea存放着统计信息在调优时使用居多,但其sql是不全的,如果想获得完整的sql就要用v$sqltext了。

转载于:https://www.cnblogs.com/ayumie/p/10910516.html

Oracle v$sql,v$sqlarea,v$sqltext区别相关推荐

  1. oracle语法和sql的区别吗,ORACLE和SQL语法区别归纳

    ORACLE和SQL语法区别归纳 数据类型比较 类型名称 Oracle SQLServer 比较 字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle里面最大度为2kb,SQLServ ...

  2. oracle stdevp函数,ORACLE和SQL语法区别归纳整理.doc

    ORACLE和SQL语法区别归纳整理 一.数据类型比较⑴.字符数据类型?? CHAR?? CHAR?? 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb变长 ...

  3. oracle sql execute elapsed time,sql duration 和 elapsed_time 的区别

    今天在处理一个long run sql的时候发现了这个问题,sql duration和elapsed_time的区别貌似有时候非常大. oracle doc上关于 elaspsed_time : EL ...

  4. oracle常用SQL语句(汇总版)

    原文地址:https://www.cnblogs.com/xrhou12326/p/4094737.html Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语 ...

  5. oracle12测试骤,Oracle中SQL语句解析的步骤

    我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析.那么这两种解析有何不同之处呢?它们又分别是如何进行解析呢?Oracle内部解析的步骤又是如何进行的呢?下面 ...

  6. Oracle的SQL语句优化(满满干货,建议收藏!)

    1. SQL语句执行步骤 语法分析> 语义分析> 视图转换 >表达式转换> 选择优化器 >选择连接方式 >选择连接顺序 >选择数据的搜索路径 >运行&q ...

  7. Oracle数据库SQL语句操作大全汇总

    数据库各个表空间增长情况的检查: SQL >SELECT A.TABLESPACE_NAME,( 1-(A.TOTAL)/B.TOTAL)*100 USED_PERCENTFROM (SELEC ...

  8. Oracle的SQL语句大全(摘)--- 复杂

    数据库各个表空间增长情况的检查: SQL >SELECT A.TABLESPACE_NAME,( 1 -(A.TOTAL)/B.TOTAL)* 100 USED_PERCENT FROM (SE ...

  9. Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据

    Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...

  10. oracle逻辑备份和物理备份,oracle数据库物理备份和逻辑备份区别

    oracle数据库物理备份和逻辑备份区别 ORACLE中数据备份分为物理备份和逻辑备份两种.物理备份就是转储ORACLE物理文件(如数据文件.控制文件.归档日志文件等),一旦数据库发生故障,可以利用这 ...

最新文章

  1. jQuery三级下拉菜单
  2. ES6/7 异步编程学习笔记
  3. 一个大一新生对于计算机学科的思考
  4. qml入门学习(五):alias
  5. 单片机模拟计算机课设,单片机课程设计题目汇总(全)
  6. mysql(安装、启动、删除)服务
  7. Batch size对训练效果的影响
  8. 搭建RoacketChat(v4.5.1)聊天服务。有生之年,我也能使用上自己搭建的聊天服务器
  9. 怎么用ppt去演示html,如何将PPT演示同步发布到浏览器?
  10. php webqq登陆,Smart QQ——腾讯新一代网页版 WebQQ,更简洁纯粹的实用在线聊天工具!...
  11. 打开CMD的方式及常用的DOS命令
  12. LVGL开发 | lv_lib_100ask之lvgl数字对拼图小游戏(lv_100ask_memory_game)-接口简单、使用便捷
  13. Redis 安装说明
  14. Excelize 发布 2.6.0 版本,功能强大的 Excel 文档基础库
  15. Python之warnings模块忽略warning警告错误
  16. Spring Boot 整合 阿里云短信(模板模式)
  17. 展讯平台GPIO调试方法
  18. 我看你骨骼惊奇,送你本武林秘籍--《三子棋至多子棋的扩展》
  19. 写一篇产品体验报告需从哪些方面入手?
  20. Linux命令之系统五大负载(监控脚本及问题详解)

热门文章

  1. JavaSE——Java8之函数式接口、函数式编程、Lambda表达式
  2. (*(void(*)())0)();
  3. dell服务器怎么用u盘系统安装win7系统教程,戴尔DellU盘重装系统操作教程
  4. html css菜鸟,CSS菜鸟教程阅读笔记
  5. oracle虚拟件不活动,BOM 中的虚拟件
  6. PHP包含文件函数include、include_once、require、require_once区别和总结
  7. Spark API 之 cogroup 使用
  8. ES(Elasticsearch)更改字段索引
  9. Nginx 配置文件 nginx.conf 说明、内置变量、常用命令
  10. matlab超限像素平滑法_教程 | 不做手残党,玩转像素风LOGO的三大实用技巧!