[20181013]12cR2 無法執行的sql語句會記錄在alert.log.txt
[20181013]12cR2 無法執行的sql語句會記錄在alert.log.txt
--//12C R2 支援無法執行的sql語句記錄在alert.log檔案中,預設執行100次.
--//首先無法執行的SQL語句語句一樣消耗共享池,增加出現SQL*Net break/reset to client相關等待時間.
--//以及sql語句的分析時間,對於特別頻繁的語句消耗更大.
--//當然以前可以使用10035事件跟蹤定位這些sql語句.
--//如果執行頻率高,可以在檢視v$active_session_history或者dba_hist_active_sess_history抓取到等待事件
--//SQL*Net break/reset to client.
--//注意知道sql_id無法透過檢視v$sql找到sql語句,只能透過x$kglob定位相關資訊.
--//連結 http://blog.itpub.net/267265/viewspace-2120884/=>[20160624]使用10035事件跟蹤無法執行的sql語句.txt
--//透過例子演示這個功能:
1.環境:
SCOTT@test01p> @ ver1
PORT_STRING VERSION BANNER CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
2.測試:
--//寫一個指令碼b3.txt內容如下:
select sysdate from xxxxxxxxxxxxxx;
/
/
....--//包含99個斜線
/
@b3.txt
...
3.檢查alert.log檔案:
2018-10-13T21:13:30.345877+08:00
TEST01P(3):select sysdate from xxxxxxxxxxxxxx
TEST01P(3):Additional information: hd=000007FF133F03A0 phd=000007FF13610B68 flg=0x20 cisid=81 sid=81 ciuid=81 uid=81
4.補充測試:
SYS@test> select sys.dbms_sqltune_util0.sqltext_to_sqlid('select sysdate from xxxxxxxxxxxxxx'||chr(0)) c20 from dual;
C20
--------------------
bb98w6dj7wz8p
SYS@test> select * from v$sql where sql_id='bb98w6dj7wz8p';
no rows selected
SYS@test> @ sharepool/shp4 bb98w6dj7wz8p 0
TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09
-------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
子游標控制程式碼地址 000007FF133F03A0 000007FF13610B68 select sysdate from xxxxxxxxxxxxxx 0 0 100 00 00 0 0 3171 3171 3171 1652456725 bb98w6dj7wz8p 0
父遊標控制程式碼地址 000007FF13610B68 000007FF13610B68 select sysdate from xxxxxxxxxxxxxx 1 0 100 000007FF1321AA70 00 4072 0 0 4072 4072 1652456725 bb98w6dj7wz8p 65535
--//KGLHDADR=000007FF13610B68 對應前面的phd=000007FF13610B68. 對應父遊標
--//KGLHDADR=000007FF133F03A0 對應前面的hd=000007FF133F03A0 對應子游標.
--//附上shp4.sql
column N0_6_16 format 99999999
SELECT DECODE (kglhdadr,
kglhdpar, '父遊標控制程式碼地址',
'子游標控制程式碼地址')
text,
kglhdadr,
kglhdpar,
substr(kglnaobj,1,40) c40,
KGLHDLMD,
KGLHDPMD,
kglhdivc,
kglobhd0,
kglobhd6,
kglobhs0,kglobhs6,kglobt16,
kglobhs0+kglobhs6+kglobt16 N0_6_16,
kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6+kglobt16 N20,
kglnahsh,
kglobt03 ,
kglobt09
FROM x$kglob
WHERE kglobt03 = '&1' or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2216312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 查詢orcale執行的SQL語句記錄SQL
- MySQL 記錄所有執行了的 sql 語句MySql
- 記錄ORACLE語句的執行時間Oracle
- 在事務中執行sql語句SQL
- 在nhibernate中執行SQL語句SQL
- sql語句如何執行的SQL
- 執行大的sql語句SQL
- sql語句批量執行SQL
- 一條SQL語句在MySQL中如何執行的MySql
- mysql的sql語句執行流程MySql
- SQL 語句的執行順序SQL
- 查詢正在執行的sql語句及該語句執行的時間SQL
- 一條sql語句在mysql中是如何執行的MySql
- 一條 SQL 語句在 MySQL 中是如何執行的?MySql
- 0624使用10035事件跟蹤無法執行的sql語句事件SQL
- SQL語句執行順序SQL
- toad執行sql語句SQL
- 利用sql語句找出表中有重複記錄的三種sql寫法SQL
- SQL Server SQL語句執行順序SQLServer
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- 怎樣在sqlite3上執行SQL語句SQLite
- 在.NET中用儲存過程執行SQL語句儲存過程SQL
- 【AWR】通過AWR報告中記錄的 SQL Id獲得SQL語句的執行計劃SQL
- Laravel 獲取執行的sql語句LaravelSQL
- 查詢執行慢的SQL語句SQL
- CoreData執行過程的sql語句SQL
- 識別低效執行的SQL語句SQL
- 剖析SQL語句的執行過程SQL
- Oracle SQL 語句的執行過程OracleSQL
- 清除SQL語句的執行計劃SQL
- 查詢正在執行的SQL語句SQL
- 用SQL語句去掉重複的記錄SQL
- 必知必會——SQL語句基本語法整理SQL
- 在oracle中跟蹤會話執行語句的幾種方法Oracle會話
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- mysql執行sql語句過程MySql
- Mybatis 動態執行SQL語句MyBatisSQL
- sql語句執行緩慢分析SQL