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. 读取properties和xml中配置文件的值

    五种方式让你在java中读取properties文件内容不再是难题 在java中读取properties和xml文件中的方法:https://www.cnblogs.com/ConfidentLiu/ ...

  2. LeetCode 046 Permutations 全排列

    Given a collection of distinct numbers, return all possible permutations.For example,[1,2,3] have th ...

  3. Unity在Project视图里面显示文件的拓展名

    Unity在Project视图里面显示文件的拓展名 功能脚本如下: using System.IO; using System.Reflection; using UnityEngine; using ...

  4. Docker | 第五章:构建自定义镜像

    前言 上一章节,主要是介绍了下Dockerfile的一些常用命令的说明.我们知道,利用Dockerfile可以构建一个新的镜像,比如运行Java环境,就需要一个JDK环境的镜像,但直接使用公共的镜像时 ...

  5. SpringMVC核心技术---转发和重定向

    @Controller public class Mycontroller { //转发 @RequestMapping("/adduser") public String add ...

  6. orcale函数

    字符函数    1.ASCII 返回与指定的字符对应的十进制数;  select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space ...

  7. 利用XML序列化和Asp.Net Web缓存实现站点配置文件

    我们经常会遇到这样的场景: 今天来了个业务,需要加一个字段,但是考虑的以后可能有变动,需要配成“活”的. 一般最初的做法就是加一个配置到Web.Config文件的AppSettings中去.但是这样有 ...

  8. JavaSE_5_线程

    1.多线程中的i++线程安全吗?为什么? 不安全,因为每个线程都有自己的工作内存,每个线程需要对共享变量操作时必须把共享变量从主内存中加载到自己的工作内存,等完成操作后再保存到内存中,如果一个线程运算 ...

  9. Counting blessings can actually increase happiness and health by reminding us of the good things in life.

    Counting blessings can actually increase happiness and health by reminding us of the good things in ...

  10. Eucalyptus-instance启动后查看运行状态

    1.前言 在eucalyptus中通过虚拟机模板,创建并启动一个虚拟机,这个时候虚拟机启动正常,但是外部一直无法访问也ping不通,正对这种情况我们如何检查排除问题呢? 两种检查问题的方法: 1).在 ...