以下内容根据整理网络
TFA
(Trace File Analyzer Collector)
是个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可以根据指定的错误扫描后的结果收集诊断日志
目前TFA支持以下几种平台(TFA工具理论上提供所有数据库版本的支持,同时提供对RAC和非RAC数据库的支持。但是,从当前所见的文档中,未见提及10.2.0.4之前的版本):
- Intel Linux(Enterprise Linux, RedHat Linux, SUSE Linux)
- Linux Itanium
- Oracle Solaris SPARC
- Oracle Solaris x86-64
- AIX (requires bash shell version 3.2 or higher installed)
- HPUX Itanium
- HPUX PA-RISC
所有平台都需要bash shell 3.2 以上版本及JRE 1.5以上版本支持。
TFA工具最早在11.2.0.4版本中随grid软件默认安装,默认安装路径为grid的home目录。11.2.0.4之前版本的安装包中并未包含TFA工具,需要手工安装。
Oracle官方列出的详细支持及安装情况如下:
TFA收集日志的流程如下:
- DBA发出diagcollect命令,启动TFA日志收集进程。
- 本地TFA发送收集请求至其他节点的TFA,在其他节点上开始日志收集工作。
- 本地TFA也同时开始进行日志收集工作。
- 所有涉及节点的TFA日志都归档至发起diagcollect命令的"master"节点。
- DBA提取已归档的TFA日志信息,进行分析或提交SR进行处理
TFA运行在Linux和Unix平台上的init,所以,这将是在服务器启动时自动启动。
默认的情况我们把这个脚本命名为init.tfa;
所在位置取决于不同平台,如:
Linux and Solaris: /etc/init.d/init.tfa
Aix: /etc/init.tfa
HP-UX: /sbin/init.d/init.tfa
以下命令式在Linux平台下作为例子:
启动:
/etc/init.d/init.tfa start
停止:
/etc/init.d/init.tfa stop
重启:
/etc/init.d/init.tfa restart
手动收集诊断信息:
我们通过调用tfactl的命令和诊断动词diagnostic来控制TFA收集我们期望的诊断信息。Tfactl 提供给用户多种可选择的模式进行收集,如,收集一个时间段内的日志信息来减少我们收集日志的量;
具体操作的命令您可以通过以下方式看到:
--------------------------------------------------------------
$TFA_HOME/bin/tfactl diagcollect -h
Usage: /u01/app/tfa/tfa_home/bin/tfactl diagcollect [-all | -database | -asm | -crs | -os | -install | -node | -tag ]
[-since <n><h|d>| -from <time> -to <time> | -for <time>]
[-copy | -nocopy] [-symlink][-notrim]
Options:
-all Collect logs of all types
-crs Collect only CRS logs
-asm Collect only ASM logs
-database Collect only database logs from databases specified
-os Collect only OS files
-install Collect only INSTALL files
-node Specify comma separated list of host names for collection.
-copy Copy back the zip files to master node from all nodes
-nocopy Does not copy back the zip files to master node from all nodes
-notrim Does not trim the files collected
-symlink This option should be used with -for.
Creates symlinks for files which are updated during the input time.
-since <n><h|d> Files from past 'n' [d]ays or 'n' [h]ours
-from <time> From time
-to <time> To time
-for <time> Specify a incident time.
-z <file> Output file name
-tag <description> Enter a tag for the zip(s) created
在下面的例子中,我们使用了 -all,并告诉TFA收集诊断所有类型的日志,从午夜1月21日至1月21日13:00 进行收集。该命令将启动指定的诊断在后台收集所有群集节点上,压缩成zip文件放置在每个节点的TFA_HOME中(无论我们用哪种方法对诊断信息进行收集,日志信息都会被打包好放置在$TFA_HOME/repository的目录下):
#收集日志
$TFA_HOME/bin/tfactl diagcollect -all -from "Mon/dd/yyyy hh:mm:ss" -to "Mon/dd/yyyy hh:mm:ss"
$TFA_HOME/bin/tfactl diagcollect -all -from "Jan/21/2013" -to "Jan/21/2013 13:00:00"
此命令将收集指定时间段rdbms、ASM、grid、OS的各类型日志,如alert日志、trace文件、clusterware各组件的日志、listener日志、操作系统日志。执行过程中,对alert日志、listener日志等连续性的日志处理也比较智能,能够截取指定时段的日志,而不会将整个日志文件copy。如果部署有osw工具,还会自动收集osw的日志。
如果需要指定日志收集范围,比如仅收集数据库的相关日志,可以使用tfactl diagcollect -database命令。更多的使用方法可以参考tfactl diagcollect -help输出。
TFA也带有自动收集的功能,可以对一些预定错误进行自动收集。预定的错误及收集规则可以参阅《Trace File Analyzer Collector User Guide》的Appendix B. Scan Events部分。该功能默认为关闭状态,可以使用以下命令手工启用:
tfactl set autodiagcollect=ON
tfactl analyze -since 7d
这条命令将分析查找所有(包括DB/ASM/CRS/ACFS/OS/OSW/OSWSLABINFO)日志7天内ERROR级别的错误信息并提取。
TFA工具默认仅对
root用户和grid用户授予使用权限,如果使用oracle用户执行tfactl diagcollect命令将收到报错。
建议同样授予oracle用户使用TFA的权限,方便日常使用。root用户使用以下命令可以将oracle用户加入授权用户列表:
tfactl access add -user oracle
tfactl print config
关于TFA的bug,在MOS中有以下文章,可供参考
1668630.1 1983567.1
参考文档:
TFA Collector- The Preferred Tool for Automatic or ADHOC Diagnostic Gathering Across All Cluster Nodes [ID 1513912.2]
便捷的日志收集和分析工具TFA