GVKun编程网logo

Oracle v$sql,v$sqlarea,v$sqltext 区别(v$sql和v$sqlarea)

3

在本文中,我们将为您详细介绍Oraclev$sql,v$sqlarea,v$sqltext区别的相关知识,并且为您解答关于v$sql和v$sqlarea的疑问,此外,我们还会提供一些关于32.Orac

在本文中,我们将为您详细介绍Oracle v$sql,v$sqlarea,v$sqltext 区别的相关知识,并且为您解答关于v$sql和v$sqlarea的疑问,此外,我们还会提供一些关于32.Oracle杂记——Oracle常用动态视图v$sqlarea、34.Oracle杂记——Oracle常用动态视图v$sqltext、For oracle databases, if the top showing the oracle database, then oracle process is using the top c、NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)的有用信息。

本文目录一览:

Oracle v$sql,v$sqlarea,v$sqltext 区别(v$sql和v$sqlarea)

Oracle v$sql,v$sqlarea,v$sqltext 区别(v$sql和v$sqlarea)

v$sqltext 中有内存中完整的 sql 语句 (SQL 被分割为多行存储),而其他两个视图都是部分 sql 语句。但 v$sqltext 中存储的比较简单,没有该语句的统计信息,比如执行次数等。

v$sqltext 的字段如下: 
ADDRESS       RAW(4 | 8)     Used with HASH_VALUE to uniquely identify a cached cursor 
HASH_VALUE    NUMBER         Used with ADDRESS to uniquely identify a cached cursor 
SQL_ID        VARCHAR2(13)   SQL identifier of a cached cursor 
COMMAND_TYPE  NUMBER         Code for the type of SQL statement (SELECT, INSERT, and so on) 
PIECE         NUMBER         Number used to order the pieces of SQL text 
SQL_TEXT      VARCHAR2(64)   A column containing one piece of the SQL text


其中 piece 表示 SQL 语句分片之后的顺序编号,比如三行的值为 0,1,2, 按照顺序连接起来就是一个完成的 SQL 语句。 
sql_text 表示分片后的 sql 语句的一部分,注意它的长度只有 64 bytes . 字段 HASH_VALUE 和 address 一起唯一标志一条 sql 。

 

v$sql :   存储的是具体的 SQL 和执行计划相关信息。

v$sqlarea : 存储 SQL 语句的前 1000 个 bytes 和一些相关的统计信息,比如累计的执行次数,逻辑读,物理读等统计信息
V$SQLAREA 在 Oracle9i, Oracle10.1 和 Oracle10.2 版本中字段定义都不太一样,Oracle10.2 中会多出 sql_fulltext 字段,
是一个 CLOB 字段。

实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by 之后的信息 。

 


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

 

1、可以通过以下语句查一下这些视图的定义,可以看出 v$sql 及 v$sqlarea 的源表比较接近 。 

SELECT view_definition FROM v$fixed_view_definition WHERE view_name=''GV$SQL'';
SELECT view_definition FROM v$fixed_view_definition WHERE view_name=''GV$SQLAREA''; 
SELECT view_definition FROM v$fixed_view_definition WHERE view_name=''GV$SQLTEXT'';


-- V$SQL 在 Oracle10.2.0.4 中的定义:

