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 ...
随机推荐
- Eclipse设置每行代码的长度
打开 Window -> preferences -> java -> code style -> formatter -> edit -> line wrappi ...
- sql For update
for update 的作用和目的:select for update 是为了在查询时,对这条数据进行加锁,避免其他用户以该表进行插入,修改或删除等操作,造成表的不一致性. 几个类似的场景: sele ...
- (转)CentOS系统启动流程图文详解
CentOS系统启动流程图文详解. 原文:http://www.linuxidc.com/Linux/2017-03/141966.htm 熟悉系统启动流程对于我们学习Linux系统是非常有帮助的,虽 ...
- 对象拷贝 - 优雅的解决方案 Mapstruct
MapStruct GitHub 访问地址 : https://github.com/mapstruct/mapstruct/ 使用例子 : https://github.com/mapstruct/ ...
- dell电脑 win8换win7重启报错及解决方案
Win8换win7 bios 识别不到usb选项 按以下操作即可: 把Secure Boot control 改为Disabled 的,F10保存重启,F12进入bios选择usb启动即可: 安装完系 ...
- 分享到qq空间等代码
<!-- Baidu Button BEGIN --><div id="bdshare" class="bdshare_t bds_tools get- ...
- 利用Cookie保存用户身份信息实现免登录
<%@page import="sun.misc.BASE64Encoder"%> <%@page import="java.util.Base64.E ...
- Android stutdio2.2 启动模拟器出现“/dev/kvm is not found.”解决方法
第一次启动avd,Android stutdio会自动安装Intel HAXM,而且表面看是成功的,再次启动会出现“/dev/kvm is not found.”,这说明Intel HAXM没有安装成 ...
- Python 加持,给你更有趣的 Azure 虚拟机开关重启方法!
在程序员的世界里,有关编程语言孰优孰劣的争论从来就没有消停过,不管你更粉哪种语言,毫无疑问,每种语言都有自己擅长的领域,而一些语言因为上手简单.扩展性强.功能强大等因素,往往会比较多地出现在我们面前, ...
- Winform调整DEV控件高度