oracle 性能优化 07_诊断事件

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、诊断事件
    诊断事件无官方技术文档支持,使用存在风险,慎用。使用诊断事件可以获取问题更多的信息,调整系统运行
特性,启用某些内部功能。用于系统故障的诊断。跟踪应用,改变系统运行模式。
1.DUMP分析
    immediate dump:
    alter session set events 'immediate trace name <dump> level <n>' # n标示trace详细程度
        alter session set events 'immediate trace name controlf level 10';
    on-error dump:通常在参数文件中设置
    event = "<error> trace name errorstack level <n>" # error ORA-XXX,n详细程度
        event = "60 trace name errorstack level 1" # 发生ORA-60错误时,产生1级信息
    变更运行特性:通常参数文件中设置
    event = "<event> trace name context forever, level <level>" #<event>指明要变更的特性
    event = "<event> trace name context forever, level <level>":参数,会话,系统级
    alter {session|system} set events '<event> trace name context forever, level <n>';
    tree dump:分析索引的结构和变化
    ALTER session set events 'immediate trace name treedump level <OBJECT_ID>';  #<OBJECT_ID>索引的ID
    SELECT object_id,object_name FROM user_objects WHERE object_name LIKE 'IDX_%'; 
参考资料:
http://blog.itpub.net/28507395/viewspace-1328056
http://blog.itpub.net/758322/viewspace-683573
2.常见故障
    实例或进程crash
    进程hang住
        分系统级和应用级,进程等待某资源无法获得,通过等待性能视图,hanganalyze
    非正常循环loop
    系统性能低
    looping:等待某个事件
    应用性能分析工具:event 10046 tkprof
二、常见事件分析
1、sql_trace: 将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中
           Oracle 都做了哪些操作。
使用过程:
a.设置trace文件标识,或使用语句查(如10053)
b.可以通过语句和参数文件设置
    alter session set sql_trace=true;  #会话级
    alter database set sql_trace=true;  #实例级
    参数文件中配置sql_trace
c.执行相关SQL语句
d.关闭trace
    alter session[database] set sql_trace=false;
    sqlplus退出后自动关闭sql_trace;
e、利用oracle工具TKPROF格式化查看trace文件
    tkprof 工具只能用在处理SQL_TRACE和10046事件产生的trace,其他事件如10053不能处理。
参数介绍:
    sys #默认值为yes,输出文件中是否包含以SYS用户运行的sql语句。
    record #指定分析输出记录所有非递归sql文件如:record=c:\test.log,用tkprof格式化后
            大体了解跟踪非递归SQL。有助于我们重演SQL语句(绑定变量的不可以)。
    aggregate #指定tkprof是否将同样文本内容的sql聚合处理,参数为默认为no。
    sort #用来指定tkprof输出文件里sql语句的排序,默认是按照执行的先后顺序排序,参数最
          经常用的方式sort=prsela,exeela,fchela,这三个值加起来就是响应时间,即按照响应
          时间排序。
    print #搭配sort一起使用,用来指定tkprof输出sql语句的数量。如输出一个跟踪文件里响
           应时间排前十的SQL,sort=prsela,exeela,fchela print=10。
    explain #参数是为每一个SQL提供一个执行计划。使用的方法是explain=用户名/密码
    wait #指定输出文件是否包含等待事件,默认是包含的。一般都取默认值。    
查找Trace文件:
    默认开启的环境下找会话的Trace文件,找到会话号,通过会话号,找到对应的trace文件
        select sid from v$mystat where rownum=1;
        select username,sid,serial#,paddr from v$session where username='SYSTEM';
        select spid from v$process where addr = (select paddr from v$session where sid=139);
        然后去udump目录找到对应的Trace文件;
    跟踪其他用户,查到用户的spid,利用dbms_system.set_sql_trace_in_session(129,55,true)包  
        exec dbms_system.set_sql_trace_in_session(129,55,true);  #129 sid,55 serial#
        会话执行相关SQL
        exec dbms_system.set_sql_trace_in_session(129,55,false);  
TKPROF工具使用过程:
    tkprof  /u01/app/oracle/admin/ipemsdb/udump/ipemsdb_ora_17914.trc   
    /u01/app/17914.trc.txt  aggregate=yes sys=no waits=yes sort=prsela,
    exeela,fchela record=/u01/app/17914.sql
