[20200423]防水牆與v$open_cursor.txt
[20200423]防水牆與v$open_cursor.txt
--//前幾天我跟蹤特定sql語句,發現使用防水牆產品會不斷呼叫
begin :con := "TASSETACL"."QUERYACL"(:sn, :on); end;
--//連結 : http://blog.itpub.net/267265/viewspace-2686598/
--//我發現實際上僅僅訪問的sql語句包含特定的表就會出現這樣遞迴呼叫。另外我發現一旦訪問特定表,該語句的游標就不會進入
--//SESSION CURSOR CACHED.透過測試說明:
1.環境:
PPPPP_HHH@xxxx> @ 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
$ cat voc.sql
column SID format 9999
column USER_NAME format a10
column CURSOR_TYPE format a32
column SQL_TEXT format a34
select * from v$open_cursor where sql_id='&&1' and sid=&&2;
2.測試:
--//session 1:
PPPPP_HHH@xxxx> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
6414 29699 8395 DEDICATED 127683 668 172 alter system kill session '6414,29699' immediate;
--//記下sid=6414.
PPPPP_HHH@xxxx> select 8 from zz_yyyy where zyh=1;
no rows selected
--//其中zz_yyyy是被審計的表。
PPPPP_HHH@xxxx> @ hash
HASH_VALUE SQL_ID CHILD_NUMBER HASH_HEX
---------- ------------- ------------ ---------
2731930736 2apy2y6jdbx3h 0 a2d5f470
--//sql_id=2apy2y6jdbx3h
--//session 2:
SYS@xxxx> @ voc 2apy2y6jdbx3h 6414
no rows selected
--//可以發現看不到該語句。
--//session 1:
PPPPP_HHH@xxxx> select 8 from zz_yyyy where zyh=1;
no rows selected
--//session 2:
SYS@xxxx> @ voc 2apy2y6jdbx3h 6414
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_ID SQL_TEXT LAST_SQL_ACTIVE_TIM SQL_EXEC_ID CURSOR_TYPE
---------------- ----- ---------- ---------------- ---------- ------------- ---------------------------------- ------------------- ----------- -----------
00000012B2D46D10 6414 PPPPP_HHH 00000000D3F4DB20 2731930736 2apy2y6jdbx3h select 8 from zz_yyyy where zyh=1 OPEN
--//11g與10g上在這裡有一點點不同,當語句執行時該語句的游標不會馬上關閉,所以在session 2可以看到游標CURSOR_TYPE='OPEN'.在
--//執行另外語句時關閉。
--//session 1,執行另外語句看看:
PPPPP_HHH@xxxx> select 8 from dual;
8
----------
8
--//session 2:
SYS@xxxx> @ voc 2apy2y6jdbx3h 6414
no rows selected
--//再次消失。也就是防水牆要審計的表不會快取。
3.繼續測試:
--//session 1:
PPPPP_HHH@xxxx> select 8 from dual;
8
----------
8
PPPPP_HHH@xxxx> @ hash
HASH_VALUE SQL_ID CHILD_NUMBER HASH_HEX
---------- ------------- ------------ ---------
925730553 43jhwwsvkv1rt 0 372d86f9
--//看看sql_id=43jhwwsvkv1rt的情況:
--//sesion 2:
SYS@xxxx> @ voc 43jhwwsvkv1rt 6414
no rows selected
--//嗯這裡有點奇怪,不過再次執行沒ok了。
--//session 1:
select 8 from dual;
select 8 from dual;
select 8 from dual;
--//每次執行完成都在session 2執行@ voc 43jhwwsvkv1rt 6414:
SYS@xxxx> @ voc 43jhwwsvkv1rt 6414
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_ID SQL_TEXT LAST_SQL_ACTIVE_TIM SQL_EXEC_ID CURSOR_TYPE
---------------- ----- ---------- ---------------- ---------- ------------- ---------------------------------- ------------------- ----------- --------------------------------
00000012B2D46D10 6414 PPPPP_HHH 00000000BF7AFEC8 925730553 43jhwwsvkv1rt select 8 from dual OPEN
SYS@xxxx> @ voc 43jhwwsvkv1rt 6414
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_ID SQL_TEXT LAST_SQL_ACTIVE_TIM SQL_EXEC_ID CURSOR_TYPE
---------------- ----- ---------- ---------------- ---------- ------------- ---------------------------------- ------------------- ----------- --------------------------------
00000012B2D46D10 6414 PPPPP_HHH 00000000BF7AFEC8 925730553 43jhwwsvkv1rt select 8 from dual DICTIONARY LOOKUP CURSOR CACHED
SYS@xxxx> @ voc 43jhwwsvkv1rt 6414
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_ID SQL_TEXT LAST_SQL_ACTIVE_TIM SQL_EXEC_ID CURSOR_TYPE
---------------- ----- ---------- ---------------- ---------- ------------- ---------------------------------- ------------------- ----------- --------------------------------
00000012B2D46D10 6414 PPPPP_HHH 00000000BF7AFEC8 925730553 43jhwwsvkv1rt select 8 from dual SESSION CURSOR CACHED
--//可以發現防水牆產品改變了游標cache的規則,只要審計的語句中包含要審計的表該游標就不會SESSION CURSOR CACHED。
--//如果你跟蹤就可以發現:
=====================
PARSING IN CURSOR #140299736370064 len=52 dep=1 uid=131 oct=47 lid=131 tim=1587629118124616 hv=3354287527 ad='257135c60' sqlid='190q1sz3ywrd7'
begin :con := "TASSETACL"."QUERYACL"(:sn, :on); end;
END OF STMT
PARSE #140299736370064:c=0,e=33,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=0,tim=1587629118124615
BINDS #140299736370064:
Bind#0
oacdty=01 mxl=4000(4000) mxlc=00 mal=00 scl=00 pre=00
oacflg=03 fl2=0001 frm=01 csi=852 siz=4000 off=0
kxsbbbfp=7f9a13ecfad0 bln=4000 avl=00 flg=05
Bind#1
oacdty=01 mxl=32(10) mxlc=00 mal=00 scl=00 pre=00
oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0
kxsbbbfp=7fffd8c6e17e bln=32 avl=10 flg=09
value="PPPPP_HHH"
Bind#2
oacdty=01 mxl=32(07) mxlc=00 mal=00 scl=00 pre=00
oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0
kxsbbbfp=7fffd8c6e1b2 bln=32 avl=07 flg=09
value="zz_yyyy"
EXEC #140299736370064:c=1000,e=344,p=0,cr=0,cu=0,mis=0,r=1,dep=1,og=1,plh=0,tim=1587629118125014
CLOSE #140299736370064:c=0,e=9,dep=1,type=3,tim=1587629118125073
--//在每次執行前都會存在以上的呼叫。
=====================
PARSING IN CURSOR #140299736136776 len=33 dep=0 uid=103 oct=3 lid=103 tim=1587629118126459 hv=2731930736 ad='d3f4db20' sqlid='2apy2y6jdbx3h'
select 8 from zz_yyyy where zyh=1
END OF STMT
--//這樣對於效能影響並不大,但是會導致大量的sql語句不會軟軟解析。這也是我上次為什麼執行:
select * from v$open_cursor where sql_id='&&1';
--//很多時候抓取不到會話sid的情況。
--//同時也就是在學習時要注意這些細節問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2687922/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20200416]可怕的防水牆產品.txt
- [20200212]使用DBMS_SHARED_POOL.MARKHOT與檢視v$open_cursor.txt
- [20221128]再談防水牆(檢視訪問效能問題).txt
- WAb防火牆與傳統防火牆防火牆
- 深度調研直播帶貨行業 防水牆釋出《2020年短視訊及直播帶貨調查》行業
- qd防水塗料如何選擇
- [20200423]12c刪除不需要的記錄.txt
- 大資料與牆的故事大資料
- 防水卷材空鋪法施工步驟MEH
- 體育館看臺耐磨防水工程為何要選聚脲彈性體防水塗料?OSL
- linux iptables安全技術與防火牆Linux防火牆
- 配置ModSecurity防火牆與OWASP規則防火牆
- linux apf 防火牆安裝與配置Linux防火牆
- mac混合防火牆工具:Scudo for Mac v2.1註冊版Mac防火牆
- SANGFOR NGAF與H3C SecPath系列(V7)防火牆第三方IPsec對接防火牆
- GPS時鐘之防水防雷設計要領
- 防水卷材不宜在哪些地方使用KRL
- vue 的v-on與v-bindVue
- Sophos Firewall (SFOS) v21 GA - 下一代防火牆防火牆
- WAF與網路防火牆的區別防火牆
- 淺談下一代防火牆與Web應用防火牆的區別防火牆Web
- Little Snitch 5 for Mac v5.7.1啟用版(小飛賊防火牆)Mac防火牆
- mac防火牆軟體 Little Snitch 5 for Mac v5.7.2啟用版Mac防火牆
- 簡單好用的防火牆:Radio Silence for mac v3.2啟用版防火牆Mac
- Linux系統iptables與Firewalld防火牆區別?Linux防火牆
- SNAT、DNAT策略相關與防火牆配置解析防火牆
- [外掛擴充套件]視訊牆外掛VideoWall v0.2大更新套件IDE
- 【網路安全】什麼Web應用防火牆?它與雲防火牆有什麼差異?Web防火牆
- Linux 防火牆與安全管理工具詳解Linux防火牆
- 網閘與防火牆的區別是什麼防火牆
- 流量限制防火牆工具:TripMode for Mac v2.2.1中文啟用版防火牆Mac
- 動態元件與v-on元件
- 屋面防水使用杜DPE自粘高分子卷材如何施工?HKN
- 防火牆防火牆
- Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的聯絡與區別OracleSQL
- CentOS7使用firewalld開啟關閉防火牆與埠CentOS防火牆
- CentOS 防火牆配置與REJECT導致沒有生效問題CentOS防火牆
- 通過kubeadm部署Kubernetes v1.13.5生產可用叢集環境(無需翻牆)