[Oracle]利用开源工具实现自己的TPC-C

oracle

[Oracle] How to Use Open Source Tools to Implement Your Own TPC-C

作者:Fenng
日期:Mar 14 2004 (v0.13)
站点:Http://www.dbanotes.net

本文简介

介绍如何利用开源工具实现Oracle数据库环境中的TPC-C.对DBA、开发人员、BI实施者有一定的参考价值.

引言描述

设想一下这样一种情况:

您正在负责公司的一个OLTP类型的数据库项目,面临数据库服务器选型的问题:如何选择硬件才能满足产品环境的业务要求? 这个事情是“拍脑袋” 能决定的吗?

不可否认,硬件选型是一门艺术,选择合适的硬件,能给公司节省大笔的费用,选择不能满足业务需求的服务器产品,不但花了冤枉钱,还会对将来的业务产生影响。

可能大家首先会想到参考服务器的TPC-C的信息。提到TPC-C,可能很多人对此都感到既熟悉又陌生,因为经常听人说起,但是具体的问下去,能说清楚的又没有多少人,而且,从大家口中得到的还不尽相同。那么什么是TPC/TPC-C这些都代表什么意思呢?

什么是TPC?

TPC(Transaction Processing Performance Council,事务处理性能委员会)是一个非盈利性的组织,其官方站点在http://www.tpc.org。其宗旨是为了制定商务应用基准程序(Benchmark)的标准规范,提供性能和价格度量,并管理测试结果的发布。在业界极其具有权威性。

TPC的基准程序的标准规范(Standard Specification)是对公共开放的,可以在官方站点上得到,但是TPC却不提供基准程序的代码。任何软硬件厂商或其它测试者可以根据标准规范,最优地构建自己待测的系统。为保证测试结果的客观性,被测试者(通常是厂家)必须提交给TPC一套完整的报告(Full Disclosure Report),包括被测系统的详细配置、分类价格和包含五年维护费用在内的总价格。该报告必须由TPC授权的审核员核实(TPC本身并不做审计)。

什么是tpmC?

先说一下TPC-C,TPC-C是联机事务处理(on-line transaction processing , OLTP)的基准程序。TPC-C模拟一个批发商的货物管理环境。TPC-C使用三种性能和价格度量,其中性能由TPC-C吞吐率衡量,单位是tpmC。tpm是transactions per minute的简称;C指TPC中的C基准程序。它的定义是每分钟内系统处理的新订单个数。

了解了这些内容,您可能会想:我们公司的PC服务器完全是自己攒出来的,如何进行TPC-C的衡量的?也去参考TPC官方站点上的信息?不要忘了,TPC.org 上公布的测试结果都是各大厂商根据自己的系统进行了充分优化之后的出来的结果。打个比方,TPC公布的数值就好比崭新的法拉利跑车经过专业技师们的精心检查保养,然后在专用跑道上跑出来的速度值,而我们的情况可能是法拉利(甚至是夏利)要在乡村土路上行驶,可比性大打折扣。

有的朋友会想:那我们可以根据自己的情况,拿一个秒表在“乡村土路”上测试一下看看呀。这样的意义也是显而易见的,对我们的实际的环境不是更具有参考价值?不错,这也正是本文的目的:让我们利用开源(Open Source)工具来实现自己的针对Oracle数据库的TPC-C。

Hammerora—The Open Source Oracle Load Test Tool

首先介绍一下Hammerora。从创作者对这个工具的标题描述可以看出,Hammerora是一款Oracle数据库负载测试工具。该工具可以在Oracle 8i、9i和10g等版本上使用。
当前可以用在Linux/Unix和Windows上.初步实现了跨平台.Hammerora 完全用TCL/TK写就,以GPL版权形式发布。作者是Steve Shaw。
该项目的主页在:http://sourceforge.net/projects/hammerora/ 。

 

图1: Hammerora的Logo

 

Hammerora的设计原理是解析Oracle的Trace文件,并把它们转化为Oratcl程序,然后在Oracle数据库中用多个用户并发的对用户的事务进行“回放”。我们知道,Oracle的Trace文件能够翔实的记录用户对数据库的操作。这样Hammerora能够保证对用户环境的真实模拟。

