加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

34.Oracle杂记——Oracle常用动态视图v$sqltext

发布时间:2020-12-12 14:18:47 所属栏目:百科 来源:网络整理
导读:34.Oracle杂记——Oracle常用动态视图v$sqltext 视图v$sqltext显示SGA中共享SQL游标中的 SQL语句文本。 视图描述如下: sys@PDB1 desc v$sqltext; Name Null? Type ------------------------------------------------------------- ------------------------

34.Oracle杂记——Oracle常用动态视图v$sqltext

视图v$sqltext显示SGA中共享SQL游标中的 SQL语句文本。

视图描述如下:

sys@PDB1> desc v$sqltext;

Name Null? Type

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

ADDRESS RAW(8)

HASH_VALUE NUMBER

SQL_ID VARCHAR2(13)

COMMAND_TYPE NUMBER

PIECE NUMBER

SQL_TEXT VARCHAR2(64)

CON_ID NUMBER

各个列属性如下:

ADDRESS :和HASH_VALUE列唯一确定缓存的游标

HASH_VALUE :和ADDRESS列唯一确认缓存的游标

SQL_ID:缓存游标的SQLID

COMMAND_TYPE:SQL语句的类型(SELECT,INSERT等)

PIECE:用于SQL文本排序的号(SQL语句被分片了,需要需要排序合成)

SQL_TEXT:SQL文本的其中一部分

CON_ID:容器ID

v$sql,v$sqltext,v$sqlarea差异

这3个视图:v$sql,v$sqlarea的关系比较微妙:

简单描述如下:

主要是提供library cache中当前缓存的sql语句的信息。都可以提供当前有关sql语句的具体信息,但稍有差异。

游标,包含shared cursor,sessioncursor,一条sql语句对应一个或多个游标,一条sql语句至少解析为一个游标。

当sql语句被解析到shared_pool中之后,会产生相应的游标,如下三种情形,
a、存在可完全共享的父游标
b、父游标存在,但是由于执行环境的变化,不得不生存新的子游标
c、没有父游标存在,需要生成全新的游标
对于情形a,由于存在可共享的父游标,也就是说v$sql中必定已经存在一个对应的sql游标,我们可以查询到,执行之后对应executions及相关列会发生变化。
对于情形b或c,sql语句产生的游标会被添加到v$sql视图,也即是新增游标(b为新增子游标,c为新增父游标)。

注:在shared_pool由于aged out原则后的sql可能无法在该视图查询到,

v$sql存储所有游标,v$sqlarea等同于使用了distinct关键字,仅保留sql语句。v$sqltext提供完整的sql语句。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读