工具采集文章( 【DBA+社群】收集日志信息是否是一个“高消耗”的体力活)

优采云 发布时间: 2021-09-29 01:10

  工具采集文章(

【DBA+社群】收集日志信息是否是一个“高消耗”的体力活)

  

  转载声明:本文为DBA+社区原创文章,转载需附本订阅号二维码全文,并注明作者姓名及出处:DBA+社区(dbaplus) .

  采集日志信息是一种“高消耗”的体力活动吗?在很多情况下。

  想象一下,如果数据库发生了挂起故障,而这个数据库有8个节点,我们可能需要采集rdbms、ASM、grid、OS、osw等的日志信息,这个工作简直就是一场噩梦。即使是普通的两节点RAC环境,也可能需要很短的时间,后续的补充日志采集可能还要继续。

  不熟悉环境,平台差异,故障时需要过滤采集特定的日志信息,数据库节点多,需要采集日志的环境中文件管控问题多,这可能会影响我们采集日志信息的速度。和准确性,这会影响问题分析和定位的进度。

  那么我们有一个很现实的问题,如何减少日志采集消耗的时间,提高准确率,让更多的时间可以用于问题分析呢?

  其实Oracle官方已经提供了一个解决方案——TFA(Trace File Analyzer Collector)。这个工具可以帮助我们真正实现一个命令来完成日志采集。

  1 版本和安装

  TFA支持的正式上市平台:

  英特尔 Linux(企业 Linux、RedHat Linux、SUSE Linux)

  Z 系统上的 Linux

  安腾Linux

  Oracle Solaris SPARC

  Oracle Solaris x86-64

  艾克斯

  HPUX 安腾

  HPUX PA-RISC

  所有平台都需要 bash shell 3.2 或更高版本和 JRE 1.5 或更高版本才能支持。

  TFA 工具理论上提供对所有数据库版本的支持,以及对 RAC 和非 RAC 数据库的支持。但是,从我目前看到的文档来看,没有提到 10.2.0.4 之前的版本。

  TFA工具首先默认安装在网格软件11.2.0.4,默认安装路径为网格的家目录。11.2.0.4 之前版本的安装包中没有TFA工具,需要手动安装。

  Oracle官方列出的详细支持和安装状态如下:

  

  TFA 更新非常快。版本11.2.0.4于2013年8月发布,附带的TFA工具版本为2.5.1.5 . 目前(2015年10月)最新版本为12.1.2.5.2,我们可以从帮助菜单中看出两个版本的巨大差异:

  2.5.1.5 版本帮助菜单:

  

  12.1.2.5.2 版本帮助菜单:

  

  可以看到,版本12.1.2.5.2 版本增加了很多Function。

  Oracle 对 TFA 的支持也在增加,甚至 PSU 中也收录了 TFA 更新。以版本11.2.0.4为例,我们可以在GI PSU Fixed List中找到以下信息:

  

  即从11.2.0.4.5开始,GI PSU收录TFA版本更新。TFA 将在安装 GI PSU 期间自动安装。

  2TFA 的工作原理

  从Oracle官方提供的一张TFA工作流程图中,我们可以清楚地看到TFA是如何工作的:

  

  DBA 发出 diagcollect 命令以启动 TFA 日志采集过程。

  本地TFA向其他节点的TFA发送采集请求,并开始其他节点的日志采集。

  本地TFA也同时开始了日志采集。

  所涉及节点的所有 TFA 日志都存档到启动 diagcollect 命令的“主”节点。

  DBA 提取存档的 TFA 日志信息,对其进行分析或提交 SR 进行处理

  整个过程中,DBA只需要执行一个命令,然后提取归档的TFA日志即可。

  3TFA的使用

  以11.2.0.4版RAC和12.1.2.5.2版TFA环境为例:

  先来看看最简单最通用的采集命令:

  

  该命令会采集指定时间段内rdbms、ASM、Grid、OS的各类日志,如告警日志、跟踪文件、集群组件日志、*敏*感*词*器日志、操作系统日志等。在执行过程中,告警日志、*敏*感*词*日志等连续日志处理也更加智能,可以在不复制整个日志文件的情况下,拦截指定时间段的日志。如果部署了 osw 工具,也会自动采集 osw 日志。

  如果需要指定日志采集范围,比如只采集数据库的相关日志,可以使用tfactl diagcollect -database命令。更多使用方法请参考tfactl diagcollect -help的输出。

  最新版本的TFA(12.1.2.5.2))也可以采集AWR报告。命令示例如下:

  

  但是在实际应用中发现,TFA的AWR报告采集功能并不完善。

  对于-database参数,帮助菜单的说明是:

  -database 从指定的数据库采集数据库日志

  目前 -awrhtml 参数需要和 -database 参数一起使用,但是 -database 参数和 -awrhtml 参数一起使用时,不仅用于表示数据库名称,还是会出现这种情况其中采集了数据库警报日志和跟踪文件。. 即执行上述命令会采集指定时间段的AWR报告,以及数据库警报日志和跟踪文件。

  TFA还有自动采集功能,可以自动采集一些预定的错误。可以在跟踪文件分析器采集器用户指南的附录 B. 扫描事件部分找到计划的错误和采集规则。此功能默认禁用,可以使用以下命令手动启用:

  tfactl 设置 autodiagcollect=ON

  建议在生产环境中使用该功能之前,先在测试环境中进行验证。

  TFA还可以承担一定的日志分析功能,可以实现一个命令自动分析DB&ASM&CRS的告警日志、操作系统命令和一些osw日志,虽然相比其日志采集功能还不够强大。一个简单通用的分析命令:

  tfactl 分析 - 从 7 天开始

  该命令会在7天内分析查找所有(包括DB/ASM/CRS/ACFS/OS/OSW/OSWSLABINFO)日志ERROR级别的错误信息并提取出来。

  《Trace File Analyzer Collector User Guide》中列出的ERROR级别信息如下:

  

  您还可以使用以下命令来搜索自定义字符串:

  

  默认情况下,TFA 工具仅授予 root 用户和 grid 用户访问权限。如果使用oracle用户执行tfactl diagcollect命令,会报错:

  用户 oracle 没有运行 TFA 的密钥。请与 TFA 管理员(root)核对

  建议给oracle用户同样的权限使用TFA,方便日常使用。root用户可以使用以下命令将oracle用户添加到授权用户列表中:

  tfactl 访问添加 -user oracle

  如果有采集日志的空间管理需求,可以使用tfactl set命令进行设置。当前设置可以通过

  tfactl 打印配置

  命令输出,输出示例如下:

  

  关于TFA的使用和设置的更多信息,请参考tfactl -h的输出和《Trace File Analyzer Collector User Guide》文档。

  TFA操作时对DB或GI影响的描述在MOS上很少见到,主要是以下两个问题:

  

  如果遇到Linux平台下RAC节点启动挂起的问题,并且环境中安装了TFA,可以根据1983567.1文档中的说明修改oracle-tfa.conf文件。1668630.1文档中提到的问题已在11.2.0.4.3及以上PSU中修复,如果安装的PSU版本为1< @1.2.0.4.3 及以上,这个问题可以忽略。

  作者介绍:杨德胜

  回复001,阅读杨志宏的《【职场心智】一个老DBA的自白》;

  回复002,阅读丁俊的《【重磅干货】看完这篇文章,Oracle SQL优化文章别再看了!》;

  回复003,看胡一文《PG,跨越oltp到olap的梦想之桥》;

  回复004,见陈可的《Memcached & Redis等分布式缓存的实现原理》;

  回复005,阅读宋日杰的《Oracle后端专家解决库缓存锁争用的终极利器》;

  回复006,见郑晓辉《存储和数据库不得不讲的故事》;

  回复007,见袁伟祥《揭秘Oracle数据库截断原理》;

  回复008,阅读杨建荣的《Waiting for Desirable:工具定制让Oracle优化更轻松、更快》;

  回复009,阅读丁其亮的《LINUX主机JAVA应用高CPU和内存占用的分析方法》;

  回复010,阅读徐桂林的《以应用为中心的企业混合云管理》。

  关于 DBA+ 社区

  DBA+社区是中国最大的微信社区,涵盖各种架构师、数据库、中间件!线上分享2次/周,线下沙龙1次/月,顶峰6次/年,直接观众10000+,间接影响500000+ITer。DBA+社区致力于搭建学习交流、专业联系、跨行业合作的公益平台。更多精彩,请继续关注dbaplus微信订阅号!

  

  扫描二维码关注

  DBAplus 社区

  在 DBA 圈子之外,连接的不仅仅是 DBA

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线