Oracle问题分析采集数据的方法
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问题分析采集数据的方法的更多相关文章
- [Oracle]快速构造大量数据的方法
[Oracle]快速构造大量数据的方法: create table tab001(id integer primary key, val varchar2(100)); insert into tab ...
- oracle中生成大批量数据的方法-下
方法五:使用PLSQL的数据生成器 首先测试环境建立:dept表 CREATE TABLE dept(deptno NUMBER(6),dname VARCHAR2(20),loc VARCHAR2( ...
- ORACLE查询表最近更改数据的方法
修改项目时,涉及到了Oracle中许多表的修改(包括:增加.删除字段,修改注释等).由于开始没有进行记录,造成在上测试机时,忘记了具体修改过哪些表了.后来在网上查找了一些资料,例如: 1.select ...
- oracle里面查询重复数据的方法
一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录. select id from group by id having count(*) > 1 ...
- Oracle优化器基础知识之访问数据的方法
目录 一.访问数据的方法 1.直接访问数据 2.访问索引 一.访问数据的方法 Oracle访问表中数据的方法有两种,一种是直接表中访问数据,另外一种是先访问索引,如果索引数据不符合目标SQL,就回表, ...
- 入门视频采集与处理(学会分析YUV数据)
做视频采集与处理,自然少不了要学会分析YUV数据.因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264.MPEG视频编解码)的角度来说,也是在原始 ...
- Oracle数据库实现获取前几条数据的方法
如何在Oracle数据库中实现获取前几条数据的方法呢?就是类似SQL语句中的SELECT TOP N的方法.本文将告诉您答案,举例说明了哟! 1.在Oracle中实现SELECT TOP N : ...
- UAVStack JVM监控分析工具:图形化展示采集及分析监控数据
摘要:UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据:同时提供JVM基本参数获取.内存dump.线程分析.内存分配采样和热点方法分析等功能. 引言 ...
- Oracle 列数据聚合方法汇总
网上流传众多列数据聚合方法,现将各方法整理汇总,以做备忘. wm_concat 该方法来自wmsys下的wm_concat函数,属于Oracle内部函数,返回值类型varchar2,最大字符数4000 ...
随机推荐
- Sharepoint 图片库字段名称(Title)和对应的内部名称(InternalName)
做项目遇到需要查看列表库的内部名称,因为用的是图片库,所以就列出所有对应关系,以备查看方便:
- deep copy and shallow copy
链接A:浅拷贝就是成员数据之间的一一赋值:把值赋给一一赋给要拷贝的值.但是可能会有这样的情况:对象还包含资源,这里的资源可以值堆资源,或者一个文件..当值拷贝的时候,两个对象就有用共同的资源,同时对资 ...
- Jenkins~通过WebDeploy实现自动部署
Jenkins以之前的文章中已经有所介绍,主要集成了自动化部署的功能,而对于自动化部署来说是由多个组件组成的,每个组件负责自己的事,如今天说的webDeploy,它主要实现将网站文件动态发布到另一台I ...
- PHPCMS的自增长标签
设置幻灯片的时候,需要用到自增长ID. <div class="tt_pic"><img src="images/1.gif" />&l ...
- mybatis持久化操作“无效的类型111解决”
mybatis持久化操作时,如果插入数据为null的情况下,由于内部机制问题,会导致报错,导致出现:“无效的类型:1111”示例如下: org.springframework.jdbc.Uncateg ...
- java使用线程请求访问每次间隔10分钟连续5次,之后停止请求
java使用线程请求访问每次间隔10分钟连续5次,收到相应的时候停止请求 package com.qlwb.business.util; /** * * * @类编号: * @类名称:RequestT ...
- 转 --简单解决Linq多条件组合问题
本文笔者用清晰的实例,解决了Linq多条件问题,思路十分的清晰,笔者也很细心的做了描述,希望能给你带来帮助. 最近有个项目准备功能改版,师兄吩咐:尽可能地做到万般皆Linq,所以很多东西都要从存储过程 ...
- RabbitMQ:消息发送确认 与 消息接收确认(ACK)
默认情况下如果一个 Message 被消费者所正确接收则会被从 Queue 中移除 如果一个 Queue 没被任何消费者订阅,那么这个 Queue 中的消息会被 Cache(缓存),当有消费者订阅时则 ...
- css清除浮动好方法
1.clear:both ==>IE6,7会有高度,所以去高度需要.clear{ clear:both; height:0px; margin:0; padding:0; width:0; bo ...
- C# sftp通过秘钥上传下载
一.适用场景 我们平时习惯了使用ftp来上传下载文件,尤其是很多Linux环境下,我们一般都会通过第三方的SSH工具连接到Linux,但是当我们需要传输文件到Linux服务器当中,很多人习惯用ftp来 ...