衡量OGG吞吐量:
有两种衡量OGG吞吐量的标准:数据吞吐量和操作吞吐量
1° 数据吞吐量的衡量步骤:
# 目标端操作
su - oracle
cd /ggs
# 获取应用进程RGGTEST1当前和一分钟之后的RBA值
BEF_RBA_RGGTEST1=$(echo 'info rggtest1'|./ggsci|grep 'RBA'|awk '{print $NF}')
sleep 60
AFT_RBA_RGGTEST1=$(echo 'info rggtest1'|./ggsci|grep 'RBA'|awk '{print $NF}')
# 计算一分钟内的数据吞吐量
echo "$(( (${AFT_RBA_RGGTEST1}-${BEF_RBA_RGGTEST1})/1024 )) KB per Minute"
# RBA记录了当前trail文件中被处理的位置
# 两个RBA的差即是在同一trail文件中一定时间间隔内处理了多少Bytes的数据
# 该方法衡量数据吞吐量不能跨trail文件
2° 操作吞吐量的衡量步骤:
su - oracle
cd /ggs
echo 'stats rggtest1, totalsonly SCOTT.*'|./ggsci
# 使用命令直接查看应用进程RGGTEST1对SCOTT用户下所有对象的总体操作吞吐量
3° 数据吞吐量衡量脚本:
cat >/tmp/log_data_throughput.sh<<EOF
#!/bin/bash
# Written by Ankur Gupta
# Modified and Note by Vincent
source ~/.bash_profile
# Oracle相关的环境变量均写入.bash_profile中
export GG_HOME=/ggs
export LOG_FILE=/tmp/data_throughput_history.txt
# 查看某个进程的信息
info (){
echo "info \$1"|./ggsci &>/tmp/info.txt
}
# 查看全部进程的信息
list_all (){
echo 'info *'|./ggsci &>/tmp/all_processes.txt
}
# main
cd \$GG_HOME
list_all
for process in \$(egrep 'EXTRACT|REPLICAT' /tmp/all_processes.txt | awk {' print \$2 '})
do
info \$process
export START=\$(grep RBA /tmp/info.txt | awk {'print \$4'})
sleep 30
info \$process
export STOP=\$(grep RBA /tmp/info.txt | awk {'print \$4'})
SPEED=\$((\$STOP-\$START))
SPEED=\$((\$SPEED/1024/1024/30*60*60))
TIMESTAMP=\$(date "+%F %T:%S")
echo "\${process} \${TIMESTAMP} \${SPEED}MB/HR" >> \$LOG_FILE
done
EOF
chmod +x /tmp/log_data_throughput.sh
# 可以将脚本挂自动任务,每小时监控所有进程的数据吞吐量
4° stats命令简介:
可参见《16. Verifying the data transfer on the target system》
STATS <PROCESS_TYPE> <group name>
[, <statistic>]
[, TABLE <table>]
[, TOTALSONLY <table spec>]
[, REPORTCDR]
[, REPORTDETAIL | NOREPORTDETAIL]
[, REPORTRATE <time units>]
[, ... ]
用法样例:
stats *
STATS RGGTEST1, TOTAL, HOURLY, TABLE SCOTT.EMP, REPORTRATE HR, REPORTDETAIL
[TOC]