select inst_id,kglnaobj,kglfnobj,kglobt03, kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6+kglobt16, 
kglobt08+kglobt11, kglobt10, kglobt01, decode(kglobhs6,0,0,1), decode(kglhdlmd,0,0,1), kglhdlkc, kglobt04, kglobt05, 
kglobt48, kglobt35, kglobpc6, kglhdldc, substr(to_char(kglnatim,''YYYY-MM-DD/HH24:MI:SS''),1,19), kglhdivc, kglobt12, 
kglobt13, kglobwdw, kglobt14, kglobwap, kglobwcc, kglobwcl, kglobwui, kglobt42, kglobt43, kglobt15, kglobt02, 
decode(kglobt32,        0, ''NONE'',        1, ''ALL_ROWS'',        2, ''FIRST_ROWS'',        3, ''RULE'',        4, ''CHOOSE'', 
''UNKNOWN''), kglobtn0, kglobcce, kglobcceh, kglobt17, kglobt18, kglobts4, kglhdkmk, kglhdpar, kglobtp0, kglnahsh, kglobt46, 
kglobt30, kglobt09, kglobts5, kglobt48, kglobts0, kglobt19, kglobts1, kglobt20, kglobt21, kglobts2, kglobt06, kglobt07, 
decode(kglobt28, 0, to_number(NULL), kglobt28), kglhdadr, kglobt29, decode(bitand(kglobt00,64),64, ''Y'', ''N''), 
decode(kglobsta, 1, ''VALID'', 2, ''VALID_AUTH_ERROR'',3, ''VALID_COMPILE_ERROR'', 4, 
''VALID_UNAUTH'', 5, ''INVALID_UNAUTH'', 6, ''INVALID''), kglobt31, substr(to_char(kglobtt0,''YYYY-MM-DD/HH24:MI:SS''),1,19), 
decode(kglobt33, 1, ''Y'', ''N''),  kglhdclt, kglobts3, kglobt44, kglobt45, kglobt47, kglobt49, kglobcla,  kglobcbca, kglobt22  
from   x$kglcursor_child

 

--V$SQLAREA 在 Oracle10.2.0.4 中的定义:

select inst_id, kglnaobj, kglfnobj, kglobt03, kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6, kglobt08+kglobt11, 
kglobt10, kglobt01, kglobccc, kglobclc, kglhdlmd, kglhdlkc, kglobt04, kglobt05, kglobt48, kglobt35, kglobpc6, kglhdldc, 
substr(to_char(kglnatim,''YYYY-MM-DD/HH24:MI:SS''),1,19), kglhdivc, kglobt12, kglobt13, kglobwdw, kglobt14, kglobwap, 
kglobwcc, kglobwcl, kglobwui, kglobt42, kglobt43, kglobt15, kglobt02, decode(kglobt32, 0, ''NONE'',1, ''ALL_ROWS'',  2, ''FIRST_ROWS'', 
3, ''RULE'', 4, ''CHOOSE'', ''UNKNOWN''), kglobtn0, kglobcce, kglobcceh, kglobt17, kglobt18, kglobts4, kglhdkmk, kglhdpar, kglnahsh, 
kglobt46, kglobt30, kglobts0, kglobt19, kglobts1, kglobt20, kglobt21, kglobts2, kglobt06, kglobt07, 
decode(kglobt28, 0, NULL, kglobt28), kglhdadr, decode(bitand(kglobt00,64),64, ''Y'', ''N''), 
decode(kglobsta,1, ''VALID'', 2, ''VALID_AUTH_ERROR'',3, ''VALID_COMPILE_ERROR'', 4, ''VALID_UNAUTH'', 5, ''INVALID_UNAUTH'',6, ''INVALID''), 
kglobt31, kglobtt0, decode(kglobt33, 1, ''Y'', ''N''),  kglhdclt, kglobts3, kglobt44, kglobt45, kglobt47, kglobt49,  kglobcla,  
kglobcbca,  kglobt22  
from  x$kglcursor_child_sqlid  
where kglobt02 != 0

 

--V$SQLTEXT 在 Oracle10.2.0.4 中的定义:

select inst_id,kglhdadr, kglnahsh, kglnasqlid, kgloboct, piece, name  
from x$kglna 
where kgloboct != 0

 


2、v$sql 与 v$sqlarea 的区别与联系 :

a、v$sqlarea 相当于是按 INST_ID, KGLNAOBJ, KGLHDPAR, KGLNAHSH, KGLNATIM, GLOBTS0,GLOBT19, KGLOBTS1, KGLOBT20,DECODE (KGLOBT33, 1, ''Y'', ''N''),
KGLHDCLT 这些列的自 v$sql 的 group by,也就是说 v$sql 的每一行表示的是每一个 sql 语句的一个 version,而 v$sqlarea 存放的是相同语句不同 version 一个汇总
(相同语句只有一行记录,但是 version_count 记录了次数)。

b、实际调优中建议使用 v$sql, 相对来说比 v$sqlarea 快,而且还不会产生 share pool latch 的争用。

 

3、因 v$sql 及 v$sqlarea 存放着统计信息在调优时使用居多,但其 sql 是不全的,如果想获得完整的 sql 就要用 v$sqltext 了。

