
系统数据包采集工具
Bethune 系统数据采集工具采用 Perl 语言编写,可使用操作系统或者 Oracle 软件携带 的 Perl 解释器直接执行。采集过程中,工具会使用如下三种方式完成数据采集:
调用操作系统命令,获取操作系统信息
读取操作系统文件,获取系统配置及日志
通过 Oracle DBI 驱动读取数据字典信息
具体采集选项可通过 -h 查看,默认采集结果为单个 zip 数据包,位于工具目录中的 data 目录下。
版本:
V 1.0.1
大小:
80.31 KB
适应系统:
All Platform
更新时间:
2016-09-04
立即下载
系统数据包采集工具版本历史
v 1.0.1 2016-09-04This is First Edition for Bethune. 立即下载 |
一 . 使用方式
数据采集方式通常有以下几种:
获取帮助: 强烈建议所有工程师在运行采集工具之前阅读使用帮助,可直接使用帮助选项(-h)查看帮助页。
perl runMe.pl -hWindows: 以下环境变量的值请依据实际情况替换,确保可以在 CMD 中使用 perl 并且可以正常登录数据库实例:
SET ORACLE_HOME=C:\oracle\product\10.2.0\db_1
SET ORACLE_SID=WINDB
SET PATH=%ORACLE_HOME%\bin;%ORACLE_HOME%\perl\5.8.3\bin\MSWin32-X64-multi-thread;%PATH%
perl runMe.pl其他平台: 直接在一个节点运行脚本。
SET ORACLE_HOME=C:\oracle\product\10.2.0\db_1
SET ORACLE_SID=WINDB
perl runMe.pl
二 . 特殊情况处理
1. RAC 无用户等效
正常情况下,RAC 节点之间都会配置用户等效,此时在一个节点运行采集工具即可采集所有节点的信息。
但若采集的目标库是 RAC 数据库,且并未在集群节点间配置用户等效,那么会有如下提示信息:
User equivalent is not configured
You can Choose :
P: [Password Mode] Use Password to Login Remote and Collect Data
L: [Listener Mode] You Must Run Command on Remote Manually (it's Default)
====>
采集工具提示用户选择远程节点的采集方式,有密码模式(P)和监听模式(L)两种:
其中:密码模式适用于操作者知道远程节点密码的情况,且需要当前服务器有 setsid 命令;监听模式适用于操作者不知道远程节点密码,但能通过其他方式连接远程节点的情况。
若操作者选择密码模式,则根据提示信息,一步步输入各个远程节点(如果密码相同,则根据提示只需要输入一次)的密码即可正常采集。
若操作者选择监听模式,则在采集节点操作系统信息的时候,会有如下提示信息:
15:25:22 COMPLETE: BXDB -> Collection Completed, Running is [XX]
15:26:24 cltNodRes:
15:26:24 cltNodRes: <=============================[ Attention ]=============================>
15:26:24 cltNodRes: Follow Command Must Manual Run on Remote Node
15:26:24 cltNodRes: Remote List: XX
15:26:24 cltNodRes: <=======================================================================>
# ------------------------[ Run on Remote by Oracle ]---------------------------
perl -e 'use IO::Socket;use IO::Select;
$OH=$ENV{ORACLE_HOME};my ($PN,$PP)=(" 123.123.123.123",12345); # Primary
my $SK=IO::Socket::INET->new(PeerAddr=>$PN,PeerPort=>$PP,Proto=>TCP,Timeout=>60)
or die "Connect [$!]";$SL=IO::Select->new($SK);$NH=($SL->handles)[0];my @FL;
print "Files :";$NH->send("GET_FILE|X\n");die "No Reply"
if(! $SL->can_read(60));while(1){my $ND;chomp($ND=$NH->getline);last if($ND eq
"COMPLETED");print $ND;push(@FL,$ND);open FH,">",$ND;while(1){chomp($ND=
$NH->getline);last if($ND eq "<-EOF->");print FH "$ND\n";}close FH;
print "[OK] ";}print "\n";$ENV{"LIBPATH"}="$OH/lib32:$OH/lib";
$ENV{"SHLIB_PATH"}=$ENV{"LD_LIBRARY_PATH"}=$ENV{"LIBPATH"};
system("$OH/perl/bin/perl NodeRobot.pl $PN $PP");foreach(\@FL){unlink}'
# ------------------------[ Run on Remote by Oracle ]---------------------------
采集工具此时会挂起,等待用户操作,需按照提示操作:拷贝提示信息中完整的 perl 命令,在远程节点列表内的服务器中运行命令。
2. DG 数据采集
若检测到当前采集的目标库存在DG备库,则会有如下提示信息:
15:35:15 cltDGDat: +==================== [ DG Information ] ====================+
15:35:15 cltDGDat: | DG Name Remote Host Remote IP |
15:35:15 cltDGDat: | -------------------- -------------------- --------------- |
15:35:15 cltDGDat: | BXDG BXDG 10.51.94.237 |
15:35:15 cltDGDat: +============================================================+
15:35:15 cltDGDat: Notes: You can skip DG Collection by [CTRL + C]
# ------------------------[ Run on Remote by Oracle ]---------------------------
perl -e 'use IO::Socket;use IO::Select;
$OH=$ENV{ORACLE_HOME};my ($PN,$PP)=(" 123.123.123.123",12345); # Primary
my $SK=IO::Socket::INET->new(PeerAddr=>$PN,PeerPort=>$PP,Proto=>TCP,Timeout=>60)
or die "Connect [$!]";$SL=IO::Select->new($SK);$NH=($SL->handles)[0];my @FL;
print "Files :";$NH->send("GET_FILE|X\n");die "No Reply"
if(! $SL->can_read(60));while(1){my $ND;chomp($ND=$NH->getline);last if($ND eq
"COMPLETED");print $ND;push(@FL,$ND);open FH,">",$ND;while(1){chomp($ND=
$NH->getline);last if($ND eq "<-EOF->");print FH "$ND\n";}close FH;
print "[OK] ";}print "\n";$ENV{"LIBPATH"}="$OH/lib32:$OH/lib";
$ENV{"SHLIB_PATH"}=$ENV{"LD_LIBRARY_PATH"}=$ENV{"LIBPATH"};
system("$OH/perl/bin/perl DGRobot.pl $PN $PP");foreach(\@FL){unlink}'
# ------------------------[ Run on Remote by Oracle ]---------------------------
采集工具此时会挂起,等待用户操作,需按照提示操作:拷贝提示信息中完整的 perl 命令,在远程节点列表内的服务器中运行命令。
三 . 工具脚本表格说明
| 选项名称 | 选项说明 | 默认值 |
| -c | 指定操作系统文件字符集编码 (O=GBK,A=GBK,L=GBK),其中:O 表示系统文件字符集,A 表示告警日志字符集, L 表示监听日志字符集 | |
| -d | 指定最终结果文件夹(或文件)的目录位置 | . |
| -e | 限制操作系统错误日志的采集时间,默认采集最近 1 个月内的操作系统日志 | 30 |
| -h | 显示命令帮助页 | 无 |
| -i | 指定ASM实例的名称 | 动态判断 |
| -l | 指定监听节点的信息。在 RAC 系统未配置 SSH 等效且无法使用密码方式采集时,需在其他节点手动运行脚本并指定主节点的监听信息(工具程序监听,非数据库监听) | 无 |
| -L | 限制归档日志信息采集时间,默认采集最近一个月的归档日志记录 | 30 |
| -o | 指定 ASM Home 的路径 | 动态判断 |
| -p | 指定程序运行时的监听端口,需要从该端口的网络链接中读取其他节点的采集数据 | 12345 |
| -P | 指定程序运行时最大可用线程数,目标系统不繁忙时,可用此参数加快采集进度 | 1 |
| -r | 限制 AWR 资料库的采集时间,默认采集最近一周 | 7 |
| -s | 限制表空间 Top 段的采集数量,默认采集最大的10个段的信息 | 10 |
| -S | 跳过 DG 采集,不采集当前数据库所有 DG 端的数据 | 无 |
| -t | 限制告警日志的采集时间,默认采集最近 1 个月的告警日志,只记录错误信息(包括前后 50 行)和启停信息 | 30 |
| -T | 限制监听日志的采集时间,默认采集 1 个月的监听日志连接信息,采集时已经通过程序汇总到小时 | 30 |
| -u | 指定 Oracle 数据库登录用户,默认使用操作系统认证登录 | / as sysdba |
| -U | 指定 ASM 示例登录用户,默认使用操作系统认证登录 | / as sysdba |
| -v | 显示程序的当前版本信息 | 无 |
| -w | 限制等待时间采集数量,默认只采集 Top 10 的等待事件 | 10 |
| -z | 不打包结果集文件夹 |


