v$session.PREV_HASH_VALUE !=0表示什么SQL_HASH_VALUE=0表示什么

来源:互联网 发布:python jsonrpc 教程 编辑:程序博客网 时间:2024/06/05 11:58

v$session.PREV_HASH_VALUE !=0表示什么SQL_HASH_VALUE=0表示什么


RT

 #2使用道具  发表于 2008-1-30 09:44  
一个session 正在执行某个语句的时候session 的status就是active ,这时候sql_hash_value就不等于0,当它执行完语句后,将sql_plan_value的值转个prev_hash_value,session不执行任何语句,session的status为inactive,sql_plan_value 为0
           

 #3使用道具  发表于 2008-1-30 09:56  

 

QUOTE:
--------------------------------------------------------------------------------
原帖由 棉花糖ONE 于 2008-1-30 09:44 发表
一个session 正在执行某个语句的时候session 的status就是active ,这时候sql_hash_value就不等于0,当它执行完语句后,将sql_plan_value的值转个prev_hash_value,session不执行任何语句,session的status为inactive,sql_plan_value 为0
--------------------------------------------------------------------------------


谢谢,请教一个小问题,一般情况下,我们只关注sql_hash_value的数值,也就是说当SQL在执行的时候,这个sql_hash_value不为0,我想知道PREV_HASH_VALUE !=0表示什么SQL_HASH_VALUE=0表示什么?

  有这个想法是由于看同事的一个BLOG,里面有这个一段话

这条SQL语句来查找是哪些SQL语句长时间不提交
select A.sid,A.serial# ,B.sql_text from v$session A,v$sql B
                          where A.PREV_HASH_VALUE !=0
                          and A.SQL_HASH_VALUE=0
                          and A.PREV_HASH_VALUE=B.hash_value
                          and (B.sql_text like '%update%')
                          order by A.sid,A.serial#;

我非常奇怪,这个PREV_HASH_VALUE !=0和s.SQL_HASH_VALUE=0以及s.PREV_HASH_VALUE=ss.hash_value
都表示什么,没有找到相关的文档

      

 #4使用道具  发表于 2008-1-30 10:00  
select A.sid,A.serial# ,B.sql_text from v$session A,v$sql B
                          where A.PREV_HASH_VALUE !=0
                          and A.SQL_HASH_VALUE=0
                          and A.PREV_HASH_VALUE=B.hash_value
                          and (B.sql_text like '%update%')
                          order by A.sid,A.serial#;

这语句不一定能找到你说的那个长时间不提交的sql

 

 #5使用道具  发表于 2008-1-30 10:01  
前面执行过一个语句PREV_HASH_VALUE 就不等于0
当前没执行任何语句SQL_HASH_VALUE=0

   

 #6使用道具  发表于 2008-1-30 10:11  

 

QUOTE:
--------------------------------------------------------------------------------
原帖由 棉花糖ONE 于 2008-1-30 10:01 发表
前面执行过一个语句PREV_HASH_VALUE 就不等于0
当前没执行任何语句SQL_HASH_VALUE=0
--------------------------------------------------------------------------------


如过没有执行SQL则SQL_HASH_VALUE=0这个好理解,但老师什么叫做‘前面执行过一个语句PREV_HASH_VALUE 就不等于0’没有看明白


 #7使用道具  发表于 2008-1-30 10:14  
你自己试下就知道了,会把前个语句的sql_hash_value传给prev_hash_value


 #8使用道具  发表于 2008-1-30 10:33  


QUOTE:
--------------------------------------------------------------------------------
原帖由 棉花糖ONE 于 2008-1-30 10:00 发表
select A.sid,A.serial# ,B.sql_text from v$session A,v$sql B
                          where A.PREV_HASH_VALUE !=0
                          and A.SQL_HASH_VALUE=0
                          and A.PREV_HASH_VALUE=B.hash_value
                          and (B.sql_text like '%update%')
                          order by A.sid,A.serial#;

这语句不一定能找到你说的那个长时间不提交的sql
--------------------------------------------------------------------------------


WHY,被清除内存?不应该啊,如果系统一直在执行这个UPDATE的话,则一定会在MEM里面!
           

 #9使用道具  发表于 2008-1-30 10:34  
执行完update他还能执行别的语句啊,比如select,执行完select ,prev_hash_value就是那个select的hash_value

 

 #10使用道具  发表于 2008-1-30 10:51  

 

QUOTE:
--------------------------------------------------------------------------------
原帖由 棉花糖ONE 于 2008-1-30 10:34 发表
执行完update他还能执行别的语句啊,比如select,执行完select ,prev_hash_value就是那个select的hash_value
--------------------------------------------------------------------------------


这条SQL语句来查找是哪些SQL语句长时间不提交
select A.sid,A.serial# ,B.sql_text from v$session A,v$sql B
                          where A.PREV_HASH_VALUE !=0
                          and A.SQL_HASH_VALUE=0
                          and A.PREV_HASH_VALUE=B.hash_value
                          and (B.sql_text like '%update%')
                          order by A.sid,A.serial#;

也就是说这个执行了,但是没有提交,和UPDATE还能执行其他语句没有什么关系把
 
 
from:http://www.itpub.net/thread-934940-1-1.html