开发者社区> lfreeali> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[20150803]无法通过sql_id找到sql语句2.txt

简介: [20150803]无法通过sql_id找到sql语句2.txt --前一阵子,在做优化时遇到1个无法通过sql_id找到sql语句的情况: http://blog.itpub.net/267265/viewspace-1749265/ --就是因为共享池太小,执行次数少,没到取样时间,已经从共享池清除。
+关注继续查看

[20150803]无法通过sql_id找到sql语句2.txt

--前一阵子,在做优化时遇到1个无法通过sql_id找到sql语句的情况:
http://blog.itpub.net/267265/viewspace-1749265/

--就是因为共享池太小,执行次数少,没到取样时间,已经从共享池清除。

--实际上还有容易被忽略的情况是lob字段。通过例子来说明:以前遇到等待事件enq HW - contention时也遇到过:
http://blog.itpub.net/267265/viewspace-1107524/

1.建立测试环境:
SCOTT@test01p> @ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

SCOTT@test01p> create table t (id number , text clob);
Table created.

SCOTT@test01p> insert into t values (1,'aaa');
1 row created.

SCOTT@test01p> commit ;
Commit complete.

SCOTT@test01p> select rowid,t.* from t;
ROWID                      ID TEXT
------------------ ---------- -----------------------------
AAAX/SAAJAAAATeAAA          1 aaa

--执行多次。
SCOTT@test01p> @rowid AAAX/SAAJAAAATeAAA
    OBJECT       FILE      BLOCK        ROW DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
     98258          9       1246          0 9,1246               alter system dump datafile 9 block 1246

SCOTT@test01p> @10to16 98258
10 to 16 HEX   REVERSE16
-------------- ------------------
0000000017fd2 0xd27f0100

--17fd2表示的是object_id.

SCOTT@test01p> @spid
       SID    SERIAL# SPID   C50
---------- ---------- ------ --------------------------------------------------
       355          7 4680   alter system kill session '355,7' immediate;


SYS@test01p> select sql_id,sql_text from V$OPEN_CURSOR where sid=355 and  sql_text like 'table%\_17fd2%' escape '\';
SQL_ID        SQL_TEXT
------------- ------------------------------------------------------------
0dzargq9a6gg3 table_4_9_17fd2_0_0_0

SYS@test01p> select sys.dbms_sqltune_util0.sqltext_to_sqlid('table_4_9_17fd2_0_0_0'||chr(0)) c20 from dual;
C20
--------------------
0dzargq9a6gg3

--很容易猜到这个与lob字段有关。

2.查询sql_id=0dzargq9a6gg3:
SYS@test01p> select * from v$sql where sql_id='0dzargq9a6gg3';
no rows selected

SELECT DECODE (kglhdadr,
               kglhdpar, '父游标句柄地址',
               '子游标句柄地址')
          text,
       kglhdadr,
       kglhdpar,
       substr(kglnaobj,1,20),
       kglobhd0,
       kglobhd6,
       kglobhs0,kglobhs6,kglobt16,
       kglobhs0+kglobhs6+kglobt16,
       kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6+kglobt16 N20
  FROM x$kglob
WHERE kglobt03 = '&1';

TEXT           KGLHDADR         KGLHDPAR         SUBSTR(KGLNAOBJ,1,20)  KGLOBHD0         KGLOBHD6           KGLOBHS0   KGLOBHS6   KGLOBT16 KGLOBHS0+KGLOBHS6+KGLOBT16        N20
-------------- ---------------- ---------------- ---------------------- ---------------- ---------------- ---------- ---------- ---------- -------------------------- ----------
子游标句柄地址 000007FF2668F1C8 000007FF57A166F0 table_4_9_17fd2_0_0_   000007FF2668F110 000007FF2BE09F08       4032       4032       3102                      11166      11166
父游标句柄地址 000007FF57A166F0 000007FF57A166F0 table_4_9_17fd2_0_0_   000007FF57A16638 00                     4072          0          0                       4072       4072

--不过这种情况查询查询x$kglob还是能查询到的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Mysql常用sql语句(5)- as 设置别名
Mysql常用sql语句(5)- as 设置别名
80 0
MySQL系列专题(2)-MySQL的SQL语句和高级特性
MySQL系列专题(2)-MySQL的SQL语句和高级特性
91 0
MySQL关于SQL语句的一些题目
MySQL关于SQL语句的一些题目 1、用一条SQL语句查询出每门课都大于80的学生的姓名 (1)SELECT NAME FROM score GROUP BY NAME HAVING MIN(grade) > 80 (2)SELECT DISTINCT NAME FROM score WH.
1532 0
MySQL的常用SQL语句
修改密码 这是常见的大家一般都要用的   首先安装成功了打开cmd –> mysql -u root -p –>输入你的密码 –>修改mysql root用户密码    格式:mysql> set password for 用户名@localhost = password(‘新密码’);    举例:mysql> set password for root@localhost = password(‘root’); 上面例子将用户root的密码更改为root; 如果是学习使用一般密码该简单些,如root,123等,这样便于记忆。
1586 0
MySQL特有的SQL语句 第一弹
关于SQL,我们总是会有无穷无尽相关的话题,有时候碰到了一些觉得不错的SQL功能会标记下来,好记性不烂烂笔头,回头来看,自己也收集了不少的点子,但是从整体来看,可能仅仅是一瓢水而已。
1192 0
MySQl之最全且必会的sql语句
原文链接:http://blog.csdn.net/qq_32059827/article/details/51763950 创建一个名称为mydb1的数据库,如果有mydb1数据库则直接使用,如果无则创建mydb1数...
812 0
【C/C++学院】(21)Mysql数据库编程--开发简介/SQL语句
<h1><span style="line-height:1.5"><span style="font-size:18px">一.mysql安装与管理</span></span></h1> <div><span style="line-height:1.5; font-size:18px; font-family:'Microsoft YaHei UI','Microsoft YaHei
1218 0
利用tcpdump抓取mysql sql语句
这个脚本是我之前在网上无意间找个一个利用tcpdump 抓包工具获取mysql流量,并通过过滤把sql 语句输入。 脚本不是很长,但是效果很好。 #!/bin/bash #this script used montor mysql network traffic.
980 0
+关注
lfreeali
熟悉oracle数据库性能优化,rman备份,数据库恢复技术.
文章
问答
文章排行榜
最热
最新
相关电子书
更多
SQL Server 2017
立即下载
SQL Sever迁移PG经验
立即下载
用SQL做数据分析
立即下载