某客户数据库从P595物理迁移至P780新服务器并更换存储之后,发现应用性能反而下降。P780配置了32颗4核CPU(主频为3920 MHz),710G内存。如下所示:
System Model: IBM,9179-MHC
Machine Serial Number: 06DA0CR
Processor Type: PowerPC_POWER7
Processor Implementation Mode: POWER 7
Processor Version: PV_7_Compat
Number Of Processors: 32
Processor Clock Speed: 3920 MHz
CPU Type: 64-bit
Kernel Type: 64-bit
LPAR Info: 1 SN06DA0CR
Memory Size: 727040 MB
Good Memory Size: 727040 MB
Platform Firmware level: AM740_088
Firmware Version: IBM,AM740_088
Console Login: enable
Auto Restart: true
Full Core: false
P595配置了32颗双线程CPU(主频为2302 MHz),186G内存。如下所示:
System Model: IBM,9119-595
Machine Serial Number: 83E37E3
Processor Type: PowerPC_POWER5
Processor Implementation Mode: POWER 5
Processor Version: PV_5_3
Number Of Processors: 32
Processor Clock Speed: 2302 MHz
CPU Type: 64-bit
Kernel Type: 64-bit
LPAR Info: 1 83-E37E3
Memory Size: 190976 MB
Good Memory Size: 190976 MB
Platform Firmware level: SF240_358
Firmware Version: IBM,SF240_358
Console Login: enable
Auto Restart: true
Full Core: false
可以看到服务器在硬件配置层面提高了很多,在排除了执行计划变坏的可能性之后,数据库性能下降是极不正常的。
在排除了服务器配置因素之后,进一步检查存储的I/O性能。通过查看AWR报告发现数据库性能下降期间,存储I/O的响应时间下降厉害,单块顺序读(db file sequential read)需要24ms,多块离散读(db file scattered read)需要33ms,日志文件同步(log file sync)竟然高达68ms,如下所示:
几乎可以确认,存储I/O下降是引起数据库性能下降的主要原因。经过和客户沟通之后,由于种种原因,该库和另外一套数据库需要共用一套存储,而且短期内还不能更改这种架构模式。
前面提到p780服务器的内存为710G,比原来的p595服务器足足多出524G内存。在目前的硬件条件下,要快速提高数据库性能,只能采取内存换I/O的优化手段。数据库SGA参数修改之前,BUFFER CACHE为40G,SHARED POOL为14G,如下所示:
经过和客户商量,决定扩大数据库的BUFFER CACHE至256G,并设置db_keep_cache_size至200G,并将最“热”的表和索引KEEP进KEEP POOL中,KEEP语法如下所示:
alter table xxx storage(buffer_pool keep);
alter index xxx storage(buffer_pool keep);
可以通过DBA_SEGMENTS.BUFFER_POOL字段查看对象是否已经KEEP进KEEP池中。如下所示:
SQL> select distinct BUFFER_POOL from dba_segments;
BUFFER_
-------
DEFAULT
KEEP
修改之后的BUFFER CACHE和KEEP POOL大小如下所示:
设置相关参数并重启数据库,过一段时间,数据库性能得到了极大的提升。尽管单块读的时间依然很高(响应时间为19ms),如下所示:
但是,查看AWR报告发现数据库每秒的物理读次数下降明显,每秒读数据块个数为1,925个,如下所示:
而修改参数之前,每秒的物理读高达6624个,如下所示:
可见,增大数据库的BUFFER CACHE效果还是很明显的,增大BUFFER CACHE使得更多的数据块可以被缓冲到内存中,从而有效地减少了物理读。但需要注意的是,增大BUFFER CACHE会在一定程度上增加CPU的使用率,所幸的是,增大BUFFER CACHE之后CPU空闲率维持在80%左右,系统内存使用率在78%左右,如下所示:
总结:
在CPU资源充足的前提下,适当增加BUFFER CACHE内存可以缓减存储I/O资源紧张。
分享到:
相关推荐
总结来说,这三份PDF文档为读者提供了一个全面了解Oracle数据库的路径,从基础概念到内存管理再到I/O优化,涵盖了数据库管理员和开发人员日常工作中必须掌握的关键知识点。通过深入学习,不仅可以提高数据库的管理...
总结来说,Oracle IO问题解析涵盖了从基础架构到高级调优的多个层面,包括内存管理、存储配置、故障恢复策略、SQL优化以及性能监控。全面理解和掌握这些知识点,对于提升Oracle数据库的性能和可靠性至关重要。对于...
本文旨在提供一个逐步的指南,帮助管理员优化Oracle在Linux上的运行环境。 2. 硬件架构与Linux内核 硬件架构是决定Oracle性能的基础。32位架构限制了内存的使用,而64位架构则提供了更大的内存空间,这对于大型...
在Oracle数据库管理中,了解和优化IO(输入输出)使用情况是至关重要的,因为它直接影响到系统的性能和响应时间。标题提到的"oracle IO 使用情况"指的是监控和分析Oracle数据库在执行SQL语句时对磁盘I/O资源的消耗。...
Oracle性能监控SQL——监控当前会话执行的SQL及IO等信息 Oracle性能监控是数据库管理员的重要职责之一,通过监控数据库的性能,可以及时发现问题,避免数据库的宕机和性能下降。本文将介绍一些常用的Oracle性能监控...
资源名称:Oracle数据库性能优化 PDF内容简介:本书面向实际应用,从多个角度出发,对Oracle优化中的很多关键问题进行了深入全面的探讨,涵盖了Oracle优化的各个技术层面,从内存优化、IO规划及优化,到SQL优化调整...
Oracle IO 问题的解决方法还包括使用 Oracle 的内存管理机制,例如使用 Buffer Cache 和 Log Buffer 等机制。这些机制可以有效地减少 Oracle 数据库中的 IO 问题,从而提高数据库的性能。 Oracle IO 问题解析是指 ...
《Oracle性能优化求生指南重要脚本》涵盖了Oracle数据库系统中的关键性能调优领域,包括缓存、并行处理、内存管理和磁盘I/O优化等多个主题。这些脚本旨在帮助数据库管理员解决性能瓶颈,提高系统效率,确保业务的...
【Linux大内存页Oracle数据库优化】在现代数据中心中,Linux操作系统和Oracle数据库的组合成为主流选择,尤其是在高性能和经济性的双重驱动下。64位CPU的普及,Intel和AMD的持续创新,使得服务器的处理能力大幅提升...
Oracle数据库优化是数据库管理员日常工作中至关重要的一环,尤其是在Oracle 10g这样的企业级数据库系统中。优化不仅仅是针对SQL语句的改进,而是涵盖了整个数据库系统,包括硬件、操作系统、数据库配置以及应用设计...
- **CPU和IO负载**:适当的内存配置可以显著减少CPU和I/O负担,如通过增大Buffer Cache来降低磁盘读取次数,优化排序和哈希操作的PGA分配等。 - **错误处理**:常见的内存错误,如ORA-04030和ORA-04031,通常指示...
### Oracle优化特有策略 Oracle数据库提供了丰富的工具和特性,用于实现高效的SQL执行。 #### 1. 使用并行查询 Oracle支持并行查询,可以显著加速大规模数据处理。通过合理设置并行度,利用多核处理器优势。 ###...
#### 一、Oracle优化概述 **Oracle优化**主要是指通过一系列的技术手段来提升Oracle数据库系统的性能,包括但不限于SQL语句优化、PL/SQL程序优化、索引设计、表结构优化等多方面的内容。Oracle优化的目标是为了提高...
- **Oracle实例**:是访问数据库的一种方式,每个实例只对应一个数据库,主要由内存结构(SGA)和后台进程组成。 - **SGA(System Global Area)**:系统全局区,是Oracle实例的主要组成部分之一,用于存储共享的...
Oracle 12c Release 2 (12.2.0.1) 是一款先进的关系型数据库管理系统,提供了诸多性能优化和管理功能。在RHEL 7.4操作系统环境下,为了确保Oracle数据库高效运行,需要对一系列系统参数进行适当的配置。以下是一些...
《Oracle_IO_性能调优手册》是一本专为IT专业人士准备的深度指南,主要关注如何优化Oracle数据库的I/O性能。在Oracle数据库管理中,I/O性能是影响系统整体效率的关键因素,尤其对于大规模数据处理和高并发业务场景至...
总结来说,Oracle数据库的优化是一个全方位的过程,涵盖了硬件平台、数据库设计、SQL执行和内存管理等多个层面。通过综合考虑并针对性地调整这些方面,可以显著提升数据库的运行效率和服务质量。
`sar -u 2 10`命令会每两秒收集一次数据,总共收集十次。观察%usr、%sys、%wio和%idle这四个指标,%wio表示CPU等待IO操作完成的比例,如果这个值过高,说明可能存在IO瓶颈。如果%idle值较低,表明CPU忙碌,可能是...