`
liaobuzhisi
  • 浏览: 71183 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
文章分类
社区版块
存档分类
最新评论

一些关于oracle SGA 优化的技巧

 
阅读更多

一、SGA

1Shared pool tunning

Shared pool的优化应该放在优先考虑,因为一个cache missshared pool中发生比在data buffer中发生导致的成本更高,由于dictionary数据一般比library cache中的数据在内存中保存的时间长,所以关键是library cache的优化。

Gets:(parse)在namespace中查找对象的次数;

Pins:(execution)在namespace中读取或执行对象的次数;

Reloads(reparse)在执行阶段library cache misses的次数,导致sql需要重新解析。

1) 检查v$librarycachesql areagethitratio是否超过90%,如果未超过90%,应该检查应用代码,提高应用代码的效率。

Select gethitratio from v$librarycache where namespace=’sql area’;

 

2) v$librarycachereloads/pins的比率应该小于1%,如果大于1%,应该增加参数shared_pool_size的值。

Select sum(pins) “executions”,sum(reloads) “cache misses”,sum(reloads)/sum(pins) from v$librarycache;

 

reloads/pins>1%有两种可能,一种是library cache空间不足,一种是sql中引用的对象不合法。

 

3shared pool reserved size一般是shared pool size10%,不能超过50%。V$shared_pool_reserved中的request misses0或没有持续增长,或者free_memory大于shared pool reserved size50%,表明shared pool reserved size过大,可以压缩。

 

4)将大的匿名pl/sql代码块转换成小的匿名pl/sql代码块调用存储过程。

 

5)从9i开始,可以将execution plansql语句一起保存在library cache中,方便进行性能诊断。从v$sql_plan中可以看到execution plans

 

6)保留大的对象在shared pool中。大的对象是造成内存碎片的主要原因,为了腾出空间许多小对象需要移出内存,从而影响了用户的性能。因此需要将一些常用的大的对象保留在shared pool中,下列对象需要保留在shared pool中:

a.    经常使用的存储过程;

b.    经常操作的表上的已编译的触发器

c.    Sequence,因为Sequence移出shared pool后可能产生号码丢失。

查找没有保存在library cache中的大对象:

Select * from v$db_object_cache where sharable_mem>10000 and type in ('PACKAGE','PROCEDURE','FUNCTION','PACKAGE BODY') and kept='NO';

将这些对象保存在library cache中:

Execute dbms_shared_pool.keep(‘package_name’);

对应脚本:dbmspool.sql

 

7)查找是否存在过大的匿名pl/sql代码块。两种解决方案:

    A.转换成小的匿名块调用存储过程

    B.将其保留在shared pool

查找是否存在过大的匿名pl/sql块:

Select sql_text from v$sqlarea where command_type=47 and length(sql_text)>500;

 

8Dictionary cache 优化

避免出现Dictionary cachemisses,或者misses的数量保持稳定,只能通过调整shared_pool_size来间接调整dictionary cache的大小。

 

Percent misses应该很低:大部分应该低于2%,合计应该低于15

Select sum(getmisses)/sum(gets) from v$rowcache;

若超过15%,增加shared_pool_size的值。

2Buffer Cache

1granule大小的设置,db_cache_size以字节为单位定义了default buffer pool的大小。

如果SGA<128Mgranule=4M,否则granule16M,即需要调整sga的时候以granule为单位增加大小,并且sga的大小应该是granule的整数倍。

 

2) 根据v$db_cache_advice调整buffer cache的大小

SELECT size_for_estimate,buffers_for_estimate,estd_physical_read_factor,estd_physical_reads FROM v$db_cache_advice WHERE NAME='DEFAULT' AND advice_status='ON'  AND block_size=(SELECT Value FROM v$parameter WHERE NAME='db_block_size');

 

estd_physical_read_factor<=1

 

3) 统计buffer cachecache hit ratio>90%,如果低于90%,可以用下列方案解决:

增加buffer cache的值;

使用多个buffer pool

Cache table

sorting and parallel reads 建独立的buffer cache

 

SELECT NAME,value FROM v$sysstat WHERE NAME IN ('session logical reads','physical reads','physical reads direct','physical reads direct(lob)');

 

Cache hit ratio=1-(physical reads-physical reads direct-physical reads direct (lob))/session logical reads;

 

Select 1-(phy.value-dir.value-lob.value)/log.value from v$sysstat log, v$sysstat phy, v$sysstat dir, v$sysstat LOB where log.name='session logical reads' and phy.name='physical reads' and dir.name='physical reads direct' and lob.name='physical reads direct (lob)';

 

影响cache hit ratio的因素:

全表扫描;应用设计;大表的随机访问;cache hits的不均衡分布

 

4)表空间使用自动空间管理,消除了自由空间列表的需求,可以减少数据库的竞争

3、其他SGA对象

1redo log buffer

对应的参数是log_buffer,缺省值与 OS相关,一般是500K。检查v$session_wait中是否存在log buffer wait,v$sysstat中是否存在redo buffer allocation retries

 

A、检查是否存在log buffer wait

Select * from v$session_wait where event=’log buffer wait’ ;

如果出现等待,一是可以增加log buffer的大小,也可以通过将log 文件移到访问速度更快的磁盘来解决。

 

BSelect name,value from v$sysstat where name in (‘redo buffer allocation retries’,’redo entries’)

Redo buffer allocation retries接近0,小于redo entries 1%,如果一直在增长,表明进程已经不得不等待redo buffer的空间。如果Redo buffer allocation retries过大,增加log_buffer的值。

 

C、检查日志文件上是否存在磁盘IO竞争现象

Select event,total_waits,time_waited,average_wait from v$system_event where event like ‘log file switch completion%’;

如果存在竞争,可以考虑将log文件转移到独立的、更快的存储设备上或增大log文件。

 

D、检查点的设置是否合理

检查alert.log文件中,是否存在‘checkpoint not complete’;

Select event,total_waits,time_waited,average_wait from v$system_event where event like ‘log file switch (check%’;

 

如果存在等待,调整log_checkpoint_intervallog_checkpoint_timeout的设置。

 

E、检查log archiver的工作

Select event,total_waits,time_waited,average_wait from v$system_event where event like ‘log file switch (arch%’;

 

如果存在等待,检查保存归档日志的存储设备是否已满,增加日志文件组,调整log_archiver_max_processes

 

FDB_block_checksum=true,因此增加了性能负担。(为了保证数据的一致性,oracle的写数据的时候加一个checksumblock上,在读数据的时候对checksum进行验证)

 

2java pool

对于大的应用,java_pool_size>=50M,对于一般的java存储过程,缺省的20M已经够用了。

3)检查是否需要调整DBWn

Select total_waits from v$system_event where event=’free buffer waits’;

分享到:
评论

相关推荐

    pandas-1.3.5-cp37-cp37m-macosx_10_9_x86_64.zip

    pandas whl安装包,对应各个python版本和系统(具体看资源名字),找准自己对应的下载即可! 下载后解压出来是已.whl为后缀的安装包,进入终端,直接pip install pandas-xxx.whl即可,非常方便。 再也不用担心pip联网下载网络超时,各种安装不成功的问题。

    基于java的大学生兼职信息系统答辩PPT.pptx

    基于java的大学生兼职信息系统答辩PPT.pptx

    基于java的乐校园二手书交易管理系统答辩PPT.pptx

    基于java的乐校园二手书交易管理系统答辩PPT.pptx

    tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl

    tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl

    Android Studio Ladybug(android-studio-2024.2.1.10-mac.zip.002)

    Android Studio Ladybug 2024.2.1(android-studio-2024.2.1.10-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/89954174 part2: https://download.csdn.net/download/weixin_43800734/89954175

    基于ssm框架+mysql+jsp实现的监考安排与查询系统

    有学生和教师两种角色 登录和注册模块 考场信息模块 考试信息模块 点我收藏 功能 监考安排模块 考场类型模块 系统公告模块 个人中心模块: 1、修改个人信息,可以上传图片 2、我的收藏列表 账号管理模块 服务模块 eclipse或者idea 均可以运行 jdk1.8 apache-maven-3.6 mysql5.7及以上 tomcat 8.0及以上版本

    tornado-6.1b2-cp38-cp38-macosx_10_9_x86_64.whl

    tornado-6.1b2-cp38-cp38-macosx_10_9_x86_64.whl

    Android Studio Ladybug(android-studio-2024.2.1.10-mac.zip.001)

    Android Studio Ladybug 2024.2.1(android-studio-2024.2.1.10-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/89954174 part2: https://download.csdn.net/download/weixin_43800734/89954175

    基于MATLAB车牌识别代码实现代码【含界面GUI】.zip

    matlab

    基于java的毕业生就业信息管理系统答辩PPT.pptx

    基于java的毕业生就业信息管理系统答辩PPT.pptx

    基于Web的毕业设计选题系统的设计与实现(springboot+vue+mysql+说明文档).zip

    随着高等教育的普及和毕业设计的日益重要,为了方便教师、学生和管理员进行毕业设计的选题和管理,我们开发了这款基于Web的毕业设计选题系统。 该系统主要包括教师管理、院系管理、学生管理等多个模块。在教师管理模块中,管理员可以新增、删除教师信息,并查看教师的详细资料,方便进行教师资源的分配和管理。院系管理模块则允许管理员对各个院系的信息进行管理和维护,确保信息的准确性和完整性。 学生管理模块是系统的核心之一,它提供了学生选题、任务书管理、开题报告管理、开题成绩管理等功能。学生可以在此模块中进行毕业设计的选题,并上传任务书和开题报告,管理员和教师则可以对学生的报告进行审阅和评分。 此外,系统还具备课题分类管理和课题信息管理功能,方便对毕业设计课题进行分类和归档,提高管理效率。在线留言功能则为学生、教师和管理员提供了一个交流互动的平台,可以就毕业设计相关问题进行讨论和解答。 整个系统设计简洁明了,操作便捷,大大提高了毕业设计的选题和管理效率,为高等教育的发展做出了积极贡献。

    机器学习(预测模型):2000年至2015年期间193个国家的预期寿命和相关健康因素的数据

    这个数据集来自世界卫生组织(WHO),包含了2000年至2015年期间193个国家的预期寿命和相关健康因素的数据。它提供了一个全面的视角,用于分析影响全球人口预期寿命的多种因素。数据集涵盖了从婴儿死亡率、GDP、BMI到免疫接种覆盖率等多个维度,为研究者提供了丰富的信息来探索和预测预期寿命。 该数据集的特点在于其跨国家的比较性,使得研究者能够识别出不同国家之间预期寿命的差异,并分析这些差异背后的原因。数据集包含22个特征列和2938行数据,涉及的变量被分为几个大类:免疫相关因素、死亡因素、经济因素和社会因素。这些数据不仅有助于了解全球健康趋势,还可以辅助制定公共卫生政策和社会福利计划。 数据集的处理包括对缺失值的处理、数据类型转换以及去重等步骤,以确保数据的准确性和可靠性。研究者可以使用这个数据集来探索如教育、健康习惯、生活方式等因素如何影响人们的寿命,以及不同国家的经济发展水平如何与预期寿命相关联。此外,数据集还可以用于预测模型的构建,通过回归分析等统计方法来预测预期寿命。 总的来说,这个数据集是研究全球健康和预期寿命变化的宝贵资源,它不仅提供了历史数据,还为未来的研究和政策制

    基于微信小程序的高校毕业论文管理系统小程序答辩PPT.pptx

    基于微信小程序的高校毕业论文管理系统小程序答辩PPT.pptx

    基于java的超市 Pos 收银管理系统答辩PPT.pptx

    基于java的超市 Pos 收银管理系统答辩PPT.pptx

    基于java的网上报名系统答辩PPT.pptx

    基于java的网上报名系统答辩PPT.pptx

    基于java的网上书城答辩PPT.pptx

    基于java的网上书城答辩PPT.pptx

    婚恋网站 SSM毕业设计 附带论文.zip

    婚恋网站 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B

    基于java的戒烟网站答辩PPT.pptx

    基于java的戒烟网站答辩PPT.pptx

    基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx

    基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx

    机器学习(预测模型):自行车共享使用情况的数据集

    Capital Bikeshare 数据集是一个包含从2020年5月到2024年8月的自行车共享使用情况的数据集。这个数据集记录了华盛顿特区Capital Bikeshare项目中自行车的租赁模式,包括了骑行的持续时间、开始和结束日期时间、起始和结束站点、使用的自行车编号、用户类型(注册会员或临时用户)等信息。这些数据可以帮助分析和预测自行车共享系统的需求模式,以及了解用户行为和偏好。 数据集的特点包括: 时间范围:覆盖了四年多的时间,提供了长期的数据观察。 细节丰富:包含了每次骑行的详细信息,如日期、时间、天气条件、季节等,有助于深入分析。 用户分类:数据中区分了注册用户和临时用户,可以分析不同用户群体的使用习惯。 天气和季节因素:包含了天气情况和季节信息,可以研究这些因素对骑行需求的影响。 通过分析这个数据集,可以得出关于自行车共享使用模式的多种见解,比如一天中不同时间段的使用高峰、不同天气条件下的使用差异、季节性变化对骑行需求的影响等。这些信息对于城市规划者、交通管理者以及自行车共享服务提供商来说都是非常宝贵的,可以帮助他们优化服务、提高效率和满足用户需求。同时,这个数据集也

Global site tag (gtag.js) - Google Analytics