Hammerora最初是用以学习的目的:期望是模拟数据库的一定数量的用户。这样一个小的基于家庭的学习开发系统就能够比较接近产品环境。这个工具已经成长为一个Oracle数据库做压力测试--从小的数据库到大的基于RAC的集群。

TCL语言已经用来提供高性能的和Oracle数据库的OCI集成,而无需重新编译生成的程序。每个生成的程序具有严格的TCL/Oratcl兼容性,并且可以在Hammerora的命令行Shell下运行。TCL的强大功能和灵活性意味着潜在的功能是无穷尽的。TCL线程包用来实现对Oracle数据库的多个并发连接。

Hammerora包含Oracle存储过程和TCL驱动脚本用来运行TPC-C基准程序。但是,我们先要构建一个同TPC-C规范相符的数据库。这样,我们需要用到Orabm。

Orabm

Orabm是Geoff Ingram (High-Performance Oracle: Proven Methods for
Achieving Optimum Performance and Availability一书的作者)构建的一个程序包,包含了一套SQL脚本和几个命令行程序。Orabm数据装载程序(Orabmload)构建了一组遵从TPC-C标准的数据用以测试。Orabm的程序包和源代码可以从它的主页面http://www.linxcel.co.uk/orabm/ 得到。

Orabm的运行机制

Orabm的运行机制在Geoff Ingram有明确的说明,这里翻译如下:Orabm 通过在每个用户指定的并发数据库会话(session)中运行用户执行数量的数据库事务来进行工作.事务通过ORABM模式下的ORABM_SERVERSIDE_STRESS存储过程运行.
对每个并发会话来说,ORABM_SERVERSIDE_STRESS 运行在orabm命令行下指定的事务数,并返回该会话在采样间隔完成时的TPS值.要确保所有并发会话都是在采样间隔期间处理事务,TPS值仅包括事务的中间的80%,也即:初始的10%和最后的10%将忽略掉.

更详细信息可以参考http://www.linxcel.co.uk/orabm/的内容.

安装步骤

1 安装Oracle OCI 库

对Oracle 9i 来说,如果没有安装该组件的话,可能要重新运行runInstall,在Oracle 9i Client products树中选择"Oracle Call Interfaces" .

对Oracle 10g来说,Oracle 10 OCI 库应该是默认安装的.

2 安装TCL

cd /usr/local/src/tcl8.4.5/unix

rm -f config.cache

./configure --enable-threads --enable-shared

make clean

make

make install

3 安装TK

cd /usr/local/src/tk8.4.5/unix

rm -f config.cache

./configure --with-tcl=../../tcl8.4.5/unix --enable-threads --enable-shared

make clean

make

make install

4 安装TCL Threads

cd /usr/local/src/thread2.5.2/unix

rm -f config.cache

sh ../configure --enable-threads --enable-shared

make clean

make

make install

5 安装Oratcl

对10g来说,要编辑配置文件,在1728 行附近, FOUND_ORACLE=0 那一行的下面添加如下部分内容:
                                                                               
echo "checking for Oracle 10.0 style toplevel (libclient10.a)" 1>&6
echo "configure:1730: checking for Oracle 10.0 style toplevel (libclient10.a)" >&5
for f in $oracle_directory $oratest1 $oratest2 $oratest3 $oracle4 /opt/oracle /u/oracle /usr/oracle /usr/local/oracle ; do
    echo "$ac_t""looking for lib/libclient10.a in $f" 1>&6
    if test -r "$f/lib/libclient10.a" ; then
        ORA="$f/lib"
        ORACLE_HOME=$f
        echo "$ac_t""setting ORA to $ORA" 1>&6
        testver=10
        ORA_MAJOR_VERSION=10
        ORA_MINOR_VERSION=0
        FOUND_ORACLE=1
        break
    fi
done

export ORACLE_HOME=your_oracle_home_directory

cd /usr/local/src/oratcl-4-1-branch/unix rm -f config.cache

sh ../configure --with-tcl=../../tcl8.4.5/unix --with-oracle-directory=$ORACLE_HOME --with-oracle-version=9 ( or 10 or 8! ) --enable-threads --enable-shared
注:红色部分为针对不同的数据库版本需要做的调整.

vi Makefile – 把所有的 -rpath 改做 -Wl,-rpath,

make clean

make

