广告
返回顶部
首页 > 资讯 > 数据库 >Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区别
  • 439
分享到

Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区别

2024-04-02 19:04:59 439人浏览 泡泡鱼
摘要

对于同一个sql语句,如果在不同环境下使用了不同的优化器目标的情况下,会有不同的执行计划,这样就要求分别有一个独立的游标(即子游标)来区别出每一种情况下的不同的运行行为。[@more@]oracle用v$s

对于同一个sql语句,如果在不同环境下使用了不同的优化器目标的情况下,会有不同的执行计划,
这样就要求分别有一个独立的游标(即子游标)来区别出每一种情况下的不同的运行行为。[@more@]

oracle用v$sqlarea中一行保存同样语句的SQL,并用字段version_count的值来指出子游标的个
数,而在v$sql里面为每个子游标保留了一个单独的行。两个表可以通过字段address和hash_value
相互对应。例如下面例子:

SQL> select address,hash_value,sql_text,version_count
  2  from v$sqlarea where sql_text like 'select value$ from sys.props%';

ADDRESS  HASH_VALUE SQL_TEXT                                       VERSION_COUNT
-------- ---------- ---------------------------------------------- -------------
97F1C9C4  563046721 select value$ from sys.props$ where name = :1   3

SQL> select address,hash_value,child_address,child_number,sql_text
  2  from v$sql where sql_text like 'select value$ from sys.props%';

ADDRESS  HASH_VALUE CHILD_ADDRESS CHILD_NUMBER SQL_TEXT
-------- ---------- ------------- ------------ ----------------------------------------------
97F1C9C4  563046721 97F1C448                 0 select value$ from sys.props$ where name = :1
97F1C9C4  563046721 97EAD3B0                 1 select value$ from sys.props$ where name = :1
97F1C9C4  563046721 97E7EEF0                 2 select value$ from sys.props$ where name = :1

如果想找出这个SQL语句的执行计划,也可以通过字段address、hash_value和child_number到v$sql_plan中查找,
v$sql_plan中是区分了不同子游标的执行计划的

SQL> select address,child_number,lpad('',2*level)||operation||decode(id,0,' cost='||position) op,
  2         options,object_name
  3    from v$sql_plan t where address='97F1C9C4' and hash_value=563046721;

ADDRESS  CHILD_NUMBER OP                        OPTIONS     OBJECT_NAME 
-------- ------------ ------------------------- ----------- -------------
97F1C9C4            2 SELECT STATEMENT cost=0              
97F1C9C4            2 TABLE ACCESS              FULL        PROPS$
97F1C9C4            1 SELECT STATEMENT cost=0              
97F1C9C4            1 TABLE ACCESS              FULL        PROPS$
97F1C9C4            0 SELECT STATEMENT cost=0              
97F1C9C4            0 TABLE ACCESS              FULL        PROPS$

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

您可能感兴趣的文档:

--结束END--

本文标题: Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区别

本文链接: https://www.lsjlt.com/news/46811.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区别
    对于同一个SQL语句,如果在不同环境下使用了不同的优化器目标的情况下,会有不同的执行计划,这样就要求分别有一个独立的游标(即子游标)来区别出每一种情况下的不同的运行行为。[@more@]Oracle用v$s...
    99+
    2022-10-18
  • v$sql,v$sqlarea,v$sqltext的区别是什么
    v$sql,v$sqlarea,v$sqltext的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。v$sqltext中有内存中完整的sql语句(SQL被分割为多行存储...
    99+
    2023-06-06
  • VUE中的v-if与v-show区别介绍
    1.共同点 都是动态显示DOM元素 2.区别 (1)手段:v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐;(2)...
    99+
    2022-11-13
  • VUE中的v-if与v-show有什么区别
    这篇文章将为大家详细讲解有关VUE中的v-if与v-show有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.共同点都是动态显示DOM元素2.区别(1)手段:v-if是动态的向DOM树内添加或者...
    99+
    2023-06-29
  • Dockerfile 中 VOLUME 与 docker -v 的区别说明
    Dockerfile 中的 VOLUME 挂载与 docker -v 命令挂载,两者有明显区别: 1、VOLUME Dockerfile中 VOLUME 方式挂载到宿主机上的是匿名卷...
    99+
    2022-11-11
  • Dockerfile中VOLUME与docker -v的区别是什么
    这篇文章主要介绍Dockerfile中VOLUME与docker -v的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Dockerfile 中的 VOLUME 挂载与 docker -v 命令挂载,两者有明...
    99+
    2023-06-14
  • vue中v-model指令与.sync修饰符的区别详解
    目录v-model .sync 细微之处的区别 总结功能作用场景: v-model <!--父组件--> <template> ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作