首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区
【标  题】:Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区
【关键字】:Oracle9i,sql,sqlarea,sqltext,sql_plan
【来  源】:http://www.cublog.cn/u/1110/showart.php?id=161543

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

Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区别
对于同一个SQL语句,如果在不同环境下使用了不同的优化器目标的情况下,会有不同的执行计划,
这样就要求分别有一个独立的游标(即子游标)来区别出每一种情况下的不同的运行行为。
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的行顺序。
关系型数据库范式:【上一篇】
Oracle SQL 內置函數大全.txt:【下一篇】
【相关文章】
  • Mysql5.0+JSP+Servlet中文解决三步走[原创]
  • EL4-update3下mysql集群的配置
  • 原来mysql不支持外键,要用InnoDB才可以..
  • MYSQL教程 【原创】
  • mysql-5.0.22.tar.gz包安装问题
  • MySQL的系统管理员
  • rhas3.0+qmail+mysql+smtp+vpopmail+igenus+qmailadmi
  • mysql+php+apache
  • Asp.net 2.0中TreeView动态加载SQL数据库
  • RS.OPEN SQL,CONN,A,B随写
  • 【随机文章】
  • SQL Server 中易混淆的数据类型
  • 数据库的导出导入
  • Java Servlet API说明文档
  • 一个很好的菜单源码
  • GPRS带您进入无线互联网时代
  • QQ聊天当心木马病毒“狩猎者”
  • 软件架构设计过程
  • Lisp实战: 三对角线性方程组的追赶法
  • 逆向工程之还原源代码演示
  • 如何精确计算出一个算法的CPU运行时间?
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.