make install

sqlplus orabm/orabm @delivery_sp.sql      
sqlplus orabm/orabm @new_order_sp.sql .
sqlplus orabm/orabm @ostat_sp.sql 
sqlplus orabm/orabm @payment_sp.sql 
sqlplus orabm/orabm @slev_sp.sql

 
步骤操作
命令
1创建 ORABM用户(用TOOLS做默认表空间, TEMP 表空间为临时表空间)
sqlplus system/pwd @orabm_user

2

创建表

sqlplus system/pwd @orabm_tab

3

装载数据

$orabmload Warehouses 1

4

创建索引

sqlplus system/pwd @orabm_ind

5

分析表和索引

sqlplus system/pwd @orabm_analyze

6

创建压力测试PL/SQL 过程

sqlplus system/pwd @orabm_serverside_stress

7

把表和索引数据缓冲到SGA

sqlplus system/pwd @orabm_cache

把tpc-c.tcl脚本载入Hammerora中(remember to change the file filter from *.trc to *.tcl to see TCL files),在该tpc-c.tcl中查找connect字符串,调整为你的数据库用户连接信息。并调整虚拟用户信息。

测试运行

运行Hammerora,创建需要的用户数, 来模拟TPC-C 基准程序(注意调整好执行Hammerora程序的环境变量,最好直接用Oracle用户来执行). 下图为笔者笔记本电脑上得到的数据[机器性能查了一点儿 :) ] :

图2: Hammerora测试结果示例

 

参考信息

http://hammerora.sourceforge.net/ Hammerora的主页.当前的软件版本是1.15.
http://www.linxcel.co.uk/orabm/ Geoff Ingram维护的个人站点.该站点上还有一个很有趣的工具orastress.用来进行Oracle数据库压力测试.
http://www.tpc.org TPC官方站点.
http://www.cnoug.org/viewthread.php?tid=63技术高手RudolfLu很早以前就曾对orabm这个工具做过介绍.
http://www.dbanotes.net/Oracle/Install-Oracle10g-RHEL3.htm Installing Oracle 10g on RHEL AS 3 Step-by-Step

本文作者
Fenng,某美资公司DBA,业余时间混迹于各数据库相关的技术论坛且乐此不疲。目前关注如何利用ORACLE数据库有效地构建企业应用。对Oracle tuning、troubleshooting有一点研究。个人技术站点: http://www.dbanotes.net/。可以通过电子邮件 dbanotes@gmail.com 联系到他。

原文出处

http://www.dbanotes.net/Oracle/Use_OpenSourceTool_implement_YourOwn_TPC-C.htm

回首页 

All Articles (by Fenng) are licensed under a Creative Commons License.
I would welcome any feedback. Please send questions, comments or corrections to dbanotes@gmail.com

时间: 2024-11-03 12:28:47

[Oracle]利用开源工具实现自己的TPC-C的相关文章

利用开源工具分析新型PowerPoint恶意文档

本文讲的是利用开源工具分析新型PowerPoint恶意文档,最新新出现了一个新型的恶意MS Office文档:通过将鼠标光标悬停在链接上来执行PowerShell命令的PowerPoint文档,此攻击不涉及VBA宏.在本博客中,我们将展示如何使用免费的开源工具分析这些文档.像往常一样,该恶意MS Office文件通过电子邮件发送给受害者. 分析 使用emldump.py(一个分析MIME文件的工具),我们可以分析用户收到的电子邮件: 输出表示邮件附件位于第5部分.我们选择第5部分,并执行前100

最棒的60个DevOps开源工具

编者按:DevOps越来越流行,越来越成为加快产品研发速度.提升团队效率的有效工具.现在,在开发.测试.部署.交付.维护以及监控分析等工作中,有越来越多的开源DevOps工具可以使用. 本文推荐了60款开源工具来帮助大家更好的实行DevOps. 你喜欢免费的东西吗?获得开发者社区支持的自动化,开源的工具是大家梦寐以求的.这里列举了 60+ 款最棒的开源工具,可以帮助你很好的实行 DevOps. 开发工具 版本控制&协作开发 版本控制系统 Git Git 是一个开源的分布式版本控制系统,用以有效.

开源工具高效分析Java应用

