有相同sql_id的sql语句

              
1.不同用户执行相同的sql语句   
1)在同一个数据库中执行  'select * from tab01'   
[oracle@dbserver ~]$ sqlplus u1/u1         
SQL> create table tab01(name varchar2(6));         
         
Table created.         
         
SQL> insert into tab01 values('a');         
         
1 row created.         
         
SQL> select * from tab01;         
         
NAME         
------         
a    
     
SQL> disc 
 ...
SQL>conn u2/u2     
Connected.
SQL> create table tab01(age number);         
         
Table created.         
         
SQL> insert into tab01 values(1);         
         
1 row created.         
         
SQL> select * from tab01;         
         
       AGE         
----------         
1         
         
SQL> column sql_text format a20         
         
SQL> set linesize 150    
SQL> select sql_text,sql_id,hash_value,parsing_user_id,parsing_schema_id,address,plan_hash_value,child_address from v$sql where sql_text='select * from tab01';         
         
SQL_TEXT             SQL_ID        HASH_VALUE PARSING_USER_ID PARSING_SCHEMA_ID ADDRESS  PLAN_HASH_VALUE CHILD_AD         
-------------------- ------------- ---------- --------------- ----------------- -------- --------------- --------         
select * from tab01  5b42g2fkrrzss 2776366872              87                87 40FB1988      2044041692 40FAC494         
select * from tab01  5b42g2fkrrzss 2776366872              88                88 40FB1988      2044041692 3BDB56F8  
  v$sql中有相同sql_text的记录条目数量取决于执行此sql的用户数。
      
2)在另一个不同版本的数据库中执行 'select * from tab01'         
SQL> select sql_text,sql_id,hash_value,parsing_user_id,parsing_schema_id,address,plan_hash_value,child_address from v$sql where sql_text='select * from tab01';
SQL_TEXT             SQL_ID        HASH_VALUE PARSING_USER_ID PARSING_SCHEMA_ID ADDRESS  PLAN_HASH_VALUE CHILD_AD
-------------------- ------------- ---------- --------------- ----------------- -------- --------------- --------
select * from tab01  5b42g2fkrrzss 2776366872               0                 0 30953C34      2044041692 309711C8         
         
相同的sql语句,他们的sql_id,hash_value,plan_hash_value相同。

sql_id + child_address 可以标识唯一的一条sql语句


2.同一个用户在不同的session中执行相同的sql语句        
conn u2         
SQL> select userenv('sid') from dual;         
         
USERENV('SID')         
--------------         
48         
         
SQL> select age from tab01;         
         
       AGE         
----------         
1         
打开另一个session 用u2连接         
SQL> select userenv('sid') from dual;         
         
USERENV('SID')         
--------------         
40         
           
SQL> select age from tab01;         
         
       AGE         
----------         
1         
         
SQL> column sql_text format a25         
SQL> select sql_text,sql_id,hash_value,parsing_user_id,parsing_schema_id,address,plan_hash_value,child_address from v$sql where sql_text='select age from tab01';         
         
SQL_TEXT                  SQL_ID        HASH_VALUE PARSING_USER_ID PARSING_SCHEMA_ID ADDRESS  PLAN_HASH_VALUE CHILD_AD         
------------------------- ------------- ---------- --------------- ----------------- -------- --------------- --------         
select age from tab01     c73nv2tczaxug 1509259087              88                88 48CFAA3C      2044041692 48E199A4 

v$sql中只有一条与此sql语句对应的记录。
 
4.当删除表tab01后,v$sql中在表tab01上的sql语句的记录也就没有了
SQL> select sql_text,sql_id,hash_value,parsing_user_id,parsing_schema_id,address,plan_hash_value,child_address from v$sql where sql_text='select * from tab01';
no rows selected
SQL> create table tab01(age number);
Table created.
SQL> insert into tab01 values(1);
1 row created.
SQL> select * from tab01;
       AGE
----------
         1
SQL> select sql_text,sql_id,hash_value,parsing_user_id,parsing_schema_id,address,plan_hash_value,child_address from v$sql where sql_text='select * from tab01';
SQL_TEXT             SQL_ID        HASH_VALUE PARSING_USER_ID PARSING_SCHEMA_ID ADDRESS  PLAN_HASH_VALUE CHILD_AD
-------------------- ------------- ---------- --------------- ----------------- -------- --------------- --------
select * from tab01  5b42g2fkrrzss 2776366872              31                31 30953C34      2044041692 309711C8
SQL> drop table tab01;
Table dropped.
SQL> select sql_text,sql_id,hash_value,parsing_user_id,parsing_schema_id,address,plan_hash_value,child_address from v$sql where sql_text='select * from tab01';
no rows selected
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24756186/viewspace-740987/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24756186/viewspace-740987/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值