【学习笔记】Oracle数据库10049用于分析SQL解析笔记案例

时间:2016-11-05 13:54   来源:Oracle研究中心   作者:HTZ   点击:

天萃荷净

Oracle研究中心学习笔记:分享一篇关于Oracle数据库关于SQL解析的详细文档,该文档详细介绍使用10049 event事件来分析SQL语句的解析笔记。

1,数据库版本

SQL> select * from v$version;

BANNER

—————————————————————-

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bi

PL/SQL Release 10.2.0.1.0 – Production

CORE 10.2.0.1.0 Production

TNS for Linux: Version 10.2.0.1.0 – Production

NLSRTL Version 10.2.0.1.0 – Production

2,查询SQL的HASH_VALUE

SQL> @find_sql.sql

Enter value for sql_text: from scott.emp

Enter value for sql_id:

SQL_ID CHILD HASH_VALUE PLAN_HASH EXECS ETIME AVG_ETIME USERNAME

————- —— ———- ———- ———- ————- ————- ————-

SQLTEXT

————————————————————————————————

ggqns3c1jz86c 0 52404428 3956160932 1 .17 .17 SYS

select * from scott.emp

3,配置event

关于10049每一个level的意思与配置方法见:配置10049

SQL> @10to16.sql

Enter value for number10: 52404428

