转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
[Oracle]利用开源工具实现自己的TPC-C         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1486 更新时间:2009/4/22 22:05:36

[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 Availabilit
y
一书的作者)构建的一个程序包,包含了一套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] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台