prev oracle,讨论 v$session 中 sql_hash_value和 prev_hash_value列 奇怪的问题

本文探讨了Oracle数据库中v$session视图中SQL_HASH_VALUE和PREV_HASH_VALUE字段的值在不同会话操作下发生变化的情况。通过一系列SQL查询展示这两个值如何在执行不同SQL语句后产生变化,尤其是当执行DML操作时,它们的值可能变为0或者与之前不同,这与SQL语句的执行历史和缓存状态有关。
摘要由CSDN通过智能技术生成

打开会话一执行语句:

select max(sid) from v$mystat;

MAX(SID)

----------

10

打开会话二执行语句:(为什么SQL_HASH_VALUE PREV_HASH_VALUE会存在一样的值,按理说SQL_HASH_VALUE应该为0的嘛)

SQL> select sid, sql_hash_value, prev_hash_value from v$session where sid=10;

SID SQL_HASH_VALUE PREV_HASH_VALUE

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

10     3448634418      3448634418

在会话一中执行:

SQL> select max(sid) from v$session;

MAX(SID)

----------

10

在会话二中执行语句:(为什么SQL_HASH_VALUE PREV_HASH_VALUE会存在一样的值,按理说SQL_HASH_VALUE应该为0的嘛)

SQL> select sid, sql_hash_value, prev_hash_value from v$session where sid=10;

SID SQL_HASH_VALUE PREV_HASH_VALUE

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

10     1199255712      1199255712

在会话一中执行:

SQL> select col from test;

COL

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

88888

在会话二中执行语句:(按理说PREV_HASH_VALUE应该为2418451573,SQL_HASH_VALUE应该为0)

SQL> select sid, sql_hash_value, prev_hash_value from v$session where sid=10;

SID SQL_HASH_VALUE PREV_HASH_VALUE

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

10              0      1511160340

在会话一中执行:(与前面的两条查询结果比较,这个我觉得是正常的)

SQL> desc v$rowcache

名称                                      是否为空? 类型

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

CACHE#                                             NUMBER

TYPE                                               VARCHAR2(11)

SUBORDINATE#                                       NUMBER

PARAMETER                                          VARCHAR2(32)

COUNT                                              NUMBER

USAGE                                              NUMBER

FIXED                                              NUMBER

GETS                                               NUMBER

GETMISSES                                          NUMBER

SCANS                                              NUMBER

SCANMISSES                                         NUMBER

SCANCOMPLETES                                      NUMBER

MODIFICATIONS                                      NUMBER

FLUSHES                                            NUMBER

DLM_REQUESTS                                       NUMBER

DLM_CONFLICTS                                      NUMBER

DLM_RELEASES                                       NUMBER

在会话二中执行:

SQL> select sid, sql_hash_value, prev_hash_value from v$session where sid=10;

SID SQL_HASH_VALUE PREV_HASH_VALUE

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

10     2418451573               0

在会话一中执行:

SQL> select type from v$rowcache;

TYPE

-----------

PARENT

PARENT

PARENT

......

在会话二中执行:(这个我认为是正常的)

SQL> select sid, sql_hash_value, prev_hash_value from v$session where sid=10;

SID SQL_HASH_VALUE PREV_HASH_VALUE

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

10              0      3434066792

下面的就不说明了

在会话一中执行:

SQL> select max(sid) from v$mystat;

MAX(SID)

----------

10

在会话二中执行:

SQL> select sid, sql_hash_value, prev_hash_value from v$session where sid=10;

SID SQL_HASH_VALUE PREV_HASH_VALUE

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

10     3448634418      3448634418

在第一个会话中执行:

SQL> select max(sid) from v$session;

MAX(SID)

----------

10

在会话二中执行:

SQL> select sid, sql_hash_value, prev_hash_value from v$session where sid=10;

SID SQL_HASH_VALUE PREV_HASH_VALUE

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

10     1199255712      1199255712

请问大家SQL_HASH_VALUE和PREV_HASH_VALUE的值为什么会出现这样的情况?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值