`
have23
  • 浏览: 44364 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

记Oracle数据库的一次调优

阅读更多


操作系统

 

 

 

数据库

 

 

 

问题

 

当程序部署到这个系统之后,发现应用运行效率很差。一般这种情况,多数问题出现在应用这一端。但负责此项目的程序员告诉我,当他在上面truncate一张小表 (10w以内数据)要花400多秒,我觉得数据库应该是有一定问题的。

 

排查问题

 

查看告警日期

  admin/orcl/bdump/alert_orcl.log 

  发现出现大量

    Thread 1 cannot allocate new log

  Checkpoint not complete 

 

 

处理这个问题,我是有经验的。一般来说是增大日志文件或者增加日志组。按照以往的

 

经验,我把redo log file size 从50M增加到100M,并新增了3个日志组

 

为了方便监控

 

alter system set log_checkpoints_to_alert=true scope=both

 

增加日志组与日志文件后,发现告警仍旧存在。处理事务时仍然出现长时间等待。

 

出现Checkpoint not complete,一般是由于日志增长太快,Checkpoint 没有及时完成

 

导致的。发生日志切换时,LGWR进程停止写日志到当前日志文件,关闭日志文件,打开新的

 

日志文件并写日志缓存中的数据到新的日志文件.当前日志文件组A切换到日志文件组B,A的

 

状态从current变成active。B从inactive变成current并触发checkpoint事件,checkpoint会

 

记录此时的RBA,并将此RBA之前buffer cache中的脏块到数据文件当中去.当Checkpoint完

 

成,A的状态从active变成inactive.

 

  当A处于Active模式,B发生日志切换到A。那么就会出现

 

        Thread 1 cannot allocate new log

Checkpoint not complete 

 

        从而导致当前事务等待,导致性能问题。


        解决此问题:

        1.增加日志组,增长写日志组的循环时间。

        2.增加日志文件大小,减少日志切换。


     但为什么,我增加这些后。基本没有效果不明显呢?于是我测首先测了下机器的IO吞吐量。

 

测试写入:time dd if=/dev/zero of=/home/test.dbf bs=8k count=300000


 

写入速度,48.7MB/s


使用Bonnie++进行系统IO性能测试


 

字符写入速度 34797K/sec block写入速度40736K/sec。3块硬盘做了raid5有这个速度,应该

 

还算可以吧。


第二,查看了下具体事务产生的redo log size

 

1.自数据库启动以后所产生日志大小

 

select name,value/1024/1024 from v$sysstat where name like 'redo size';

 

2.当前session所产生的日志大小

 

select a.name,b.value/1024.00/1024.00

from v$statname a,v$mystat b

where a.statistic#=b.statistic# and a.name='redo size';


在具体业务中,400秒内竟然产生了1.1G的日志量。按照100M大小的日志文件,6组。很容易

 

就在很短时间内就写完一个日志循环,造成checkpoint not complete.

 

 

解决问题

 

1.增加日志文件大小到600M,日志组10组

alter database add logfile group 1 ('/orasvr/oradata/orcl/redo01.log') size 600M;
alter database add logfile group 2 ('/orasvr/oradata/orcl/redo02.log') size 600M;
alter database add logfile group 3 ('/orasvr/oradata/orcl/redo03.log') size 600M;
alter database add logfile group 4 ('/orasvr/oradata/orcl/redo04.log') size 600M;
alter database add logfile group 5 ('/orasvr/oradata/orcl/redo05.log') size 600M;
alter database add logfile group 6 ('/orasvr/oradata/orcl/redo06.log') size 600M;
alter database add logfile group 7 ('/orasvr/oradata/orcl/redo07.log') size 600M;
alter database add logfile group 8 ('/orasvr/oradata/orcl/redo08.log') size 600M;
alter database add logfile group 9 ('/orasvr/oradata/orcl/redo09.log') size 600M;
alter database add logfile group 10 ('/orasvr/oradata/orcl/redo10.log') size 600M;

3.开启异步读写,加快DBWR效率,加快checkpoint完成

可以参考http://wangwei.cao.blog.163.com/blog/static/10236252620108323337465/

 

 

后续跟踪

   无告警日志出现,性能问题得到解决

 

 

 

 

 

  • 大小: 19.9 KB
  • 大小: 27.2 KB
  • 大小: 49 KB
  • 大小: 14.1 KB
  • 大小: 46.7 KB
分享到:
评论

相关推荐

    Oracle数据库内存参数调优技术的个人总结.txt

    在IT领域,尤其是在数据库管理与优化方面,Oracle数据库内存参数的调整是一项至关重要的技能。本文将根据提供的文件信息,深入探讨“Oracle数据库内存参数调优技术的个人总结”中的核心知识点,包括理解Oracle数据库...

    Oracle数据库内存参数调优.pdf

    Oracle数据库的内存参数调优是一个复杂的过程,需要根据数据库的实际情况和性能瓶颈来进行调整。通过对Oracle数据库的内存参数进行调优,可以提高数据库的性能和响应速度,减少系统的开销,提高用户体验和满意度。

    Oracle数据库编程调优手册

    Oracle数据库编程调优手册是一本针对数据库开发者和管理员的重要参考资料,旨在帮助他们提升Oracle数据库的性能和效率。手册涵盖了多个关键领域,包括数据加载优化、UPDATE语句的优化、DELETE操作的改进、DBA级别的...

    浅谈Oracle数据库的性能调优.pdf

    浅谈Oracle数据库的性能调优.pdf

    Oracle数据库性能调优

    整理的比较详细的Oracle数据库性能调优文档,从sql执行原理上分析调优的过程,希望对大家的Oracle数据库开发有所帮助

    Oracle数据库应用系统调优方法介绍

    总的来说,Oracle数据库应用系统调优是一个多维度的过程,涉及到硬件、操作系统、数据库配置、网络和应用程序等多个层面。通过对这些方面的综合调整,可以显著提高系统的响应速度和处理能力,从而满足日益增长的数据...

    Oracle数据库内存参数调优技术

    总之,Oracle数据库内存参数调优是一个复杂且关键的任务,需要根据系统的实际工作负载和硬件资源来精心配置。通过合理的内存分配,可以显著提升Oracle数据库的性能,减少延迟,提高用户满意度。在实践中,不断监控和...

    oracle数据库调优配置

    ### Oracle数据库调优配置:两种方案详解 在企业级应用中,Oracle数据库因其稳定性和高效性而被广泛采用。然而,随着数据量的急剧增长和业务需求的不断变化,优化Oracle数据库性能成为确保系统高效运行的关键。本文...

    盖国强_提升百倍效率-Oracle数据库性能极限调优

    ### 盖国强_提升百倍效率-Oracle数据库性能极限调优 #### 一、盖国强简介 盖国强,国内第一位Oracle ACE及ACE总监,这一称号代表着Oracle对外部专家所能授予的最高荣誉。拥有超过10年的Oracle从业经验,并且依然...

    Oracle数据库应用系统调优方法

    Oracle数据库服务器是整个系统的核心,它的性能高低直接影响整个系统的性能,为了调整Oracle数据库服务器的性能,主要从以下几个方面考虑:调整操作系统以适合Oracle数据库服务器运行、调整内存分配、调整磁盘 I/O、...

    Oracle_RDA数据库诊断调优工具配置使用手册

    Oracle RDA 是一款功能强大的数据库诊断调优工具,旨在帮助数据库管理员快速诊断和优化 Oracle 数据库的性能。下面是 Oracle RDA 数据库诊断调优工具的配置使用手册。 一、RDA 安装 1. 下载 RDA 安装包:RDA ...

    ORACLE数据库性能调优视频教程详细完整版

    第一章:oracle资源管理 第二章:oracle任务调度 第三章:AWR及顾问框架 第四章:自动维护任务 第五章:预警及诊断系统 第六章:Optimizer策略与管理 第七章:oracle内存管理 第八章:11g其他新特性 第九章:性能...

    oracle数据库性能调优(3)

    本篇将继续深入探讨Oracle数据库性能调优的诸多方面,重点关注于嵌套循环执行计划,这是数据库多表操作中常见的连接方式之一。 首先,了解单表执行计划是理解多表执行计划的基础,单表执行计划涉及到了对单个表进行...

    Oracle数据库查询调优

    在Oracle数据库中,查询调优是提高系统性能的关键环节之一。随着数据量的增长和技术的进步,优化查询变得日益重要。本篇将详细介绍如何识别问题、收集数据、分析问题,并确定解决方案。 #### 二、识别问题 ##### 1....

    Oracle10g数据库性能调优方法研究.docx

    - **内核参数**:调整操作系统级别的参数,如文件描述符限制、内存分配等,以适应Oracle数据库的需求。 - **文件系统参数**:优化文件系统的配置,如文件系统缓存大小等。 #### 4. 结论 通过对Oracle10g数据库的...

    oracle 数据库性能调优

    ### Oracle数据库性能调优:深度解析与实践指南 在企业级应用中,Oracle...总之,Oracle数据库性能调优是一个既科学又艺术的过程,需要结合理论知识与实践经验,不断探索和优化,以实现最佳的数据库性能和应用效率。

    Oracle数据库编程调优手册.doc

    总之,Oracle数据库调优是一个综合性的过程,需要结合SQL编写、索引设计、表结构优化、存储参数调整等多个方面。通过理解这些技巧,开发者和DBA可以显著提高Oracle数据库的运行效率和响应速度,从而提升整体系统性能...

    Oracle数据库调优.doc

    Oracle数据库调优 Oracle数据库调优是指对Oracle数据库的性能进行优化,以提高数据库的运行效率和稳定性。下面是Oracle数据库调优的知识点: 1. 优化的思路:什么时候开始做优化,什么时候不做?找出瓶颈所在 在...

Global site tag (gtag.js) - Google Analytics