1.背景:

运维人员或多或少都会遇到分析问题、分析故障的时候,往往在碰到一些棘手的问题事,我们都会往更深层次的专家进行求助。不管是二线专家还是Oracle全球服务工程师(后文称GCS工程师),往往都会让你提交这样那样的数据。基本每次都会碰到这样的情况,问一点数据给一点,主要的成本消耗都在提取数据中。

2.获取什么数据:

经过整理多年与GCS以及自己分析问题的经验,建议提供以下数据:

l  OSW

l  Nmon

l  日志文件

l  Awr/ash

l  dba_hist_active_sess_history

l  Opatch

3.如何获取数据:

经过多年的运维经验进行总结,我们建议至少要提供问题发生前1小时的数据,如问题发生在今天10:00,那么数据由今天9:00开始提供,一直到问题恢复后30分钟。

l  OSW

这个是ORACLE提供的对系统监控的工具,实质是vmstat等,有时候OSW有数据但nmon无数据,有时候则相反,故就算部署了nmon仍然建议部署osw的原因。集数据间隔建议20秒采集一次。

获取数据脚本:

touch -t 201705091300 test1

touch -t 201705091400 test2

find . -type f -newer test1 ! -newer test2|xargs tar cvf oswdata_ggdb2.tar

ps: 201705091300代表2017年5月9日13时

l  Nmon

经典的系统监控工具,在AIX、LINUX上都有其版本。建议最多60秒采集一次,目前来看,比较多地方用了nmon采集数据,但是采集间隔为10~20分钟,导致了采集了跟无采集一样。

获取数据只需cat或者ftp相关的工具即可。

l  日志文件

TFA是个11.2版本上推出的用来收集Grid Infrastructure/RAC环境下的诊断日志的工具,它可以用非常简单的命令协助用户收集RAC里的日志,以便进一步进行诊断;TFA是类似diagcollection的一个oracle 集群日志收集器,而且TFA比diagcollection集中和自动化的诊断信息收集能力更强大。TFA有以下几个特点:

  • TFA可以在一台机器上执行一条简单的命令把所有节点的日志进行打包,封装;
  • TFA可以在收集的过程中对日志进行”trim”操作,减少数据的收集量;
  • TFA可以收集用来诊断用的“一段时间内”的数据;
  • TFA可以把所有节点的日志收集并封装好放在某一个节点上以便传输阅读;
  • TFA可以指定Cluster中的某一部分组件进行日志收集,如:ASM ,RDBMS,Clusterware
  • TFA可以根据条件配置对告警日志进行实时扫描(DB Alert Logs, ASM Alert Logs, Clusterware Alert Logs, etc);
  • TFA可以根据实时扫描的结果自动的收集诊断日志;
  • TFA可以根据指定的错误进行对告警日志的扫描;
  • TFA可以根据指定的错误扫描后的结果收集诊断日志;

获取数据的脚本:

用root或者grid执行

# $TFA_HOME/bin/tfactl diagcollect -all -from "Jan/21/2013 00:00:00" -to "Jan/21/2013 13:00:00"

11gR2之前的,可以根据业支团队采集数据的脚本执行命令即可。

l  Awr/ash

AWR和ASH是ORACLE常用的工具,需问题分析时,需要提供正常时间段和问题时间段的AWR和ASH报告。AWR报告每小时生成一份,ASH每15—30分钟生成一份。

l  dba_hist_active_sess_history

在很多情况下,当数据库发生性能问题的时候,我们并没有机会来收集足够的诊断信息,比如system state dump或者hang analyze,甚至问题发生的时候DBA根本不在场。这给我们诊断问题带来很大的困难。那么在这种情况下,我们是否能在事后收集一些信息来分析问题的原因呢?在Oracle 10G或者更高版本上,答案是肯定的。本文我们将介绍一种通过dba_hist_active_sess_history的数据来分析问题的一种方法。

获取数据的方式:

在发生问题的数据库上执行exp提取需要的数据:

SQL> conn user/passwd

SQL> create table m_ash as select * from dba_hist_active_sess_history where SAMPLE_TIME between TO_TIMESTAMP ('<time_begin>', 'YYYY-MM-DD HH24:MI:SS') and TO_TIMESTAMP ('<time_end>', 'YYYY-MM-DD HH24:MI:SS');

执行导出:

$ exp user/passwd file=m_ash.dmp tables=(m_ash) log=m_ash.exp.log

l  Opatch

采集Opatch的数据主要是确认补丁信息,以确认是否命中一些相关的BUG。分别用Oracle和grid用户进行数据采集:

