博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[20171110]sql语句相同sql_id可以不同吗
阅读量:7002 次
发布时间:2019-06-27

本文共 3677 字,大约阅读时间需要 12 分钟。

[20171110]sql语句相同sql_id可以不同吗.txt

--//提一个问题,就是sql语句相同sql_id可以不同吗?

--//使用dbms_shared_pool.markhot就可以做到.

1.环境:

SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> select * from dept where deptno=10;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

--//sql_id='4xamnunv51w9j',可以执行多次,避免sql语句退出共享池.

SCOTT@book> select name,hash_value, full_hash_value, namespace, child_latch, property  hot_flag, executions, invalidations from v$db_object_cache where name='select * from dept where deptno=10';

NAME                                     HASH_VALUE FULL_HASH_VALUE                  NAMESPACE            CHILD_LATCH HOT_FLAG   EXECUTIONS INVALIDATIONS
---------------------------------------- ---------- -------------------------------- -------------------- ----------- ---------- ---------- -------------
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA                       0                     7             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA                   61745                     7             0

--//确定FULL_HASH_VALUE='1431c45dbddbb9e74eaa74d53650f131'.

2.设置markhot.

SYS@book> exec dbms_shared_pool.markhot( hash=>'1431c45dbddbb9e74eaa74d53650f131', namespace=>0, global=>true);

PL/SQL procedure successfully completed.

SCOTT@book> select name,hash_value, full_hash_value, namespace, child_latch, property  hot_flag, executions, invalidations from v$db_object_cache where name='select * from dept where deptno=10';

NAME                                     HASH_VALUE FULL_HASH_VALUE                  NAMESPACE            CHILD_LATCH HOT_FLAG   EXECUTIONS INVALIDATIONS
---------------------------------------- ---------- -------------------------------- -------------------- ----------- ---------- ---------- -------------
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA                       0 HOT                 6             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA                   61745 HOT                 6             0

--//HOT_FLAG='HOT'.

--//退出会话在执行如下:

SCOTT@book> select * from dept where deptno=10;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

 

SCOTT@book> select name,hash_value, full_hash_value, namespace, child_latch, property  hot_flag, executions, invalidations from v$db_object_cache where name='select * from dept where deptno=10';

NAME                                     HASH_VALUE FULL_HASH_VALUE                  NAMESPACE            CHILD_LATCH HOT_FLAG             EXECUTIONS INVALIDATIONS
---------------------------------------- ---------- -------------------------------- -------------------- ----------- -------------------- ---------- -------------
select * from dept where deptno=10       2941143312 5196d0b7fe72e5ea7c59eeb2af4e4910 SQL AREA                       0 HOTCOPY11                     3             0
select * from dept where deptno=10       2941143312 5196d0b7fe72e5ea7c59eeb2af4e4910 SQL AREA                   18704 HOTCOPY11                     3             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA                       0 HOT                           6             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA                   61745 HOT                           6             0

--//可以发现FULL_HASH_VALUE多了一个5196d0b7fe72e5ea7c59eeb2af4e4910.HOT_FLAG='HOTCOPY11'.

SCOTT@book> select sql_id,sql_text,executions,length(sql_text),ora_hash(sql_text) from v$sqlarea where sql_text = 'select * from dept where deptno=10' ;

SQL_ID        SQL_TEXT                                                     EXECUTIONS LENGTH(SQL_TEXT) ORA_HASH(SQL_TEXT)
------------- ------------------------------------------------------------ ---------- ---------------- ------------------
7sqgfqarnwk8h select * from dept where deptno=10                                    3               34          156172166
4xamnunv51w9j select * from dept where deptno=10                                    7               34          156172166

--//可以发现两个sql_id不一样,函数ora_hash(sql_text)的结果一样.而执行的sql语句相同.

转载地址:http://ongvl.baihongyu.com/

你可能感兴趣的文章
rabbitmqctl 报错
查看>>
elasticsearch 安装ik中文分词
查看>>
解决OS睡眠功能中,移动鼠标就会唤醒
查看>>
深入理解VMware虚拟机网络通信原理
查看>>
SpringMVC中使用Interceptor拦截器
查看>>
Nginx实践篇(2)- Nginx作为静态资源web服务 - 控制浏览器缓存、防盗链
查看>>
黄聪:OTP动态密码_Java代码实现
查看>>
高内聚、低耦合
查看>>
Nhibernate 3.0 Cookbook学习笔记 利用XML映射类
查看>>
Python基础10 反过头来看看
查看>>
Linux目录结构
查看>>
用vlc搭建简单流媒体服务器(UDP和TCP方式)
查看>>
Java,Calendar 获得明天凌晨的时间time
查看>>
[Angular 2] @Input Custom public property naming
查看>>
jsp常用指令
查看>>
抽取、转换和装载介绍(二)归拢需求
查看>>
Implementing SELinux
查看>>
bootstrap中可用的图标集
查看>>
ASP.NET MVC3中Controller与View之间的数据传递总结
查看>>
HTTP协议
查看>>