Trace文件结构解析:
    服务器执行的SQL语句;
    语句跟踪统计信息;
    行源操作过程;
    汇总统计信息
统计信息各列说明:
CALL #每次SQL语句的处理都分成三个部分。
Parse #这步将SQL语句转换成执行计划,检查是否有正确的授权和所需要的对象是否存在。
Execute #这步是真正的由Oracle来执行语句。包括修改数据,和确定选择的记录。
Fetch #返回查询语句中所获得的记录,这步只有select语句会被执行。
COUNT #这个语句被parse、execute、fetch的次数。
CPU  #这个语句对于所有的parse、execute、fetch所消耗的cpu的时间,以秒为单位。
ELAPSED #这个语句所有消耗在parse、execute、fetch的总的时间。
DISK #物理读取块的数量。
QUERY #在一致性读模式下,所有parse、execute、fetch所获得的buffer的数量。
CURRENT #在current模式下所获得的buffer的数量。
ROWS #所有SQL语句返回的记录数目,但是不包括子查询中返回的记录数目。对于select语句,返
      回记录是在fetch这步,对于insert、update、delete操作,返回记录则是在execute这步。    
参考资料:http://ylw6006.blog.51cto.com/470441/895017/    

2、10046事件: 跟踪会话执行的SQL语句,等待事件,通过TDPROF格式化trace
使用过程:
a.事件的4个级别:
    1  - 启用标准的SQL_TRACE功能,等价于sql_trace
    4  - Level 1 加上绑定值(bind values)
    8  - Level 1 + 等待事件跟踪
    12 - Level 1 + Level 4 + Level 8
b.启动10046事件
    alter session[system] set events ‘10046 trace name context forever, level 12’; --当前会话
    exec dbms_monitor.session_trace_enable(267,996,waits=>true,binds=>true); --其他会话 SID,SERIAL#
c.执行相关SQL
d.关闭10046事件
    alter session set events ‘10046 trace name context off’; --当前会话
    exec dbms_monitor.session_trace_disable(267,996); --其他会话
对于通过DBLINK执行的SQL语句无法进行跟踪和获取执行计划。
SID,SERIAL可以从v$session中查询
    select SID,SERIAL# from v$session where sid =(select sid from v$mystat where rownum=1);
参考资料:http://blog.csdn.net/tianlesoftware/article/details/5857023
TRCA工具:
http://blog.csdn.net/tianlesoftware/article/details/7246542

