ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 16025|回复: 32

[精华] 请问v$sqlarea,v$sql,v$sqltext这三个视图提供的sql语句有什么区别? [复制链接]

注册会员

Oracle深入讨论组成员

精华贴数
3
技术积分
699
社区积分
4
注册时间
2002-1-25
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
发表于 2003-12-15 16:04:01 |显示全部楼层
对这三个视图的区别一直很迷惑,有时候通过他们查出的某个session正在执行的sql语句是一样的,有时候又不一样。
尝试查看v_$fixed_view_definition中的取数口径,发现引用了一些x$表,三个视图的取数方式确实不一样,但是看不懂到底有什么区别。

请大侠指点迷津,谢谢!

注册会员

Oracle深入讨论组成员

精华贴数
3
技术积分
699
社区积分
4
注册时间
2002-1-25
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
发表于 2003-12-15 21:14:37 |显示全部楼层
顶一下,我觉得这个问题挺重要的,希望引起注意,谢谢!

使用道具 举报

版主

版主

精华贴数
8
技术积分
25730
社区积分
4455
注册时间
2002-7-31
论坛徽章:
83
2012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:45现任管理团队成员
日期:2011-05-07 01:45:08茶鸡蛋
日期:2011-07-01 11:13:50双黄蛋
日期:2011-09-11 22:18:13咸鸭蛋
日期:2011-10-18 13:42:31ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41咸鸭蛋
日期:2011-12-22 15:12:51
发表于 2003-12-15 21:23:09 |显示全部楼层
我也关注

使用道具 举报

注册会员

街头混混

精华贴数
0
技术积分
4028
社区积分
308
注册时间
2002-4-14
论坛徽章:
14
ITPUB元老
日期:2005-04-27 08:46:182012新春纪念徽章
日期:2012-01-04 11:49:54鲜花蛋
日期:2011-12-27 22:39:172010新春纪念徽章
日期:2010-03-01 11:20:51生肖徽章2007版:牛
日期:2009-07-13 12:53:13生肖徽章2007版:蛇
日期:2009-03-19 13:57:24生肖徽章2007版:牛
日期:2008-12-17 10:30:432008北京奥运纪念徽章:足球
日期:2008-10-24 13:28:142008北京奥运纪念徽章:皮划艇激流回旋
日期:2008-05-16 12:15:312008北京奥运纪念徽章:柔道
日期:2008-05-15 17:11:282008北京奥运纪念徽章:射击
日期:2008-05-14 13:35:46会员2006贡献徽章
日期:2006-04-17 13:46:34
发表于 2003-12-15 23:06:11 |显示全部楼层
先抛块砖,但愿能引点玉来
v$sqltext中有内存中完整的sql语句,而其他两个视图都是部分sql语句。但v$sqltext中没有该语句的统计信息,比如执行次数等。

而v$sql和v$sqlarea好像差不多,我好像没看出有多大区别。

使用道具 举报

超级版主

人生就是如此

精华贴数
39
技术积分
113462
社区积分
12356
注册时间
2001-12-12
论坛徽章:
73
ITPUB元老
日期:2005-02-28 12:57:00ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41蜘蛛蛋
日期:2011-07-01 08:38:17蛋疼蛋
日期:2011-05-27 08:50:45现任管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:皮划艇
日期:2011-04-26 11:24:14咸鸭蛋
日期:2011-11-09 09:55:402011新春纪念徽章
日期:2011-02-18 11:43:322011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
发表于 2003-12-16 00:50:43 |显示全部楼层
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的聚合和累计信息

使用道具 举报

注册会员

中级会员

精华贴数
0
技术积分
704
社区积分
7
注册时间
2003-7-3
论坛徽章:
1
2011新春纪念徽章
日期:2011-02-18 11:43:34
发表于 2003-12-16 08:47:28 |显示全部楼层
解释的很详细,收藏!

使用道具 举报

注册会员

中级会员

精华贴数
1
技术积分
1037
社区积分
355
注册时间
2003-1-17
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
发表于 2003-12-16 09:31:21 |显示全部楼层
真是解释的漂亮!
一下就看清楚了!

使用道具 举报

注册会员

Oracle深入讨论组成员

精华贴数
3
技术积分
699
社区积分
4
注册时间
2002-1-25
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
发表于 2003-12-16 22:00:16 |显示全部楼层
谢谢回复!
请问biti,如果对动态视图的某些字段含义不理解,有没有相关资料或者相关网站的介绍,感觉Oracle这方面的资料好少?
呵呵,希望授之以渔,谢谢!

使用道具 举报

版主

顾三

精华贴数
16
技术积分
29097
社区积分
6661
注册时间
2001-12-22
论坛徽章:
43
2012新春纪念徽章
日期:2012-01-04 11:49:54
发表于 2003-12-16 22:06:45 |显示全部楼层
哎,平时只知道用,从没有注意过它们之间的差别

使用道具 举报

超级版主

天下有雪

精华贴数
66
技术积分
208411
社区积分
6479
注册时间
2001-10-8
论坛徽章:
100
ITPUB元老
日期:2005-02-28 12:57:00ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36现任管理团队成员
日期:2011-05-07 01:45:08ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB技术丛书作者
日期:2010-09-26 15:00:232010系统架构师大会纪念
日期:2010-09-03 16:39:572010数据库技术大会纪念徽章
日期:2010-05-13 10:04:282009架构师大会纪念徽章
日期:2010-01-18 13:43:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:212009日食纪念
日期:2009-07-22 09:30:00参与2009年中国云计算大会纪念
日期:2009-06-05 10:02:28
发表于 2003-12-16 22:08:12 |显示全部楼层
其实这几个视图都来自x$kglcursor表,你查一下v$sqltext 及 v$sql的创建语句就清楚了

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部