$ $ORACLE_HOME/OPatch/opatch lsinventory

4.小结:

本文提供了问题分析时,一般需要采集的数据,通过既定的标准化进行数据采集,降低人员反复获取数据等时间消耗,也同时降低因无第一时间采集数据导致数据丢失无法分析出问题根本原因的风险。

Oracle问题分析采集数据的方法的更多相关文章

  1. [Oracle]快速构造大量数据的方法

    [Oracle]快速构造大量数据的方法: create table tab001(id integer primary key, val varchar2(100)); insert into tab ...

  2. oracle中生成大批量数据的方法-下

    方法五:使用PLSQL的数据生成器 首先测试环境建立:dept表 CREATE TABLE dept(deptno NUMBER(6),dname VARCHAR2(20),loc VARCHAR2( ...

  3. ORACLE查询表最近更改数据的方法

    修改项目时,涉及到了Oracle中许多表的修改(包括:增加.删除字段,修改注释等).由于开始没有进行记录,造成在上测试机时,忘记了具体修改过哪些表了.后来在网上查找了一些资料,例如: 1.select ...

  4. oracle里面查询重复数据的方法

    一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录. select id from group by id having count(*) > 1 ...

  5. Oracle优化器基础知识之访问数据的方法

    目录 一.访问数据的方法 1.直接访问数据 2.访问索引 一.访问数据的方法 Oracle访问表中数据的方法有两种,一种是直接表中访问数据,另外一种是先访问索引,如果索引数据不符合目标SQL,就回表, ...

  6. 入门视频采集与处理(学会分析YUV数据)

    做视频采集与处理,自然少不了要学会分析YUV数据.因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264.MPEG视频编解码)的角度来说,也是在原始 ...

  7. Oracle数据库实现获取前几条数据的方法

    如何在Oracle数据库中实现获取前几条数据的方法呢?就是类似SQL语句中的SELECT TOP N的方法.本文将告诉您答案,举例说明了哟!   1.在Oracle中实现SELECT TOP N : ...

  8. UAVStack JVM监控分析工具:图形化展示采集及分析监控数据

    摘要:UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据:同时提供JVM基本参数获取.内存dump.线程分析.内存分配采样和热点方法分析等功能. 引言 ...

  9. Oracle 列数据聚合方法汇总

    网上流传众多列数据聚合方法,现将各方法整理汇总,以做备忘. wm_concat 该方法来自wmsys下的wm_concat函数,属于Oracle内部函数,返回值类型varchar2,最大字符数4000 ...

随机推荐

  1. Github搭建个人博客

    Github的搭建博客真的是非常容易,所需的步骤只有三个:要完成自己的github.io博客网站,总共分三步:开通自己的github.io repo,选择一款Jekyll的主题,编写并发布博客.下面将 ...

  2. htmlunit最具有参考意义项目

    ### HtmlUnit What? - 项目1 https://gitee.com/dgwcode/spiderTmallTradeInfo - 项目2 https://gitee.com/dgwc ...

  3. 自定义ClassLoader加载class文件

    package com.yd.wmsc.util; public class Test { public void say(){ System.out.println("Say Hello& ...

  4. 安装pywin32出现--Python version 3.x required, which was not found in the registry

    这两天安装pywin32时出现了这个问题 双击.exe文件进入安装界面,然后点击下一步,它会自动定位你的python安装在什么地方,但是我的安装过程中未自动定位到python安装位置,并显示显示: 安 ...

  5. mysql 主从复制以及binlog 测试

    ###mysql查看binlog日志内容 https://blog.csdn.net/nuli888/article/details/52106910 mysql的binlog日志位置可通过show ...

  6. Just a Hook(线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 In the game of DotA, Pudge’s meat hook is actual ...

  7. Cmd命令 关机

    at 22:00 Shutdown -s 到了22点电脑就会出现"系统关机"对话框,默认有30秒钟的倒计时并提示你保存工作 Shutdown.exe -s -t 3600 这里表示 ...

  8. flask SQLAlchemy query.filter_by 常用操作符

    常用的filter操作符 下面的这些操作符可以应用在filter函数中 equals: query.filter(User.name == 'ed') not equals: query.filter ...

  9. css盒子模型 css3盒子相关样式

    1.内边距(内边距在content外,边框内) 内边距属性: padding          设置所有边距 padding-bottom     底边距 padding-left           ...

  10. gitk更改主题设置打不开

    ➜ project git:(master) gitk Error in startup script: unknown color name "lime" (processing ...