3、10053事件:跟踪CBO产生执行计划,解决执行计划失真问题,CBO优化器依赖分析数据,适用于特定的SQL
使用过程:
a.确定当前trace文件
    默认即当前会话的SPID对应trace,可以手动设置trace文件标识
    alter session set tracefile_identifier='10053_event';
    可通过如下sql查询trace文件路径
    SELECT      d.VALUE
             || '/'
             || LOWER (RTRIM (i.INSTANCE, CHR (0)))
             || '_ora_'
             || p.spid
             || '.trc'
                AS "trace_file_name"
      FROM   (SELECT   p.spid
                FROM   v$mystat m, v$session s, v$process p
               WHERE   m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
             (SELECT   t.INSTANCE
                FROM   v$thread t, v$parameter v
               WHERE   v.NAME = 'thread'
                       AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
             (SELECT   VALUE
                FROM   v$parameter
               WHERE   NAME = 'user_dump_dest') d;    
b.启动10053事件
    ALTER SESSION SET EVENTS='10053 trace name context forever, level 1[2]';
c.执行sql
    select * from all_tables where table_name='T';    
d.关闭10053事件
    ALTER SESSION SET EVENTS '10053 trace name context off';
e.查看trace文件
    在udump目录下含有tracefile_identifier的trace文件。    
参考资料:http://blog.csdn.net/tianlesoftware/article/details/5859027    
    
4、oradebug:
    oradebug help #查看命令帮助信息
使用过程:
a.追踪进程
    系统的进程ID,使用oradebug setospid id;
    Oracle ID,使用oradebug setorapid id;
b.查询进程号
    select a.username,a.sid ,a.serial#,b.spid  from v$session a,v$process b, v$mystat c  
    where a.paddr=b.addr  and a.sid=c.sid and rownum<2;
    select pid,spid,username from v$process; #pid oracle_id,spid os_id
c.获得系统状态信息,使用spid
   oradebug setospid 27028
   oradebug unlimit
   oradebug dump systemstate 10
   oradebug TRACEFILE_NAME
   oradebug close_trace
d.获得某进程信息
   oradebug dump processstate 10
e.获得进程错误信息
   oradebug dump errorstack 3;
参考资料:http://blog.csdn.net/tianlesoftware/article/details/6525628

5、HANGANALYZE:用于分析hang住而产生严重的性能问题
使用过程
a.单实例
    oradebug hanganalyze 3;
b.rac环境使用
    ALTER SESSION SET EVENTS 'immediate trace name HANGANALYZE level <level>';
参考资料:
http://blog.csdn.net/tianlesoftware/article/details/6321961
http://blog.itpub.net/12020513/viewspace-615165

6、10060事件:分析SQL的断语,用于执行计划的分析

7、分析事例:block dump分析段碎片:
set autotrace on;查看consistent gets,比较表中的数据和对象视图中数据是否一致,block dump查看是否空块多,
alter system dump datafile 5 block 13;
alter table ...move解决

转载于:https://my.oschina.net/peakfang/blog/2245913

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tensorflow框架:卷积神经网络实战--Cifar训练集

Cifar-10数据集包含10类共60000张32*32的彩色图片&#xff0c;每类6000张图。包括50000张训练图片和 10000张测试图片 代码分为数据处理部分和卷积网络训练部分&#xff1a; 数据处理部分&#xff1a; #该文件负责读取Cifar-10数据并对其进行数据增强预处理 import os impo…

linux内存初始化初期内存分配器——memblock

2019独角兽企业重金招聘Python工程师标准>>> 1.1.1 memblock 系统初始化的时候buddy系统&#xff0c;slab分配器等并没有被初始化好,当需要执行一些内存管理、内存分配的任务&#xff0c;就引入了一种内存管理器bootmem分配器。 当buddy系统和slab分配器初始化好后&…

Keras框架:Alexnet网络代码实现

网络思想&#xff1a; 1、一张原始图片被resize到(224,224,3)&#xff1b; 2、使用步长为4x4&#xff0c;大小为11的卷积核对图像进行卷积&#xff0c;输出的特征层为96层&#xff0c; 输出的shape为(55,55,96)&#xff1b; 3、使用步长为2的最大池化层进行池化&#xff0c;此时…

PHP对象传递方式

<?phpheader(content-type:text/html;charsetutf-8);class Person{public $name;public $age;}$p1 new Person;$p1->name 金角大王;$p1->age 400;//这个地方&#xff0c;到底怎样?$p2 $p1;$p2->name 银角大王;echo <pre>;echo p1 name . $p1->n…

微软Azure CDN现已普遍可用

微软宣布Azure CDN一般可用&#xff08;GA&#xff09;&#xff0c;客户现在可以从微软的全球CDN网络提供内容。最新版本是对去年五月份发布的公众预览版的跟进。\\今年5月&#xff0c;微软与Verizon和Akamai一起推出了原生CDN产品。现在推出了GA版本&#xff0c;根据发布博文所…

数据科学生命周期_数据科学项目生命周期第1部分

数据科学生命周期This is series of how to developed data science project.这是如何开发数据科学项目的系列。 This is part 1.这是第1部分。 All the Life-cycle In A Data Science Projects-1. Data Analysis and visualization.2. Feature Engineering.3. Feature Selec…

Keras框架:VGG网络代码实现

VGG概念&#xff1a; VGG之所以经典&#xff0c;在于它首次将深度学习做得非常“深”&#xff0c;达 到了16-19层&#xff0c;同时&#xff0c;它用了非常“小”的卷积核&#xff08;3X3&#xff09;。 网络框架&#xff1a; VGG的结构&#xff1a; 1、一张原始图片被resize…

Keras框架:resent50代码实现

Residual net概念 概念&#xff1a; Residual net(残差网络)&#xff1a;将靠前若干层的某一层数据输出直接跳过多层引入到后面数据层的输入 部分。 残差神经单元&#xff1a;假定某段神经网络的输入是x&#xff0c;期望输出是H(x)&#xff0c;如果我们直接将输入x传到输出作…

Tensorflow框架:InceptionV3网络概念及实现

卷积神经网络迁移学习-Inception • 有论文依据表明可以保留训练好的inception模型中所有卷积层的参数&#xff0c;只替换最后一层全连接层。在最后 这一层全连接层之前的网络称为瓶颈层。 • 原理&#xff1a;在训练好的inception模型中&#xff0c;因为将瓶颈层的输出再通过…

成为一名真正的数据科学家有多困难

Data Science and Machine Learning are hard sports to play. It’s difficult enough to motivate yourself to sit down and learn some maths, let alone to becoming an expert on the matter.数据科学和机器学习是一项艰巨的运动。 激励自己坐下来学习一些数学知识是非常…

Ubuntu 装机软件

Ubuntu16.04 软件商店闪退打不开 sudo apt-get updatesudo apt-get dist-upgrade# 应该执行一下更新就好&#xff0c;不需要重新安装软件中心 sudo apt-get install –reinstall software-center Ubuntu16.04 深度美化 https://www.jianshu.com/p/4bd2d9b1af41 Ubuntu18.04 美化…

数据分析中的统计概率_了解统计和概率:成为专家数据科学家

数据分析中的统计概率Data Science is a hot topic nowadays. Organizations consider data scientists to be the Crme de la crme. Everyone in the industry is talking about the potential of data science and what data scientists can bring in their BigTech and FinT…

Keras框架:Mobilenet网络代码实现

Mobilenet概念&#xff1a; MobileNet模型是Google针对手机等嵌入式设备提出的一种轻量级的深层神经网络&#xff0c;其使用的核心思想便是depthwise separable convolution。 Mobilenet思想&#xff1a; 通俗地理解就是3x3的卷积核厚度只有一层&#xff0c;然后在输入张量上…

数据驱动开发_开发数据驱动的股票市场投资方法

数据驱动开发Data driven means that your decision are driven by data and not by emotions. This approach can be very useful in stock market investment. Here is a summary of a data driven approach which I have been taking recently数据驱动意味着您的决定是由数据…

前端之sublime text配置

接下来我们来了解如何调整sublime text的配置&#xff0c;可能很多同学下载sublime text的时候就是把它当成记事本来使用&#xff0c;也就是没有做任何自定义的配置&#xff0c;做一些自定义的配置可以让sublime text更适合我们的开发习惯。 那么在利用刚才的命令面板我们怎么打…

python 时间序列预测_使用Python进行动手时间序列预测

python 时间序列预测Time series analysis is the endeavor of extracting meaningful summary and statistical information from data points that are in chronological order. They are widely used in applied science and engineering which involves temporal measureme…

keras框架:目标检测Faster-RCNN思想及代码

Faster-RCNN&#xff08;RPN CNN ROI&#xff09;概念 Faster RCNN可以分为4个主要内容&#xff1a; Conv layers&#xff1a;作为一种CNN网络目标检测方法&#xff0c;Faster RCNN首先使用一组基础的convrelupooling层提取 image的feature maps。该feature maps被共享用于…

算法偏见是什么_算法可能会使任何人(包括您)有偏见

算法偏见是什么在上一篇文章中&#xff0c;我们展示了当数据将情绪从动作中剥离时会发生什么 (In the last article, we showed what happens when data strip emotions out of an action) In Part 1 of this series, we argued that data can turn anyone into a psychopath, …

大数据笔记-0907

2019独角兽企业重金招聘Python工程师标准>>> 复习: 1.clear清屏 2.vi vi xxx.log i-->edit esc-->command shift:-->end 输入 wq 3.cat xxx.log 查看 --------------------------- 1.pwd 查看当前光标所在的path 2.家目录 /boot swap / 根目录 起始位置 家…

Tensorflow框架:目标检测Yolo思想

Yolo-You Only Look Once YOLO算法采用一个单独的CNN模型实现end-to-end的目标检测&#xff1a; Resize成448448&#xff0c;图片分割得到77网格(cell)CNN提取特征和预测&#xff1a;卷积部分负责提取特征。全链接部分负责预测&#xff1a;过滤bbox&#xff08;通过nms&#…