通過ERRORSTACK找出正在執行的SQL中的繫結變數值
oradebg中的ERRORSTACK可以幫我們找到被open中的SQL的繫結變數值。
舉例如下:
session A:
SQL> select spid from v$process where addr in (
2 select paddr from v$session where sid in (
3 select sid from v$mystat where rownum=1));SPID
————————————
29397SQL> var cnt number
SQL> exec :cnt :=1000000PL/SQL procedure successfully completed.
SQL> select * from dba_objects where rownum<:cnt>
這個session正在執行時,我們對他做一個level 3的ERRORSTACK
SQL> oradebug setospid 29397
Oracle pid: 58, Unix process pid: 29397, image: oracle@qadb17 (TNS V1-V3)
SQL> oradebug dump errorstack 3
Statement processed.
從trace file中我們可以看到這一段資訊:
Cursor#2(ffffffff7b831758) state=ROW curiob=ffffffff7b849e10
curflg=46 fl2=400 par=0 ses=419176ae8
sqltxt(3b421a118)=select * from dba_objects where rownum<:cnt>hash=939f4a697bb3b0f40484e0e412dc34b1
parent=3b3b69db0 maxchild=01 plk=3b8156b20 ppn=n
cursor instantiation=ffffffff7b849e10 used=1247324332
child#0(3b4219f98) pcs=3b3b699c0
clk=3b8157478 ci=3b3b690a8 pn=3b44355f0 ctx=3b3b687f8
kgsccflg=0 llk[ffffffff7b849e18,ffffffff7b849e18] idx=0
xscflg=c0110476 fl2=5200009 fl3=42222008 fl4=100
Bind bytecodes
Opcode = 2 Bind Twotask Scalar Sql In (may be out) Copy
oacdef = 3b3b65378 ffsi = 48, ffsi = 0
kkscoacd
Bind#0
oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
oacflg=03 fl2=1000000 frm=00 csi=00 siz=24 ff=0
kxsbbbfp=ffffffff7b8499c8 bln=22 avl=02 flg=05
value=1000000 — 繫結變數值
Frames pfr ffffffff7b849d78 siz=20096 efr ffffffff7b849c48 siz=20024
Cursor frame. dump
enxt: 8.0×00000010 enxt: 7.0x00000cc8 enxt: 6.0x00000b58 enxt: 5.0×00001000
enxt: 4.0x00000f88 enxt: 3.0×00000720 enxt: 2.0×00000020 enxt: 1.0x00000f50
pnxt: 2.0×00000038 pnxt: 1.0×00000010
kxscphp ffffffff7b840690 siz=2152 inu=1672 nps=1624
kxscdfhp ffffffff7b840490 siz=984 inu=88 nps=0
kxscbhp ffffffff7b8402b0 siz=984 inu=168 nps=48
kxscwhp ffffffff7b8405a0 siz=1287808 inu=1283808 nps=1283624
Session cached cursors
從這段trace file中可以看到繫結變數為1000000。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-710960/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 獲取sql繫結變數的值SQL變數
- 關於繫結變數的SQL繫結什麼值變數SQL
- oracle找出沒有使用繫結變數的sql語句Oracle變數SQL
- 找出沒有繫結變數的引發硬解析的SQL變數SQL
- 通過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- 關於pl/sql中的繫結變數SQL變數
- 查詢繫結變數的值變數
- 關於sql_profile中的繫結變數SQL變數
- Oracle - 執行過的SQL、正在執行的SQL、消耗資源最多的SQLOracleSQL
- 通過日誌檢視mysql正在執行的SQL語句MySql
- 檢視未繫結變數的sql變數SQL
- 如何用FGA得到繫結變數的值變數
- 如何得到繫結變數的輸入值變數
- v$sql_bind_capture與timestamp型別的繫結變數的數值SQLAPT型別變數
- PL/SQL中繫結變數使用的簡單測試SQL變數
- ORACLE通過BIND_AWARE+SQL PATCH解決SQL繫結變數中資料傾斜的問題OracleSQL變數
- ORACLE 獲取繫結變數值Oracle變數
- 如何獲取繫結變數值變數
- SQL Server動態SQL,繫結變數SQLServer變數
- 繫結變數在靜態sql和動態sql中變數SQL
- 查詢Oracle正在執行和執行過的SQL語句OracleSQL
- 關於DSS中的繫結變數變數
- 統計未用繫結變數的sql語句變數SQL
- oracle 查詢未使用繫結變數的sqlOracle變數SQL
- SQL Developer中使用繫結變數SQLDeveloper變數
- 執行sql語句給外部變數賦值SQL變數賦值
- 透過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- 查詢出系統中沒有使用繫結變數的SQL變數SQL
- OCI中繫結變數的實現例子變數
- 檢視正在執行的SQLSQL
- 找出session正在執行什麼語句Session
- 通過分析SQL語句的執行計劃優化SQL(總結)SQL優化
- SQL*Plus中使用DATE型別的繫結變數SQL型別變數
- 查詢沒有使用繫結變數的sql zt變數SQL
- 【SQL 調優】繫結變數窺測SQL變數
- 【sql調優】繫結變數與CBOSQL變數
- 【sql調優】使用繫結變數(二)SQL變數