TO_CHAR(‘52404428’,’XXXXXXXXXXXXXXXXXXXXXXXXX

———————————————

31fa0cc

2000+0010+0020

a0cc2030

SQL> @16to10.sql

Enter value for number16: a0cc2030

NUMBER10

—————————-

2697732144

SQL> @parameter_hide.sql

+————————————————————————+

| display hide parameter value |

+————————————————————————+

Enter Search Parameter (i.e. max|all) : kks

PARAMETER SESSION_VALUE INSTANCE_VALUE DESCRIPTION

—————————————- ——————– ——————– ————————————————————

_kks_use_mutex_pin FALSE FALSE Turning on this will make KKS use mutex for cursor pins.

SQL> oradebug setmypid

Statement processed.

SQL> oradebug event 10049 trace name context forever,level 2697732144;

Statement processed.

4,运行sql

SQL> startup force pfile=’/tmp/123.ora’;

ORACLE instance started.

Total System Global Area 524288000 bytes

Fixed Size 2022080 bytes

Variable Size 218105152 bytes

Oracle oracleplus.netDatabase Buffers 301989888 bytes

Redo Buffers 2170880 bytes

Database mounted.

Database opened.

SQL> oradebug setmypid

Statement processed.

SQL> oradebug event 10049 trace name context forever,level 2697732144;

Statement processed.

SQL> select * from scott.emp;

SQL> select * from scott.emp;

SQL> select * from scott.emp;

SQL> select * from scott.emp;

SQL> oradebug tracefile_name;

/oracle/app/oracle/admin/orcl1021/udump/orcl1021_ora_7566.trc

*** 2014-05-04 13:26:36.128

/******************************************************************************

KGLTRCLCK kglget hd = 0x0x4408bb808 KGL Lock addr = 0x0x3c1932c00 mode = N

KGLTRCPIN kglpin hd = 0x0x4408bb808 KGL Pin addr = 0x0x3c190e4f8 mode = X

KGLTRCPIN kglpndl hd = 0x0x4408bb808 KGL Pin addr = 0x0x3c190e4f8 mode = X

KGLTRCLCK kglget hd = 0x0x4408bb5e0 KGL Lock addr = 0x0x3c1909030 mode = N

KGLTRCPIN kglpin hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c190e938 mode = X

KGLTRCPIN kglpndl hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c190e938 mode = S

KGLTRCLCK kgllkdl hd = 0x0x4408bb5e0 KGL Lock addr = 0x0x3c1909030 mode = N

KGLTRCLCK kgllkdl hd = 0x0x4408bb808 KGL Lock addr = 0x0x3c1932c00 mode = N

第一次硬分析,这个我们可以看到在父游标上面先kglget NULL的锁,再获取PIN的锁,随后再

是子游标的lock/pin,最后释放父游标的NULL locK锁

*******************************************************************************/

/******************************************************************************

*** 2014-05-04 13:26:48.940

KGLTRCLCK kglget hd = 0x0x4408bb808 KGL Lock addr = 0x0x3c1923f68 mode = N

KGLTRCLCK kglget hd = 0x0x4408bb5e0 KGL Lock addr = 0x0x3c18fef90 mode = N

KGLTRCPIN kglpin hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c193c840 mode = S

KGLTRCPIN kglpndl hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c193c840 mode = S

KGLTRCLCK kgllkdl hd = 0x0x4408bb5e0 KGL Lock addr = 0x0x3c18fef90 mode = N

KGLTRCLCK kgllkdl hd = 0x0x4408bb808 KGL Lock addr = 0x0x3c1923f68 mode = N

这里是软分析,也是第二次分析,这里可以看到整个过程没有X的锁

*******************************************************************************/

KGLTRCLCK kglget hd = 0x0x4408bb808 KGL Lock addr = 0x0x3c1932e28 mode = N

KGLTRCLCK kglget hd = 0x0x4408bb5e0 KGL Lock addr = 0x0x3c1932ee0 mode = N

KGLTRCPIN kglpin hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c190e3e8 mode = S

KGLTRCPIN kglpndl hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c190e3e8 mode = S

KGLTRCPIN kglpin hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c190e938 mode = S

KGLTRCPIN kglpndl hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c190e938 mode = S

再执行一次

SQL> select * from scott.emp;

只增加了下面的2行

*** 2014-05-04 13:28:08.866

下面是多次运行后,软软分析的trace,这里我们可以只在子游标上面获取pin的锁

KGLTRCPIN kglpin hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c18fff58 mode = S

KGLTRCPIN kglpndl hd = 0x0x4408bb5e0 KGL Pin addr = 0x0x3c18fff58 mode = S

SQL> @find_sql.sql

Enter value for sql_text: from scott.emp

Enter value for sql_id:

SQL_ID CHILD HASH_VALUE PLAN_HASH EXECS ETIME AVG_ETIME USERNAME

————- —— ———- ———- ———- ————- ————- ————-

SQLTEXT

———-

ggqns3c1jz86c 0 52404428 3956160932 5 .01 .00 SYS

select * from scott.emp

SQL> select kglhdadr,kglhdpar,kglnaobj from x$kglob where kglhdadr in (‘00000004408BB5E0′,’00000004408BB808’);

KGLHDADR KGLHDPAR KGLNAOBJ

—————- —————- ———————————————————————-

00000004408BB5E0 00000004408BB808 select * from scott.emp

00000004408BB808 00000004408BB808 select * from scott.emp

本文固定链接: http://www.htz.pw/2015/03/28/10049%e7%94%a8%e4%ba%8e%e5%88%86%e6%9e%90sql%e8%a7%a3%e6%9e%90.html | 认真就输

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【学习笔记】Oracle数据库10049用于分析SQL解析笔记案例

mysql中10049是什么错误_【学习笔记】Oracle数据库10049用于分析SQL解析笔记案例相关推荐

  1. Jdbc访问mysql查询聚合函数_JDBC连接参数设置对Oracle数据库的影响分析

    一次数据库性能问题处理引发的JDBC参数设置思考 近期某环境下系统,出现大面积页面访问缓慢情况,每个页面交易响应时间2-5秒,严重超过平日访问阈值. 经排查分析,问题主要出现在数据库,生成AWR得到3 ...

  2. mysql中查询出现的错误_在MySQL查询中查询语法错误

    您在此专栏后缺少逗号: `p`.`name`请考虑以下查询: SELECT i.itemtype AS Item , p.name , SUM(CASE WHEN itemtype = 2148 TH ...

  3. mysql schema 保存数据_在MySQL中,所有触发器的定义都保存在information_schema数据库下的()表中。_学小易找答案...

    [单选题]如何将英制 的零件转为公制的零件 ( ). [判断题]连续选择边线创建倒角时,不能单独修改某一边线的倒角大小 [判断题]创建筋特征时截面必须是闭和的 [填空题]Hibernate 的会话接口 ...

  4. 阿里云mysql用户名和密码是什么_阿里云服务器数据库账号密码是什么

    阿里云服务器数据库账号密码是什么,阿里云虚拟机数据库. 在阿里云ecs云服务器上部署数据库后,在平常的操作中可能会遇到些问题,可以先做个大致的了解: 如果您想看更多的在ecs上的数据库的相关操作,请前 ...

  5. oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...

    天萃荷净 深入研究Oracle坏块obj$导致exp/expdp不能执行导出的原因 上篇(案例:Oracle出现obj$坏块exp/expdp导出不能导出的解决办法ORA-01578 ORA-0111 ...

  6. 达内oracle教材,达内学习心得oracle数据库笔记

    达内学习心得oracle数据库笔记 达内学员: oracle 数据库笔记获奖学员:王梓祺所获奖项:三等奖内容:/*前言:这份资料是结合老师笔记,课堂案例, TTS6.0 课件以及个人的理解整理,时间仓 ...

  7. winform执行oracle语句,C#中的Winform应用程序连接远程Oracle数据库的配置文件及SQL语句的写法...

    远程连接Oracle数据库的配置文件及sql语句 近期,应朋友的要求,用C#语言开发了一个winform应用程序,要求的是连接到远程的Oracle数据库,用惯了SQL Server的我突然有点懵,然后 ...

  8. mysql中的删除语法错误_mysql – EXPLAIN中的SQL语法错误

    我试图让一个解释命令在 mysql中工作.我正在尝试解决此删除查询的性能问题: DELETE FROM boost_cache_relationships WHERE base_dir = 'cach ...

  9. python中冒号报错_python中一些常见的错误_后端开发

    PHP8 新特性之 Attributes_后端开发 PHP8的Alpha版本,过几天就要发布了,其中包含了不少的新特性,今天呢,我想谈谈Attributes,为啥呢, 是昨天我看到很多群在转发一个文章 ...

最新文章

  1. 提示框样式说明android:windowFrame
  2. hdu1247 字典树或者hash
  3. 如何设计ABAP/4 Query报表
  4. Python requests 笔记(一)
  5. Makefile的写法
  6. [css] 举例说明实现圆角的方式有哪些?
  7. 全栈深度学习第6期: 模型测试和部署
  8. 硬币找零问题,动态规划基础,百度面试题
  9. 【计算机组成原理】零碎知识归纳总结
  10. 黑苹果oc和clover哪个好?优势介绍 OpenCore Configurator for Mac中文版v2.16.1.0
  11. MongoDB可视化界面工具Studio3T的安装 - 讲解篇
  12. 【待解决】使用JUnit时报错java.lang
  13. 一键清理Quartus工程编译垃圾
  14. (Github)增强插件、脚本
  15. 单片机微型计算机 原理及接口技术,微机原理及单片机接口技术
  16. TeamViewer在windows2003上如何免费使用
  17. 求基于图像处理的身份证号码识别的程序
  18. 单细胞数据挖掘 P 3.1 QC以及细胞周期判断
  19. 14家互联网公司裁员(1-2月裁员清单)
  20. 想不想制作一个Coreldraw 蝴蝶结呀这个是非常详细的教程

热门文章

  1. SpringBoot 2.x 使用 exe4j 打包成 exe 可执行文件(附带启动传参)
  2. 提效小技巧——记录那些不常用的代码片段
  3. JavaScript中if语句
  4. 勿谓言之不预也,是谁说的
  5. 帝国cms后台登陆显示Cann‘t connect to DB 解决方法
  6. C# - RestSharp实现短信验证码注册登录完整示例
  7. (附源码)SSM化妆品销售购物系统JAVA计算机毕业设计项目
  8. Verilog关于signed、有符号数、算数移位、$signed()的使用
  9. Verilog signed函数
  10. 并行编程OpenMP基础及简单示例