文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注
对于同一个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的行顺序。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