[20200212]使用DBMS_SHARED_POOL.MARKHOT与sql语句3.txt --//测试设置_kgl_hot_object_copies=101,看看避免冲突的情况下,使用DBMS_SHARED_POOL.MARKHOT效果如何。 1.环境: SCOTT@book> @ 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 SYS@book> alter system set "_kgl_hot_object_copies"=101 scope=spfile ; System altered. --//必须重启才生效,重启数据库略。 SYS@book> @ hide _kgl_hot_object_copies NAME DESCRIPTION DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE ISSES ISSYS_MOD ---------------------- ----------------------------------- ------------- ------------- ------------ ----- --------- _kgl_hot_object_copies Number of copies for the hot object FALSE 101 101 FALSE FALSE create table job_times (sid number, sessionid number,time_ela number,method varchar2(20)); --//建立测试脚本m2.txt: $ cat m2.txt set verify off --//host sleep $(echo &&3/50 | bc -l ) insert into job_times values ( sys_context ('userenv', 'sid') ,sys_context ('userenv', 'sessionid'),dbms_utility.get_time ,'&&2') ; commit ; declare v_id number; v_d date; m_rowid varchar2(20); m_data varchar2(32); begin m_rowid := '&3'; for i in 1 .. &&1 loop select ename into m_data from emp where rowid =m_rowid ; end loop; end ; / update job_times set time_ela = dbms_utility.get_time - time_ela where sid=sys_context ('userenv', 'sid') and sessionid=sys_context ('userenv', 'sessionid') and method='&&2'; commit; quit SCOTT@book> select listagg(rowid,',') WITHIN GROUP (order by rowid ) c100 from emp ; C100 ---------------------------------------------------------------------------------------------------- AAAVREAAEAAAACXAAA,AAAVREAAEAAAACXAAB,AAAVREAAEAAAACXAAC,AAAVREAAEAAAACXAAD,AAAVREAAEAAAACXAAE,AAAVR EAAEAAAACXAAF,AAAVREAAEAAAACXAAG,AAAVREAAEAAAACXAAH,AAAVREAAEAAAACXAAI,AAAVREAAEAAAACXAAJ,AAAVREAAEA AAACXAAK,AAAVREAAEAAAACXAAL,AAAVREAAEAAAACXAAM,AAAVREAAEAAAACXAAN 2.测试1: --//测试不使用DBMS_SHARED_POOL.MARKHOT的情况: a='AAAVREAAEAAAACXAAA,AAAVREAAEAAAACXAAB,AAAVREAAEAAAACXAAC,AAAVREAAEAAAACXAAD,AAAVREAAEAAAACXAAE,AAAVREAAEAAAACXAAF,AAAVREAAEAAAACXAAG,AAAVREAAEAAAACXAAH,AAAVREAAEAAAACXAAI,AAAVREAAEAAAACXAAJ,AAAVREAAEAAAACXAAK,AAAVREAAEAAAACXAAL,AAAVREAAEAAAACXAAM,AAAVREAAEAAAACXAAN' $ echo $a | tr ',' '\n' | xargs -I{} -P 14 sqlplus -s -l scott/book @m2.txt 1e6 NOMARKHOTx {} SCOTT@book> Select method,count(*),round(avg(TIME_ELA),0),sum(TIME_ELA) from job_times group by method order by 3 ; METHOD COUNT(*) ROUND(AVG(TIME_ELA),0) SUM(TIME_ELA) -------------------- ---------- ---------------------- ------------- NOMARKHOTx 14 2629 36811 3.测试2: --//测试使用DBMS_SHARED_POOL.MARKHOT的情况: SELECT owner ,name ,hash_value ,full_hash_value ,namespace ,child_latch ,property hot_flag ,executions ,invalidations FROM v$db_object_cache WHERE name = 'SELECT ENAME FROM EMP WHERE ROWID =:B1 ' and CHILD_LATCH<>0 order by executions desc ; OWNER NAME HASH_VALUE FULL_HASH_VALUE NAMESPACE CHILD_LATCH HOT_FLAG EXECUTIONS INVALIDATIONS ------ ---------------------------------------- ---------- -------------------------------- ---------- ----------- ---------- ---------- ------------- SELECT ENAME FROM EMP WHERE ROWID =:B1 85994372 6ddb0702c4c177cb27ee292f05202b84 SQL AREA 11140 13071757 0 SYS@book> exec dbms_shared_pool.markhot( hash=>'6ddb0702c4c177cb27ee292f05202b84', namespace=>0, global=>true); PL/SQL procedure successfully completed. $ echo $a | tr ',' '\n' | xargs -I{} -P 14 sqlplus -s -l scott/book @m2.txt 1e6 MARKHOTx {} SYS@book> @ wait P1RAW P2RAW P3RAW P1 P2 P3 SID SERIAL# SEQ# EVENT STATUS STATE WAIT_TIME_MICRO SECONDS_IN_WAIT WAIT_CLASS ---------------- ---------------- ---------------- ---------- ----------------- ---------- ---------- ---------- ---------- ---------------------- -------- ------------------- --------------- --------------- -------------------- 0000000000002B84 00 000000000000003E 11140 0 62 58 23 69 library cache: mutex X ACTIVE WAITED SHORT TIME 2 0 Concurrency 0000000000002B84 00 000000000000003E 11140 0 62 72 13 69 library cache: mutex X ACTIVE WAITED SHORT TIME 2 2 Concurrency 0000000000002B84 0000003A00000000 000000000000003E 11140 249108103168 62 86 3 46 library cache: mutex X ACTIVE WAITED SHORT TIME 3 4 Concurrency 0000000000002B84 00 000000000000003E 11140 0 62 101 3 70 library cache: mutex X ACTIVE WAITED SHORT TIME 3 1 Concurrency 0000000000002B84 00 000000000000003E 11140 0 62 114 3 66 library cache: mutex X ACTIVE WAITED SHORT TIME 2 1 Concurrency 0000000000002B84 00 000000000000003E 11140 0 62 128 3 45 library cache: mutex X ACTIVE WAITED SHORT TIME 3 1 Concurrency 0000000000002B84 0000009C00000000 000000000000003E 11140 670014898176 62 142 3 55 library cache: mutex X ACTIVE WAITED KNOWN TIME 10997 4 Concurrency 0000000000002B84 00 000000000000003E 11140 0 62 156 3 61 library cache: mutex X ACTIVE WAITED SHORT TIME 2 0 Concurrency 0000000000002B84 0000005600000000 000000000000003E 11140 369367187456 62 170 3 39 library cache: mutex X ACTIVE WAITED SHORT TIME 3 4 Concurrency 0000000000002B84 0000009C00000000 000000000000003E 11140 670014898176 62 184 3 41 library cache: mutex X ACTIVE WAITED SHORT TIME 11 4 Concurrency 0000000000002B84 00 000000000000003E 11140 0 62 198 3 59 library cache: mutex X ACTIVE WAITED SHORT TIME 2 0 Concurrency 0000000000002B84 00 000000000000003E 11140 0 62 212 37 63 library cache: mutex X ACTIVE WAITED SHORT TIME 2 0 Concurrency 0000000000002B84 0000003A00000000 000000000000003E 11140 249108103168 62 226 7 53 library cache: mutex X ACTIVE WAITED SHORT TIME 2 1 Concurrency 0000000000002B84 00 000000000000003E 11140 0 62 241 3 60 library cache: mutex X ACTIVE WAITED SHORT TIME 2 1 Concurrency 14 rows selected. --//还是大量的library cache: mutex X等待事件。 SELECT owner ,name ,hash_value ,full_hash_value ,namespace ,child_latch ,property hot_flag ,executions ,invalidations FROM v$db_object_cache WHERE name = 'SELECT ENAME FROM EMP WHERE ROWID =:B1 ' and CHILD_LATCH<>0 order by executions desc ; OWNER NAME HASH_VALUE FULL_HASH_VALUE NAMESPACE CHILD_LATCH HOT_FLAG EXECUTIONS INVALIDATIONS ------ ---------------------------------------- ---------- -------------------------------- ---------- ----------- ---------- ---------- ------------- SELECT ENAME FROM EMP WHERE ROWID =:B1 85994372 6ddb0702c4c177cb27ee292f05202b84 SQL AREA 11140 HOT 13071757 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 285504892 7f0b59ec4b8535eec82fba911104757c SQL AREA 30076 HOTCOPY28 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 4010836214 0cea2fadafa4dd35f7f8efcdef1080f6 SQL AREA 33014 HOTCOPY70 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 1691525416 3d2f9eaeae30daafc5521e5c64d2a128 SQL AREA 41256 HOTCOPY84 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 3448939648 33066bcd4389a8a8b78ccddacd92a480 SQL AREA 42112 HOTCOPY87 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 2118854785 c79e876e553b527d68e095217e4b2881 SQL AREA 75905 HOTCOPY59 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 1626819103 fe3d83877f2c5663dd70044f60f74a1f SQL AREA 84511 HOTCOPY98 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 580344650 b698c5f01e065315c8c1042b22975b4a SQL AREA 88906 HOTCOPY11 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 2543673867 6dd887a7dad2ef66cb0141e3979d620b SQL AREA 90635 HOTCOPY56 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 2236576569 7ace1ec20937d7b7155be95f854f7339 SQL AREA 95033 HOTCOPY73 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 2648560675 127d6fcd213a6dd9c2d5d8139dddd423 SQL AREA 119843 HOTCOPY25 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 2582763541 c88682c52f8f2765a84d377399f1d815 SQL AREA 120853 HOTCOPY1 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 2302797450 ec2f55c6e5d2cd8da2e94ef78941e68a SQL AREA 124554 HOTCOPY42 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 2074737225 a3b70cec850d0f06245030157ba9fa49 SQL AREA 129609 HOTCOPY40 1000000 0 SELECT ENAME FROM EMP WHERE ROWID =:B1 2496819678 14d02282ba345f71d7396b5694d271de SQL AREA 29150 HOTCOPY14 1000000 0 15 rows selected. --//这次全部分散开了。生成14个HOTCOPYXX。 SCOTT@book> Select method,count(*),round(avg(TIME_ELA),0),sum(TIME_ELA) from job_times group by method order by 3 ; METHOD COUNT(*) ROUND(AVG(TIME_ELA),0) SUM(TIME_ELA) -------------------- ---------- ---------------------- ------------- NOMARKHOTx 14 2629 36811 MARKHOTx 14 3130 43825 --//效果一样,再次验证使用DBMS_SHARED_POOL.MARKHOT标识热sql语句,效果不大,建议不要使用。 SCOTT@book> select mod(sid,101)+1 ,count(*) from job_times where method='MARKHOTx' group by mod(sid,101) order by 1; MOD(SID,101)+1 COUNT(*) -------------- ---------- 1 1 11 1 14 1 25 1 28 1 40 1 42 1 56 1 59 1 70 1 73 1 84 1 87 1 98 1 14 rows selected. SCOTT@book> SELECT substr(property,8,2) FROM v$db_object_cache WHERE name = 'SELECT ENAME FROM EMP WHERE ROWID =:B1 ' and CHILD_LATCH<>0 order by 1 ; SUBS ---- 1 11 14 25 28 40 42 56 59 70 73 84 87 98 15 rows selected. --//可以发现结果一致,再次验证了设置隐含参数_kgl_hot_object_copies,sql_id语句计算sql_text变为原来sql文本的基础上 --// 加上 . mod(sid,_kgl_hot_object_copies)+1数字的字符串。 $ echo -e -n 'SELECT ENAME FROM EMP WHERE ROWID =:B1 \0.14' | md5sum | sed 's/ -//' | xxd -r -p | od -t x4 | sed -n -e 's/^0000000 //' -e 's/ //gp' 14d02282ba345f71d7396b5694d271de --//FULL_HASH_VALUE与前面的输出完全能对上。 4.收尾: SYS@book> alter system reset "_kgl_hot_object_copies" ; System altered. --//重启还原。
[20200212]使用DBMS_SHARED_POOL.MARKHOT与sql语句3.txt
来源:这里教程网
时间:2026-03-03 15:00:10
作者:
编辑推荐:
- [20200212]使用DBMS_SHARED_POOL.MARKHOT与sql语句3.txt03-03
- [20200212]使用DBMS_SHARED_POOL.MARKHOT与视图v$open_cursor.txt03-03
- [20200212]使用DBMS_SHARED_POOL.MARKHOT标识热对象.txt03-03
- [20200213]使用DBMS_SHARED_POOL.MARKHOT标识热对象2.txt03-03
- [20200213]使用DBMS_SHARED_POOL.MARKHOT的总结.txt03-03
- [20200213]函数nullif使用.txt03-03
- Oracle-真实环境的丢失current redo log file的故障恢复03-03
- Oracle 12C新特性In-Memory03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle 12C新特性In-Memory
Oracle 12C新特性In-Memory
26-03-03 - Oracle 19C 无法启用Auto Indexes特性
Oracle 19C 无法启用Auto Indexes特性
26-03-03 - Oracle 12C安装
Oracle 12C安装
26-03-03 - Oracle Database 19c安装Sample Schemas
Oracle Database 19c安装Sample Schemas
26-03-03 - oracle rac 的优点和缺点
oracle rac 的优点和缺点
26-03-03 - Oracle delete误操作数据恢复(BBED)
Oracle delete误操作数据恢复(BBED)
26-03-03 - Oracle 12C新特性-RMAN恢复表
Oracle 12C新特性-RMAN恢复表
26-03-03 - Oracle Linux 7.5下载和安装
Oracle Linux 7.5下载和安装
26-03-03 - PLSQL 连接服务器与执行SQL语句非常慢
PLSQL 连接服务器与执行SQL语句非常慢
26-03-03 - Oracle 19C下载和安装(二)
Oracle 19C下载和安装(二)
26-03-03