32.Oracle杂记——Oracle常用动态视图v$sqlarea

32.Oracle杂记——Oracle常用动态视图v$sqlarea

32.Oracle杂记——Oracle常用动态视图v$sqlarea

视图v$sqlarea显示 共享sql区中的统计信息,每行包含一个sql串。提供了sql语句在内存中,解析,准备运行的统计信息。

视图描述如下,拥有的列也非常多

sys@PDB1> desc v$sqlarea

Name Null? Type

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

sql_TEXT VARCHAR2(1000)

sql_FULLTEXT CLOB

sql_ID VARCHAR2(13)

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

PX_SERVERS_EXECUTIONS NUMBER

END_OF_FETCH_COUNT NUMBER

USERS_EXECUTING NUMBER

LOADS NUMBER

FirsT_LOAD_TIME VARCHAR2(19)

INVALIDATIONS NUMBER

PARSE_CALLS NUMBER

disK_READS NUMBER

DIRECT_WRITES NUMBER

BUFFER_GETS NUMBER

APPLICATION_WAIT_TIME NUMBER

CONCURRENCY_WAIT_TIME NUMBER

CLUSTER_WAIT_TIME NUMBER

USER_IO_WAIT_TIME NUMBER

PLsql_EXEC_TIME NUMBER

JAVA_EXEC_TIME NUMBER

ROWS_PROCESSED NUMBER

COMMAND_TYPE NUMBER

OPTIMIZER_MODE VARCHAR2(10)

OPTIMIZER_COST NUMBER

OPTIMIZER_ENV RAW(2000)

OPTIMIZER_ENV_HASH_VALUE NUMBER

PARSING_USER_ID NUMBER

PARSING_SCHEMA_ID NUMBER

PARSING_SCHEMA_NAME VARCHAR2(30)

KEPT_VERSIONS NUMBER

ADDRESS RAW(8)

HASH_VALUE NUMBER

OLD_HASH_VALUE NUMBER

PLAN_HASH_VALUE NUMBER

FULL_PLAN_HASH_VALUE 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 VARCHAR2(40)

LAST_ACTIVE_CHILD_ADDRESS RAW(8)

REMOTE VARCHAR2(1)

OBJECT_STATUS VARCHAR2(19)

LIteraL_HASH_VALUE NUMBER

LAST_LOAD_TIME DATE

IS_OBSOLETE VARCHAR2(1)

IS_BIND_SENSITIVE VARCHAR2(1)

IS_BIND_AWARE VARCHAR2(1)

CHILD_LATCH NUMBER

sql_PROFILE VARCHAR2(64)

sql_PATCH VARCHAR2(30)

sql_PLAN_BASELINE VARCHAR2(30)

PROGRAM_ID NUMBER

PROGRAM_LINE# NUMBER

EXACT_MATCHING_SIGNATURE NUMBER

FORCE_MATCHING_SIGNATURE NUMBER

LAST_ACTIVE_TIME DATE

BIND_DATA RAW(2000)

TYPECHECK_MEM NUMBER

IO_CELL_OFFLOAD_ELIGIBLE_BYTES NUMBER

IO_INTERCONNECT_BYTES NUMBER

PHYSICAL_READ_REQUESTS NUMBER

PHYSICAL_READ_BYTES NUMBER

PHYSICAL_WRITE_REQUESTS NUMBER

PHYSICAL_WRITE_BYTES NUMBER

OPTIMIZED_PHY_READ_REQUESTS NUMBER

LOCKED_TOTAL NUMBER

PINNED_TOTAL NUMBER

IO_CELL_UNCOMpressed_BYTES NUMBER

IO_CELL_OFFLOAD_RETURNED_BYTES NUMBER

CON_ID NUMBER

IS_REOPTIMIZABLE VARCHAR2(1)

IS_RESOLVED_ADAPTIVE_PLAN VARCHAR2(1)

各个列属性描述如下:

sql_TEXT:当前游标的sql文本(小于1000个字符)

sql_FULLTEXT:当前游标的sql文本的所有字符

sql_ID:父游标在库缓存中的sqlID

SHaraBLE_MEM:游标使用的共享内存的总计

PERSISTENT_MEM :一个打开游标生命周期中固定内存的大小

