[20200212]使用DBMS_SHARED_POOL.MARKHOT與sql的計算2.txt
[20200212]使用DBMS_SHARED_POOL.MARKHOT與sql的計算2.txt
--//昨天的測試:http://blog.itpub.net/267265/viewspace-2675128/ =>[20200211]使用DBMS_SHARED_POOL.MARKHOT與sql_id的計算.txt
--//補充測試設定隱含引數_kgl_hot_object_copies的情況:
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
SCOTT@book> select * from dept where deptno=10;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
--//sql_id='4xamnunv51w9j',可以執行多次,避免sql語句退出共享池.
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 6 0
select * from dept where deptno=10 911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA 61745 6 0
--//確定FULL_HASH_VALUE='1431c45dbddbb9e74eaa74d53650f131'.
$ echo -e -n 'select * from dept where deptno=10\0' | md5sum | sed 's/ -//' | xxd -r -p | od -t x4 | sed -n -e 's/^0000000 //' -e 's/ //gp'
1431c45dbddbb9e74eaa74d53650f131
--//對比完全能對上。
2.測試:
--//首先使用DBMS_SHARED_POOL.MARKHOT標記。
SYS@book> exec dbms_shared_pool.markhot( hash=>'1431c45dbddbb9e74eaa74d53650f131', namespace=>0, global=>true);
PL/SQL procedure successfully completed.
--//以scott登入
--//session 1:
SCOTT@book> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
295 7 63251 DEDICATED 63252 21 4 alter system kill session '295,7' immediate;
SCOTT@book> select * from dept where deptno=10;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
--//session 2:
SYS@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)
------------- ------------------------------------------------------------ ---------- ---------------- ------------------
atpswbzn2drda select * from dept where deptno=10 1 34 156172166
4xamnunv51w9j select * from dept where deptno=10 6 34 156172166
--//sql_id=atpswbzn2drda select
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 3894861226 6b47602c1c49a6baacd71c5fe826ddaa SQL AREA 0 HOTCOPY94 1 0
select * from dept where deptno=10 3894861226 6b47602c1c49a6baacd71c5fe826ddaa SQL AREA 56746 HOTCOPY94 1 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
--//HOT_FLAG='HOTCOPY94'
$ ./sql_id.sh 'select * from dept where deptno=10\0.94'
sql_text = select * from dept where deptno=10\0.94
full_hash_value(16) = 6b47602c1c49a6baacd71c5fe826ddaa
hash_value(10) = 3894861226
sql_id(32) = atpswbzn2drda
sql_id(32) = atpswbzn2drda
sql_id(32) = atpswbzn2drda
--//sql_idm以及full_hash_value完全對上。
3.驗證看看是否透過sid取模確定HOT_FLAG。
--//session 1:
SCOTT@book> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
295 7 63251 DEDICATED 63252 21 4 alter system kill session '295,7' immediate;
SCOTT@book> select mod(295 ,101)+1 from dual ;
MOD(295,101)+1
--------------
94
--//OK,完全正確。
4.總結:
--//sql語句使用使用DBMS_SHARED_POOL.MARKHOT標記熱的sql_id時,full_hash_value和sql_id的計算,就是在原來sql語句的基礎
--//上加上 . mod(sid,cpu_count/2)+1數字的字串,注前面的測試有誤,應該是cpu_count/2而不是cpu_count,特此更正。
--//原連結:http://blog.itpub.net/267265/viewspace-2675128/ => [20200211]使用DBMS_SHARED_POOL.MARKHOT與sql_id的計算.txt
--//如果設定隱含引數_kgl_hot_object_copies,變為加上 . mod(sid,_kgl_hot_object_copies)+1數字的字串。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2675201/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20200212]使用DBMS_SHARED_POOL.MARKHOT與sql語句3.txtSQL
- [20200211]使用DBMS_SHARED_POOL.MARKHOT與sql語句2.txtSQL
- [20200211]使用DBMS_SHARED_POOL.MARKHOT與sql_id的計算.txtSQL
- [20200212]使用DBMS_SHARED_POOL.MARKHOT與檢視v$open_cursor.txt
- [20200212]使用DBMS_SHARED_POOL.MARKHOT標識熱物件.txt物件
- [20200126]使用DBMS_SHARED_POOL.MARKHOT與sql語句.txtSQL
- [20200213]使用DBMS_SHARED_POOL.MARKHOT標識熱物件2.txt物件
- [20201117]使用DBMS_SHARED_POOL.MARKHOT與sql語句5.txtSQL
- [20201117]使用DBMS_SHARED_POOL.MARKHOT與sql語句6.txtSQL
- [20201126]使用cursor_sharing_exact與給sql打補丁2.txtSQL
- [20211009]使用bash計算sql語句的sql_id.txtSQL
- SQL Server與雲端計算(下)WCSQLServer
- SQL Server與雲端計算(上)UHSQLServer
- [20190823]關於CPU成本計算2.txt
- SQL 有序計算SQL
- SQL 的後計算指令碼SQL指令碼
- [20231017]使用dbms_workload_repository.add_colored_sql之2.txtSQL
- 使用SQL實現車流量的計算的示例程式碼SQL
- [20220104]檔案格式與sql_id計算.txtSQL
- SQL 轉置計算SQL
- [20200324]SQL語句優化的困惑2.txtSQL優化
- [20200213]使用DBMS_SHARED_POOL.MARKHOT的總結.txt
- [20190102]DBMS_SHARED_POOL.MARKHOT與表.txt
- flex與bison的結合使用(計算器例子)Flex
- [20191125]oracel SQL parsing function qcplgte 2.txtSQLFunction
- [20200718]注意sql hint寫法2.txtSQL
- [20220412]shared pool latch與使用sga heap的疑問2.txt
- [20210202]計算標量子查詢快取數量2.txt快取
- 位運算與SQL實現SQL
- [20191012]使用bash從sql_id計算hash_value.txtSQL
- [20191101]通過zsh計算sql語句的sql_id.txtSQL
- [20191011]通過bash計算sql語句的sql_id.txtSQL
- [20210113]ashtop查詢特定表的SQL語句2.txtSQL
- 邊緣計算與雲端計算的未來
- 如何使用SQL計算寶寶每次吃奶的時間間隔(文末含PPT)SQL
- Cobar SQL審計的設計與實現SQL
- [20221028]rman使用tape與增量備份測試2.txt
- SQL面試必考——計算留存率SQL面試