Oracle数据库核心项目测试与优化 最佳实践 OTest Introduction Oracle数据库核心项目测试与优化 最佳实践 WenJie Wang(王文杰) Oracle ACS 2017-09-29 Confidential – Oracle Internal/Restricted/Highly Restricted
什么是OTest? 一个Oracle数据库测试优化分析平台,现在支持Oracle,未来支持MYSQL。 它主要在数据库项目实施阶段测试,优化,监控,分析数据库性能。目 的是提供给客户一套全面和专业的数据库性能评估办法。 Otest主要帮助客户做三件事情: 测试和评估数据库系统详细的性能情况:包含17种核心能力测试。 验证数据库在最大压力情况下的稳定性:基于DB组件的最大压力测试。 帮助客户进行数据库硬件、平台选型:异构测试平台的对比,排名。 另外Otest还可以做: 自动化的测试评估和提供优化建议 数据库性能的监控 除了基准测试,还可以自定义测试,介入业务性能测试 Toubleshooting 工具 培训和演示 传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所 有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过 创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。 新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之 间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、 机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。 容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系 也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用 不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供 一致环境。类似地,容器比虚机轻量、更“透明”,这更便于监控和管理。最后,
Otest概述 对比其它测试工具,主要的优势: 和其它测试软件最大的区别在于:它的测试案例库,已经涵盖了主流Oracle版本和硬件,方便进行对比PK。并且Oracle测试场景非常的专业和细化。 1.测试场景更贴近国内用户的业务(主要是通信运营商) 2.测试场景高度可定制和扩展 3.最专业Oracle性能测试设计,基于组件的测试类型。包括分类测试,和自定义最大压力测试。 4.测试结果自动分析,评估,显示图表。大量异构平台的测试结果对比。 Confidential – Oracle Internal/Restricted/Highly Restricted
Otest 概览 Otest cloud : Otest数据库软硬件智能评测优化分析平台 OTEST 是用java开发的跨平台工具,所以它支持所以主流平台:AIX, HP UX, LINUX, WINDOWS .它需要java7或者以上的版本. Otest目前是由王文杰 开发和提供技术支持,发送邮件到valen.wang@oracle.com可以获得最新的相关信 息。 Otest 包含3个主要的模块: 关键字: Test , Trace, Monitor, Analysis, Optimize , Compare and Rank Test模块: 执行数据库测试,追踪测试结果,收集数据库性能统计. DB Watcher : 一个轻量级的数据库监控工具 Otest cloud : Otest数据库软硬件智能评测优化分析平台 Oracle Confidential – Internal/Restricted/Highly Restricted
Otest的研发历程 重复的发明轮子? No >进一步,用户需要获得数据性能指标,可以使用orion,io度量,tcptest 等工具,这些指标都只是数据库性能的一部分,如何测试出全面完整的性 能情况,随后设计出17种核心性能指标测试。基准Test场景诞生。 >进一步,需要给用户图形化,展示和解释性能指标。监控模块诞生。 >现在,用户需要了解各种平台,版本下,性能的PK情况,从而开始测试 场景的标准化,测试结果的保存,自动分析,排名。Otest Cloud诞生。 传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所 有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过 创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。 新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之 间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、 机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。 容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系 也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用 不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供 一致环境。类似地,容器比虚机轻量、更“透明”,这更便于监控和管理。最后,
Otest的近期测试案例 传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所 有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过 创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。 新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之 间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、 机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。 容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系 也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用 不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供 一致环境。类似地,容器比虚机轻量、更“透明”,这更便于监控和管理。最后,
Otest 界面 Oracle Confidential – Internal/Restricted/Highly Restricted
Otest的主要功能 基准测试提供了17种数据 库核心能力的测试,验证 当前软硬件平台是否满足 要求,到达了业务需要的 水平。 ↓ 99% 极限压力测试,在最严苛 的环境下测试数据库的稳 定性,大大减少生产后的 风险。 非常方便的trouble shooting工具 监控数据库性能,或者用 于培训,展示的用途 ? Confidential – Oracle Internal/Restricted/Highly Restricted
基准测试 基准测试验证17种数据库核心能力 验证系统的的整体性能,包括硬件,数据库,网络等。任一层面的异 常都可能导致性能问题,我们可以提前发现提前优化。 基准测试结果,可以长期保存,作为以后生产系统的性能基线。 验证硬件供货商提供的硬件是否满足的性能要求,或者达到他们承诺 的性能水平。 Exadata在测试中,各项目都表现卓越。 Oracle Confidential – Internal/Restricted/Highly Restricted
Benchmark Test 的类型 IO Network CPU Memory Continued on next slide > Confidential – Oracle Internal/Restricted/Highly Restricted
典型场景 User: Oracle database 在 power780 和 Huawei X86 服务器上,哪一个运行得更快 ? User: Vm 虚拟机和 X86,运行oracle 有什么性能差异吗? User: Exadata对比小型机,性能差异有多少? User: 我们花了高昂的成本采购了新的全闪存+双活硬件,我们想了解它真实的性能情况? User: 我们的数据库马上要正式生产,它能顶住月结的压力吗? This is a Quote with Logo slide ideal for including a partner or product logo with a brief quotation and attribution. To Replace the LOGO on this sample slide: Right-click the sample LOGO and choose Change Picture. Navigate to the location where the new logo is stored, select desired logo file and click on the Open button to replace the sample logo. Oracle Confidential – Internal/Restricted/Highly Restricted
典型场景 Application team: 我们数据插入只能插入30mb数据/秒,数据库达到瓶颈了吗? DBA: 不,在之前的测试中,IO最大吞吐量在120M/秒,所以我们应该坚持其它方 面是否发生了阻塞 Storage vendor: 我们的硬件提供了市场上数一数二的事务处理能力。 DBA: 在测试事务能力为3600/秒,属于中等水平。也许我们还得想法优化( async io config, ASM config…etc) Oracle Confidential – Internal/Restricted/Highly Restricted
The process of benchmark test Otest Cloud(ranking and analysis) test sample optimize analyze Go to next test fail Pass Oracle Confidential – Internal
What needs to know to do a test First- How to do the test: check Otest guide, Otest benchmark test guide, test report Second – How to sample the test result: Otest watcher , awr, awrcrt.sql…etc Third – How to judge test result : DBA experience, Otest cloud Otest classify test result to 4 performance levels: BAD REGULAR GOOD EXCELLENT Fourth – How to optimize(if needed) : DBA experience, Otest cloud Confidential – Oracle Internal/Restricted/Highly Restricted
智能分析平台:OTEST CLOUD Otest cloud is a test result repository. You can save benchmark test result in it and compare with other test result in worldwide , check ranking list by test type. PROJECT MANAGEMENT TEST RESULT MANAGEMENT TEST RESULT ANALYSIS TEST RESULT REPORT AND ADVICE TEST RANK DOWNLOAD AND DOCUMENT
OTEST CLOUD Otest cloud automatically analyze the test result , give you a simple performance judgement, show detailed test chart , show regular optimization advise.
What do we deliver to client (report)
How sample test statistcs Otest’s test trace and test chart trace DB Watcher Otest Cloud website Other common monitor tools like : OS command, awrrpt, awrcrt Confidential – Oracle Internal/Restricted/Highly Restricted
Delivery suggestion Single node database - a completed benchmark test and pressure test – 2~3 days (without much optimization work) 2 nodes RAC- a completed benchmark test and pressure test – 3~4 days (without much optimization work) Big customer which created new database more than 30 per year, suggest to build private Otest cloud(10 days). Future patching/upgrading work (1~2 days). Optimization work base on the real requirement , like network , storage issue need to work with hardware vender team to resolove it , it may need more time. Confidential – Oracle Internal/Restricted/Highly Restricted
Access Otest cloud test envrionment Send email to valen.wang@oracle.com to create your account, account id is you oracle email id. Access otest cloud website to download software and apply for key of cloud version (optional) Warning: currently otest cloud is a temporary test environment. Confidential – Oracle Internal/Restricted/Highly Restricted
Typical Case 新疆移动VPLEX双活 云南移动ASM双活 甘肃银行GPFS双活 云南移动HDS虚拟化存储 重庆移动VPLEX双活 贵州农信新核心 西南证券Exadata 重庆移动X86 vs VM 甘肃移动7445诊断 甘肃移动一体机 西南证券DMAX存储 重庆攻击X6测试 甘肃移动crm3.0 14. 中国移动一体机研发 15. 徽商银行新核心 …… Confidential – Oracle Internal/Restricted/Highly Restricted
OTest基准测试详解 核心数据库实施最佳实践 Oracle Confidential – Internal
Benchmark Test Type IO Network CPU Memory Continued on next slide > Confidential – Oracle Internal/Restricted/Highly Restricted
OTest的测试场景说明 交易表1 历史交易表 OTest内置了一个小型交易系统的数据库模型 仓储表 产品表 交易表10 客户表 交易表? 这个小型的schema主要是一个星型模型+历史数据表的 测试模型。它包含大约80几张表,几十个索引,序列, 存储过程等对象。测试需要的空间,根据测试规模, 大约需要:并发事务,内存访问30g,物理写测试100 个,物理读测试200g,压力测试500g。 产品表 仓储表 交易表10 交易表1 历史交易表 客户表 交易表? 交易表81 市场表 操作表 Continued on next slide > Confidential – Oracle Internal/Restricted/Highly Restricted
Otest如何模拟生产:测试参数的配置 事务控制:提交频率,commit/rollback比例,事务大小控制(在TSQL实现) 批量控制:batch size,控制SQL执行的batch大小 并发度控制 执行次数控制 最大测试时间控制 测试执行时间间隔控制 短连接开关 软解析,硬解析开关 9. 返回行处理控制 10. SQL随机执行开关 Oracle Confidential – Internal/Restricted/Highly Restricted
Otest如何模拟生产: 随机要素的设定 TSQL create table FORTEST1 ( COL1 NUMBER, COL2 VARCHAR2(200), COL3 DATE ) <SQL_WITH_PARA> insert into fortest1 values(?,?,to_date(?,'yyyymmdd')) </SQL> <PAR T=RN>1000-10000</PAR> <PAR T=RV>10-100</PAR> <PAR T=LD>20171002,20171003,20171004,20171005,20171006</PAR> select /*+wwj*/* from trade_detail[random_number10-80] where rownum =1; select * from v$sqlarea where sql_text like '%wwj%' Oracle Confidential – Internal/Restricted/Highly Restricted
Before 基准测试:创建测试项目 - Important 创建测试项目的作用 点击左上的create project的按钮 在log目录下,生成一个测试项目名的 子目录,用于存放该测试项目的所有 相关日志:测试结果明细(xml ) , 本地测试性能图表(html ) 填写正确的硬件信息,用于未来追溯 历史测试,进行对比和分析。提交到 Otest cloud网站上,用于和所有Otest 用户的测试结果进行对比和分析(注 意:无任何保密和关键信息) Commit后,为事务生成一个SCN。 LGWR将缓存重做日志条目写到磁盘,并把SCN记录到在线重做日志文件中。 V$LOCK持有的锁,都将被释放,唤醒等待。 执行Block cleanou,清除存储在数据库块首部的与锁相关的信息。 log buffer触发条件,commit/rollback,每3秒,dbwr(checkpoint),1/3,1MB,log switch 在Oracle Database 12c中,LGWR开始并协调多个辅助helper进程,并行地完成以前LGWR一个人做的工作。 LGWR进程变成了多个LGnn形式的helper进程的协调指挥者,并负责保证这一堆并发进程所做的工作仍满足正确的LGWR顺序 LGnn进程负责读取一个或多个redo strands,负责实际写出到log file以及post前台进程 _use_single_log_writer ADAPTIVE _max_outstanding_log_writes 2 Bug 21915719 12c Hang: LGWR waiting for 'lgwr any worker group' or ORA-600 [kcrfrgv_nextlwn_scn] ORA-600 [krr_process_read_error_2] on IBM AIX / HPIA Using 4k Redo Logs on Flash, 4k-Disk and SSD-based Storage ALTER SYSTEM SET "_use_adaptive_log_file_sync"= <FALSE/TRUE> scope=<both/spfile/memory>; There are 2 methods by which LGWR and foreground processes can communicate in order to acknowledge that a commit has completed: Post/wait - traditional method available in previous Oracle releases LGWR explicitly posts all processes waiting for the commit to complete. The advantage of the post/wait method is that sessions should find out almost immediately when the redo has been flushed to disk. Polling Foreground processes sleep and poll to see if the commit is complete. The advantage of this new method is to free LGWR from having to inform many processes waiting on commit to complete thereby freeing high CPU usage by the LGWR. 填写项目名称,和尽量详细的填写硬件信息 Confidential – Oracle Internal/Restricted/Highly Restricted
基准测试(1):TPMS Test 并发小型事务测试 小型事务,一般指交易型(OLTP)事务 这里的TPMS测试即为transaction测试,这里的 transaction指的是Oracle中的事务。OTEST为tpms 设计一个插入数据库和修改数据库场景。每次事 务对应的数据量可以用过修改SQL,或者更改 commit频率加以控制,也就是说你可以预估你未 来应用的事务大小进行对应的测试。OTest默认的 事务大小约为48K(block change)。TPMS并发事 务的性能和redo log的设计密切相关。Log file sync 等待优化,过去一直是Oracle优化中的难题。 早发现,早优化,就可以避免上线后,无法再对 存储的设计进行改动。 Commit后,为事务生成一个SCN。 LGWR将缓存重做日志条目写到磁盘,并把SCN记录到在线重做日志文件中。 V$LOCK持有的锁,都将被释放,唤醒等待。 执行Block cleanou,清除存储在数据库块首部的与锁相关的信息。 log buffer触发条件,commit/rollback,每3秒,dbwr(checkpoint),1/3,1MB,log switch 在Oracle Database 12c中,LGWR开始并协调多个辅助helper进程,并行地完成以前LGWR一个人做的工作。 LGWR进程变成了多个LGnn形式的helper进程的协调指挥者,并负责保证这一堆并发进程所做的工作仍满足正确的LGWR顺序 LGnn进程负责读取一个或多个redo strands,负责实际写出到log file以及post前台进程 _use_single_log_writer ADAPTIVE _max_outstanding_log_writes 2 Bug 21915719 12c Hang: LGWR waiting for 'lgwr any worker group' or ORA-600 [kcrfrgv_nextlwn_scn] ORA-600 [krr_process_read_error_2] on IBM AIX / HPIA Using 4k Redo Logs on Flash, 4k-Disk and SSD-based Storage ALTER SYSTEM SET "_use_adaptive_log_file_sync"= <FALSE/TRUE> scope=<both/spfile/memory>; There are 2 methods by which LGWR and foreground processes can communicate in order to acknowledge that a commit has completed: Post/wait - traditional method available in previous Oracle releases LGWR explicitly posts all processes waiting for the commit to complete. The advantage of the post/wait method is that sessions should find out almost immediately when the redo has been flushed to disk. Polling Foreground processes sleep and poll to see if the commit is complete. The advantage of this new method is to free LGWR from having to inform many processes waiting on commit to complete thereby freeing high CPU usage by the LGWR. 选择TPMS 测试项目开始测试,一般并发数为cpu_count*1.5 Confidential – Oracle Internal/Restricted/Highly Restricted
TPMS测试 性能指标的采样 测试结果的判定 可能的优化措施 Log file sync 等待事件 的平均等待时间 User commits指标 CPU利用率 Log file sync 低于10ms, 实际新一代的高端存储 都能达到大并发下<3ms User commits 新一代高 端存储1500~5000每秒。 老存储在1000以内。 瓶颈不发生在CPU,需 要保持CPU<60% 替换online redo log的 到更好硬件。 磁盘layout的设计调整 常规的log file sync的优 化办法Troubleshooting: 'Log file sync' Waits(Doc ID 1376916.1) 优化后再次测试 Redo Copy latch The redo copy latch is acquired for the whole duration of the process described above. The init.ora LOG_SIMULTANEOUS_COPIES determines the number of redo copy latches. It is only released when a log switch is generated to release free space and re-acquired once the log switch ends. Redo allocation latch The redo allocation latch is acquired to allocate memory space in the log buffer. Before Oracle9.2, the redo allocation latch is unique and thus serializes the writing of entries to the log buffer cache of the SGA. In Oracle 9.2. Entreprise Edition, the number of redo allocation latches is determined by init.ora LOG_PARALLELISM. The redo allocation latch allocates space in the log buffer cache for each transaction entry. If transactions are small, or if there is only one CPU on the server, then the redo allocation latch also copies the transaction data into the log buffer cache. If a log switch is needed to get free space this latch is released as well with the redo copy latch. Redo writing latch This unique latch prevent multiple processes posting the LGWR process requesting log switch simultaneously. A process that needs free space must acquire the latch before of deciding whether to post the LGWR to perform a write, execute a log switch or just wait. Confidential – Oracle Internal/Restricted/Highly Restricted
TPMS测试演示 操作如下: 16 processes 500 times
基准测试(2):MBPS Test 吞吐量测试 大型事务,一般常见于账期出账的批量计算,数据仓库的数据加载,数据库导入,迁移等等 MBPS测试为随机IO批量插入测试,该测 试在短时间内发起大量的IO写入数据库, 会给存储带来极大的压力。从该测试, 可以测量出数据库的IO写入能力。 该测试性能和磁盘的性能,RAID的类型, SAN网络的性能,有密切的关系。 日志切换,通过ALTER SYSTEM SWITCH LOGFILE。 DBA发出checkpoint命令,通过ALTER SYSTEM checkpoint。 对数据文件进行热备时,针对该数据文件的checkpoint也会进行,ALTER TABLESPACE TS_NAME BEGIN BACKUP/END BACKUP。 当运行ALTER TABLESPACE/DATAFILE READ ONLY的时候。 SHUTDOWN命令发出时。 How to Calculate the Number of IOPS and Throughput of a Database (Doc ID 2206831.1) 选择MBPS测试开始测试,一般并发数在32~64之间 Confidential – Oracle Internal/Restricted/Highly Restricted
MBPS测试 性能指标采样 测试结果的判定 可能的优化措施 Physcial IO write bytes, application IO指标 Physical IO write total bytes 等待事件 Application IO一般都在 100~300Mb/second的 水平 Instance IO 一般在 200~1000M/second的 水平。 CPU利用率小于<90% 等待事件主要为log buffer space 数据库的配置:足够 多的redo group,dbwr 进程数等 操作系统配置:异步io 配置 存储的优化 优化后再次测试 Physical disk attributes (stripe size, speed, layout etc..)Raw devices versus File System FilesSpreading written data across more disks/filesUsing Asynchronous writes where availableUsing multiple database writers where asynch. Consider making the log buffer bigger if it is small (remember the database needs to be restarted...the parameter is not dynamic) Moving the log files to faster disks Increase size of redo logs Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
MBPS测试演示 操作如下:
基准测试(3):CPU Test 处理器测试 选择CPU测试开始测试 CPU测试目的,主要测试主机上CPU的计 算能力,以及整体构架的稳定性。该测 试,是由PL/SQL发起的排序和数学运算。 每一个并发,能够完全利用到一个cpu core到接近100%的利用率。 测试又分为单核心CPU测试,和所有核心 CPU测试。 Confidential – Oracle Internal/Restricted/Highly Restricted
CPU测试 性能指标采样 测试结果的判定 可能的优化措施 Topas/top,sar –u , Otest Watcher监控CPU 利用率 CPU所有核心测试,需 要保证每颗CPU都得以 充分,均匀的利用。 RAC主机之间的CPU性 能不能有明显的差异。 CPU运算的完成时间, 需要在合理的范围。 如果有问题,需主机, 硬件工程师一起进行 诊断 优化后再次测试 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
基准测试(4):logon storm 连接风暴测试 选择logon storm测试开始测试 连接风暴是数据库运维中经常会遇到 的一种特殊情况,往往是应用设计的不 合理,或者人为导致的,突发连接数暴 涨,给数据库和主机带来的巨大的压力。 后果往往是导致主机资源耗尽,数据性 能急剧下降。该测试的主要目的,是验 证Oracle监听的连接处理能力,以及发生 连接风暴时,对主机的压力情况。 rate_limit参数从9.2.0.8引入,可以用来控制连接风暴。rate_limit后面跟的参数是允许每秒连接的个 数,配置完成后,需要stop/start listener生效。如下: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = host.sample.com)(PORT = 1521)(RATE_LIMIT=5)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = host.sample.com)(PORT = 1522)) ) ) 上面的配置表示1521端口只允许每秒5个连接,而1522端口是没有限制的。 Confidential – Oracle Internal/Restricted/Highly Restricted
Logon storm 指标的采样 测试结果的判定 可能的优化措施 User logon 指标 CPU和内存利用率 监听日志 User logon指标 >30/second CPU利用率低于50%, swap利用率正常 监听日志没有报错 How to Diagnose Slow TNS Listener / Connection Performance (Doc ID 557416.1) Oracle Net Performance Tuning (Doc ID 67983.1) 确保网络连接通畅 优化后再次测试 (1). Bug 8529537 : ALL NEW CONNECTIONS ARE REFUSED BY ORA-12547 AFTER TNS-01158 IN LISTENER.LOG 描述:当达到设置rate_limit的最大值之后,报错tns-1158,但是后续新的连接无法连接了。 受影响版本:11.2.0.1、11.1.0.7、10.2.0.4 Fix版本:11.2.0.2 、 12.1 (2). Bug 16409926:LISTENER MEMORY LEAK IF RATE_LIMIT IS USED AND ENFORCED FREQUENTLY 描述:设置rate_limit之后,过来的连接需要花费较长的时间才能建立,tnsping的响应也需要较长时 间,重启listener之后可以解决问题,但是不久之后问题重现。 受影响版本:11.2 Fix版本:11.2.0.4 and 12.1.0.2,或者应用patch 16409926。 Confidential – Oracle Internal/Restricted/Highly Restricted
基准测试(5):RAC Interconnect / Cache Fusion Test 需要在node1同时进行测试1和测试2,在node2运行测试3 RAC数据库得益于cache fusion这一特性, 才被称为Real application cluster。Cache fusion通过高速interconnect,在实例间进 行数据块传递 ,每当不同的实例请求相 同的数据块,这个数据块就需要在实例 间进行传递。 Cache fusion的性能是影响RAC数据性能 的要素之一,它和心跳网络的质量密切 相关。 Confidential – Oracle Internal/Restricted/Highly Restricted
Interconnect测试 性能指标采样 测试结果的判定 可能的优化措施 GC相关指标,最主要 的指标是:GC transfer KB, GC blosk lost, GC cr/current block time GC block lost保持在一 个较为健康的水平。 为0最好,不要高于1 个块每秒。 GC statistic的相关指标 保持健康状态 Interconnect的流量正 常。(根据网络的类 型和质量) 参考Oracle GC优化最 佳实践 优化网络层配置 优化后再次测试 1 私有ip,是独立的网卡,独立的subnet,不能与任何其他网络共享。 2 同一台数据库的每个节点的private ip的subnet 必须是一致的, 每个节点之间是必须互通的。 3 同一个集群,不同节点私网interface name必须一致。 例如都叫lan0 4 netmask,和broadcast ,默认255.255.255.0 x.x.x.255 如果局方有特殊的安全需求, 可以考虑调整。 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
RAC interconnect测试演示 操作如下:
基准测试(6):Query buffer cache Test 内存访问测试 选择random query test 进行测试 该测试主要测试数据库的session logic reads(consistent reads)的性能情况。 从buffer cache访问数据块,是数据库 中最高效数据扫描方式。通常大量的逻 辑读也会伴随着较高的主机资源的占用。 通过该测试,我们可以获得主机/数据 库能够提供的最大逻辑读的指标。为以 后的生产/扩容,提供实际的参考意义。 Confidential – Oracle Internal/Restricted/Highly Restricted
内存访问测试 性能指标的采样 测试结果的判定 可能的优化措施 Session logic read CPU利用率 100w~500w的逻辑读 是常见的水平。在部 分高端的服务器,甚 至可以达到1000w的水 平,但主机利用率也 非常高。 保证瓶颈不发生在CPU, 需要保持CPU<80% 优化buffer cache的命 中率 和硬件性能有关,主 要是内存和CPU 优化后再次测试 Confidential – Oracle Internal/Restricted/Highly Restricted
基准测试(7-10):物理读测试 全表扫描测试(scatter read) 索引范围扫描(sequential read) 内存访问测试 物理读测试的限制条件较多。第一需要足够大的数据,该测试构造了一个大约100g的分区表,第二buffer cache需要固定为20g(统一标准)。第三测试前,最好刷新buffer cache。 全表扫描测试(scatter read) 索引范围扫描(sequential read) 直接路径读(serial read) 临时表空间读(sort ,group by) Confidential – Oracle Internal/Restricted/Highly Restricted
物理IO的测试 性能指标采样 测试结果的判定 可能的优化措施 IO等待事件的指标 Db file scatter read Db file sequential read Direct path read/wirte Direct path read/wirte temp Physcial io read bytes 各项IO等待事件的指标 是否满足Oracle的建议 值。 物理读的吞吐量。新 的高端存储一般可以 达到1000M+ 异步io配置, 存储的优化 优化后再次测试 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
基准测试(11):SQL Parse Test 硬解析测试 选择hard parse进行测试 Shared pool作为Oracle数据库的核心组 件之一,主要负责SQL解析和相关对象存 储。 硬解析是Oracle中一个非常消耗资源的 操作,该测试的目的是观测数据库能够 提供的最大的硬解析的指标,以及在高 压力下,数据库是否稳定运行。 Confidential – Oracle Internal/Restricted/Highly Restricted
SQL解析测试 性能指标采样 测试结果的判定 可能的优化措施 Hard parse count CPU利用率 Alert 日志 Shared pool的健康情况, 是否shared pool报错。 常见的Oracle shared pool优化策略。 优化后再次测试 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
基准测试(12):VLDB Test 在DW中运行的SQL一般的特点为 一个FACT table,join若干dimension 选择hard parse进行测试 在DW中运行的SQL一般的特点为 一个FACT table,join若干dimension table。该类型的SQL一般都会读取大量的 数据块进行排序,聚合的操作。执行计 划一般都非常复杂。 该测试是专门为DW环境而设计的。能 够简单验证该类型负载的性能。 Confidential – Oracle Internal/Restricted/Highly Restricted
基准测试(13):insert append Test 直接路径加载测试 选择hard parse进行测试 直接路径插入,也是常见的一种数 据库负载。数据直接将数据插入到 表高水位线后,而且不经过buffer cache,直接写入数据文件。 Confidential – Oracle Internal/Restricted/Highly Restricted
Otest的其它测试类型 核心数据库实施最佳实践 Oracle Confidential – Internal
其它一些测试(optional) Memory pool contention Test Undo contention Test 模拟shared pool 和buffer pool各种程度的竞争。 模拟UNDO 的竞争。 Dataguard Test 2PC测试 模拟数据库的写入,观测日志的传输,APPLY的情况。 针对有2PC的特殊业务进行测试。 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
自定义测试 如果上述的基准测试不能满足您的测试要求,您可以自己定义自己的测试案例, 并永久保存在Otest配置文件中,方便随时调用。 Oracle Confidential – Internal/Restricted/Highly Restricted
Otest调用Oracle内置的测试1:CALIBRATE_IO In PowerPoint, Enter Data Manually into the Spreadsheet IO校准特性用于了解存储系统的性能,从而获得数据 库的IO性能的实际参考。I/O校准特性(IO Calibration)发 起随机I/O访问存储介质,其结论值解决于数据库真实 IO性能。 参数1:num_physical_disks用以指定数据库存储所用物 理磁盘的近似数 参数2:max_latency指定了客户所能容忍的最大IO 延 迟时间,单位为ms OTEST内置了该测试的调用。 Confidential – Oracle Internal/Restricted/Highly Restricted
Otest调用Oracle内置的测试2:oratcp test 用于测试dataguard的带宽 调用界面 Oratcp是oracle提供的一个用于测试tcp连 接的带宽的包。一般用于测试dataguard 主机和备机之间的网络情况。 Oratcp是一个jar包,默认的使用方式为 字符接口。OTest提供了对oratcp的图形 化界面的调用。 运行过程中,会在message console打印出结果 Confidential – Oracle Internal/Restricted/Highly Restricted
MAX pressure test In the maximum pressure test, the core components of Oracle database (shared pool, data cache, PGA, temp file, redo, undo, inter connection, database files, control files, listener.etc.) are run workload with the maximum pressure. This test can simulate much more pressure than application pressure test. Under Otest pressure test, a database that keeps stable and function for a long time can greatly reduce the risk after go to production. Shared pool: latch shared pool, latch library cache mutex, cursor pin s wait , latch row cache objects Buffer cache: read by other session, buffer busy wait, latch cache buffer chain Red log: log buffer space Cpu: latch free, resmgr:cpu quantum Gc: gc grant 2way gc multiple block requests, gc cr/current block request, enq global data Undo:undo us contention Redo log: log file sync Control file; sequential read Data file : sequential , scatter, parallel ,direct read Oracle Confidential – Internal/Restricted/Highly Restricted
How configure pressure test: Pressure test editor Oracle Confidential – Internal/Restricted/Highly Restricted
Adjust the workload type as requirement This is a sample Stacked Column Chart slide ideal for showcasing revenue data, product or market information. To Change Font Color/Size: Select text, right-click and adjust the font setting on the Mini toolbar. Select desired attributes to change: font, size, boldness, color, etc. Note: many of the same commands can also be accessed from the Font group of the Home tab. Edit Chart: Click the chart to edit and select the Chart Tools Design tab (or double-click on the chart). Click the Edit Data button to access the underlying Excel 2007 spreadsheet. Copying Data From a Separate Excel Spreadsheet: From an existing Excel spreadsheet, select the range of cells to be copied, select copy (Ctrl C). In PowerPoint, click the chart to edit and select the Chart Tools Design tab (or double-click on the chart). Click the Edit Data button to open the spreadsheet for editing. Select all the data in the Chart in Microsoft Office PowerPoint spreadsheet by clicking the top left corner cell, right-click and select Delete. Click in the first empty cell of the spreadsheet and paste (Ctrl V) to place the data copied from the other Excel file. Changing Orientation and/or Scale of Data: If no chart elements appear in your chart it is because either 1) the default orientation for pre-made template charts displays data series in rows, not columns, or 2) the axis scale may have to be adjusted (see below). Change Orientation: Click the chart to edit and select the Chart Tools Design tab (or double-click on the chart.) Click the Switch Row/Column button. If the Switch Row/Column button is disabled, click the Select Data button and then click the Switch Row/Column button from within the Select Data Source dialog box, click OK. Change Scale: Right-click the labels next to the chart’s vertical (value) axis, select Format Axis from the pop-up menu. With Axis Options selected on the left, check all boxes under Auto to automatically provide the appropriate scale based on the data. To provide your own values, select the Fixed option, then type new values in the boxes provided to the right. Click Close when done. Oracle Confidential – Internal/Restricted/Highly Restricted
Thank you