ITPub博客

首页 > 数据库 > Oracle > [20181013]12cR2 无法执行的sql语句会记录在alert.log.txt

[20181013]12cR2 无法执行的sql语句会记录在alert.log.txt

原创 Oracle 作者:lfree 时间:2018-10-13 21:21:31 0 删除 编辑

[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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2676
  • 访问量
    6434623