RUNTIME_MEM:一个游标执行过程中需要的固定内存

SORTS:所有子游标进行排序的次数

VERSION_COUNT:缓存中子游标的个数

LOADED_VERSIONS:缓存中,上下文对已经加载的个数

OPEN_VERSIONS:已经打开的子游标个数

USERS_opening:拥有打开子游标的用户数量

FETCHES:和sql语句相关的FETCH 个数

EXECUTIONS:总共执行次数

PX_SERVERS_EXECUTIONS:通过并行执行服务器执行的次数

END_OF_FETCH_COUNT:当游标进入到库缓存后完全执行的次数

USERS_EXECUTING:执行所有子游标语句的用户总数

LOADS:对象加载或重新加载的次数

FirsT_LOAD_TIME:父级创建时间戳

INVALIDATIONS:子游标无效的次数

PARSE_CALLS :所有子游标解析调用次数

disK_READS :所有子游标磁盘读次数

DIRECT_WRITES:所有子游标直接写的次数

BUFFER_GETS:所有子游标从缓存获取的次数

APPLICATION_WAIT_TIME:应用等待时间(MS)

CONCURRENCY_WAIT_TIME :并发等待时间(MS)

CLUSTER_WAIT_TIME:集群等待时间(MS)

USER_IO_WAIT_TIME:用户IO等待时间(MS)

PLsql_EXEC_TIME:PL/sql执行时间(MS)

JAVA_EXEC_TIME:JAVA 执行时间(MS)

ROWS_PROCESSED:sql语句处理的行数量

COMMAND_TYPE:命令类型定义

OPTIMIZER_MODE:sql语句执行的模式

OPTIMIZER_COST:优化器给出的查询代价

OPTIMIZER_ENV:优化器环境

OPTIMIZER_ENV_HASH_VALUE:优化器环境的HASH 值

PARSING_USER_ID:解析第一个游标的USER ID

PARSING_SCHEMA_ID:解析这个子游标的SCHEMAID

PARSING_SCHEMA_NAME:解析这个子游标的SCHEMANAME

KEPT_VERSIONS:通过使用DBMS_SHARED_POOL包来保持子游标的数量

ADDRESS:这个游标父句柄的地址

HASH_VALUE :在库换中 父语句的HASH值

OLD_HASH_VALUE: 旧的HASH 值

PLAN_HASH_VALUE:这个游标当前sql计划的数字化显示

FULL_PLAN_HASH_VALUE:这个游标完整sql计划的数字化显示

MODULE:在sql语句被调用DBMS_APPLICATION_INFO.SET_MODULE时第一次解析,该列包含这个MODULE的名字。

MODULE_HASH:在MODULE列中列出的HASH值

ACTION :在sql语句被调用DBMS_APPLICATION_INFO.SET_ACTION时第一次解析,该列包含这个动作的名字。

ACTION_HASH:在ACTION列中列出的HASH值

SERIALIZABLE_ABORTS :交易无法串行化的次数

OUTLINE_CATEGORY:如果OUTLINE 在构建游标的时候使用,这个列显示OUTLINE的目录

cpu_TIME:游标解析、执行和fetching使用的cpu时间

ELAPSED_TIME:游标解析、执行和fetching 流逝的时间

OUTLINE_SID :outline会话ID

LAST_ACTIVE_CHILD_ADDRESS:组中最后活动子游标的地址

REMOTE :游标是否是远程映射的

OBJECT_STATUS:游标状态

LIteraL_HASH_VALUE:字面HASH值,当CUROSR_SHARING使用的时候,会被系统产生的绑定变量替换。

LAST_LOAD_TIME:查询计划加载到库缓存的时间

IS_OBSOLETE :游标是否废弃

IS_BIND_SENSITIVE:是否绑定敏感

IS_BIND_AWARE: 是否绑定察觉

CHILD_LATCH :保护游标的子LATCH号

sql_PROFILE :语句的sqlprofile

sql_PATCH:语句的sql补丁

sql_PLAN_BASELINE:语句的sql计划基线

PROGRAM_ID: 程序ID

PROGRAM_LINE# :程序行号

EXACT_MATCHING_SIGNATURE:CUSROR_SHARING参数设置为EXACT