开源工具高效分析Java应用 不止一次,我们都萌发过想对运行中程序的底层状况一探究竟的念头.产生这种需求的原因可能是运行缓慢的服务.Java虚拟机(JVM)崩溃.挂起.死锁.频繁的JVM暂停.突然或持续的高CPU使用率.甚至于可怕的内存溢出(OOME).好消息是现在已有许多工具能帮你得到Java虚拟机运行过程中的不同参数,这些信息有助于你了解其内部状况,从而诊断上述的各种情况. 在这篇文章中,我将介绍一些优秀的开源工具.其中一些是JVM自带的,另一些则是第三方工具.我将从最简单的工具开始介绍,逐

理解和使用Oracle 8i分析工具-LogMiner

Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重作日志文件(归档日志文件)中的具体内容,特别是,该工具可以分析出所有对于数据库操作的DML(insert.update.delete等)语句,另外还可分析得到一些必要的回滚SQL语句.该工具特别适用于调试.审计或者回退某个特定的事务. LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图(Oracle8i内置包的一部分)组成,它作为Oracle数据

用开源工具创建BlackBerry应用程序,第3部分 构建社交网络应用程序

在数字时代,社交网络应用程序对消费者和业务市场的影响是最有吸引力的 奇迹之一.营销专家改变了与潜在客户打交道的方式,具有相同志趣的群体能够 快速组建起来,这都与社交网络分不开.2008 年秋季的美国总统竞选表明,社 交网络已经成为成功的政治竞选的一部分.社交网络与流行的.强大的 BlackBerry 平台的结合将是一个充满活力的组合.本教程是"用开源工具 创建 BlackBerry 应用程序"系列的第 3 部分,它探索了为何 BlackBerry 是编写和部署社交网络应用程序的强大移动

用开源工具创建BlackBerry应用程序,第2部分 构建RSS阅读器

开放源码对软件开发市场产生了革命性影响,如今新的消息渠道不断涌现, 它们正是以这种方式强劲地冲击着传统的消息渠道.今天我们可以从各种 Internet 资源和 Internet 主流媒体获得免费的消息.我们可以通过阅读不同 的 Web 站点来获取消息,但这样做非常繁琐.那么,随时更新感兴趣的消息怎 么样?集中地接收您喜欢的消息不是很方面吗?在 BlackBerry 上,您可以通过 RSS 阅读器来实现这些功能.本教程是系列教程 "用开源工具创建 BlackBerry 应用程序" 的第

使用Java开源工具建立一个灵活的搜索引擎

为应用程序添加搜索能力经常是一个常见的需求.本文介绍了一个框架,开发者可以使用它以最小的付出实现搜索引擎功能,理想情况下只需要一个配置文件.该框架基于若干开源的库和工具,如 Apache Lucene,Spring 框架,cpdetector 等.它支持多种资源.其中两个典型的例子是数据库资源和文件系统资源.Indexer 对配置的资源进行索引并传输到中央服务器,之后这些索引可以通过 API 进行搜索.Spring 风格的配置文件允许清晰灵活的自定义和调整.核心 API 也提供了可扩展的接口.

为开发人员推荐20个开源工具和应用程序

1. SVG-Edit :Open Source Graphics Editor 开发人员推荐20个开源工具和应用程序-开源开发工具"> SVG-Edit 是一个基于浏览器的图像编辑器,可进行常用的一些图像处理功能,无需服务器端支持,支持各种浏览器. 2. Codiad :Open Source & Web Based IDE for Coding Remotely Codiad是一个开源基于 Web 的 IDE 应用程序,用于在线编写和编辑代码. 这个应用程序采用 PHP 开发,

巧用Terraform和Packer开源工具完成云上自动运维

2017年在线技术分会--运维/DevOps在线技术峰会上,来自阿里云的黎山分享了利用开源DevOps工具完成云上的自动运维的实践.她首先通过对5个应用场景的分析引出了"自动化能自动化的一切"的理念.然后介绍了使用Terraform和Packer开源工具完成云上自动运维的具体实现过程.最后对多工具组合案例进行了分享.   以下内容根据直播视频整理而成.   云计算的特点是开箱即用,可以随时扩缩容,不用考虑硬件的损坏问题,而且有丰富的云平台和云产品供选择. 应用场景分析 应用1 某应用1