FORCE_MATCHING_SIGNATURE:CUSROR_SHARING参数设置为FORCE

LAST_ACTIVE_TIME:查询计划上次激活的时间

BIND_DATA:绑定数据

TYPECHECK_MEM:类型检查内存

IO_CELL_OFFLOAD_ELIGIBLE_BYTES :被Exadata存储系统过滤的IO字节数

IO_INTERCONNECT_BYTES:数据库和存储系统交换的IO字节

PHYSICAL_READ_REQUESTS:sql语句发起的读请求的次数

PHYSICAL_READ_BYTES:sql语句发起的物理读的字节数

PHYSICAL_WRITE_REQUESTS:sql语句发起的物理写的次数

PHYSICAL_WRITE_BYTES:sql语句发起的写到磁盘的字节数

OPTIMIZED_PHY_READ_REQUESTS:sql语句通过SmartFlash Cache发起的物理读请求次数

LOCKED_TOTAL:子游标被锁住的次数

PINNED_TOTAL:子游标被PIN住的次数

IO_CELL_UNCOMpressed_BYTES:卸载到Exadatacells中的解压字节数

IO_CELL_OFFLOAD_RETURNED_BYTES :通过Exadatacell的通用IO返回的字节数

CON_ID:容器ID

IS_REOPTIMIZABLE:显示当下一次执行匹配这个子游标的时候,是否会触发再优化?

IS_RESOLVED_ADAPTIVE_PLAN:显示计划的所有可接受部分 是否是最终的计划

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

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

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语句。

For oracle databases, if the top showing the oracle database, then oracle process is using the top c

For oracle databases, if the top showing the oracle database, then oracle process is using the top c

Note 805586.1 Troubleshooting Session Administration (Doc ID 805586.1) Note 822527.1 How To Find Where The Memory Is Growing For A Process (Doc ID 822527.1) Note 273646.1 How to diagnose the high cpu utilization of ORACLE.EXE in Windows environment Note 728539.1 Find Blocking Sessions In sqlPLUS Note 61552.1 Troubleshooting Oracle Database Hanging Issues for versions from 7 to 9--Exhaustive Note 164760.1 Detecting and Resolving Locking Conflicts using TopSessions

NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)

NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)

如何解决NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)?

我正在使用 loopback-connector-oracle 4.1.1 版寻求有关我面临的问题的一些信息。分析如下: 我们有 DB 连接配置,可以使用 json 文件格式的 oracle 连接器使用属性连接到 oracle DB 数据源。 "maxConn": 20,“主机”:DB_HOST, “端口”:DB_PORT, “数据库”:DB_NAME, “密码”:DB_PASSWORD, “用户”:DB_USER, "connector": "oracle",

有两个进程/pod 正在运行,每个进程/pod 都有自己的池供oracle 连接器使用。发生的情况是,在一个实例中,oracle 能够连接并处理请求,但在第二个 pod/进程中,我注意到 njs-040 错误连接超时。由于两者都运行在同一个环境中,所以连接性不会成为问题。我正在寻求您的帮助或意见以了解连接池耗尽的原因?正如我所看到的,DB 上的连接/会话数量配置的数量较少。 当我重新启动 pod/进程时,一切都会恢复正常。在我的流程中遇到的一些问题,如果您可以指导并提供宝贵的意见,我正在寻求您的帮助。

  • 如果使用连接池(oracle 连接器),它也应该释放对象,耗尽的机会会减少吗?
  • 在进程/pod 启动并通过连接器 (oracle) 获取数据源中的连接对象后,发生网络问题并且进程和数据库之间的连接丢失,连接器是否恢复?根据我的观察,我在其他进程中注意到的似乎应该被恢复,当它与范围一起运行时,在一个进程中可能会导致什么?

我非常感谢您的回复。 提前致谢 桑吉夫

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

关于Oracle v$sql,v$sqlarea,v$sqltext 区别v$sql和v$sqlarea的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于32.Oracle杂记——Oracle常用动态视图v$sqlarea、34.Oracle杂记——Oracle常用动态视图v$sqltext、For oracle databases, if the top showing the oracle database, then oracle process is using the top c、NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)等相关知识的信息别忘了在本站进行查找喔。

本文标签: