Oracle优化 -- 关于Database Buffer Cache相关参数DB_CACHE_SIZE的优化设置

select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v$db_cache_advice 
  2      where block_size='8192' and advice_status='ON';

中,size_for_estimate表示预计的数据库高速缓冲区的大小(即:db_cache_size的值)。ESTD_PHYSICAL_READS表示预计的物理读。

当增加数据库高速缓冲区的的时候,物理读(ESTD_PHYSICAL_READS)越少,说明命中率越高。

 

 

 

1.优化缓冲区大小、提高服务器的命中率
db_cache_size                        big integer 838860800
2.查看缓冲区命中率是否需要调优.

select 1 - ((physical.value - direct.value - lobs.value) / logical.value)
     "Buffer Cache Hit Ratio"
  from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical
  where physical.name = 'physical reads'
  and direct.name='physical reads direct'
  and lobs.name='physical reads direct (lob)'
  and logical.name='session logical reads';
当命中率>90%说明命中率很高了

3。获取推荐的值
select name,size_for_estimate,v$db_cache_advice.ESTD_PHYSICAL_READS from v$db_cache_advice 
where block_size='8192' and advice_status='ON';

set linesize 1000
---20100619Oracle9i数据 Solaris 9i操作系统
SQL> set linesize 1000
SQL> select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v$db_cache_advice 
    where block_size='8192' and advice_status='ON';

SIZE_FOR_ESTIMATE BUFFERS_FOR_ESTIMATE ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS
----------------- -------------------- ------------------------- -------------------
               80                 9925                   28.9757          1436311200
              160                19850                    2.1053           104360120
              240                29775                    1.5819            78413087
              320                39700                    1.4262            70693980
              400                49625                    1.3543            67131735
              480                59550                     1.278            63349434
              560                69475                    1.1893            58954568
              640                79400                    1.1325            56135206
              720                89325                    1.0762            53347837
              800                99250                         1            49569438
              880               109175                     .7067            35030953

SIZE_FOR_ESTIMATE BUFFERS_FOR_ESTIMATE ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS
----------------- -------------------- ------------------------- -------------------
              960               119100                     .3991            19784701
             1040               129025                     .2305            11423374
             1120               138950                     .1927             9552903
             1200               148875                     .1506             7466278
             1280               158800                     .1501             7438186
             1360               168725                     .1501             7438186
             1440               178650                     .1501             7438186
             1520               188575                     .1501             7438186
             1600               198500                     .1501             7438186
SIZE_FOR_ESTIMATE  M 为单位:
当SIZE_FOR_ESTIMATE=80M 的时候 ESTD_PHYSICAL_READS=1436311200
当SIZE_FOR_ESTIMATE=1120M 的时候 ESTD_PHYSICAL_READS=9552903
当SIZE_FOR_ESTIMATE=1280M 的时候 ESTD_PHYSICAL_READS=7438186
之后ESTD_PHYSICAL_READS固定了
所以应该过大db_cache_size=1120M的值使得
4.修改发现DB_cache_size太大了。过大SGA区域解决
alter system set db_cache_size=1120M
--sga设置太小了导致
SQL>  alter system set db_cache_size=1120M;
alter system set db_cache_size=1120M
*
ERROR 位于第 1 行:
ORA-02097: 无法修改参数,因为指定的值无效
ORA-00384: 没有足够的内存来增加高速缓存的大小
之前的值
sga_max_size                         big integer 1494715120
SQL>alter system set SGA_MAX_SIZE=3500M scope=spfile;
系统已更改。

重新启动与关闭解决
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 3675756336 bytes
Fixed Size                   735024 bytes
Variable Size            2835349504 bytes
Database Buffers          838860800 bytes
Redo Buffers                 811008 bytes
数据库装载完毕。
数据库已经打开。
查看命中率\当前只有80的满足要求
SQL> select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v$db_cache_advice
  2      where block_size='8192' and advice_status='ON';

SIZE_FOR_ESTIMATE BUFFERS_FOR_ESTIMATE ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS
----------------- -------------------- ------------------------- -------------------
               80                 9925                         1                1528
              160                19850                         1                1528
              240                29775                         1                1528
              320                39700                         1                1528
              400                49625                         1                1528
              480                59550                         1                1528
              560                69475                         1                1528
              640                79400                         1                1528
              720                89325                         1                1528
              800                99250                         1                1528
              880               109175                         1                1528

SIZE_FOR_ESTIMATE BUFFERS_FOR_ESTIMATE ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS
----------------- -------------------- ------------------------- -------------------
              960               119100                         1                1528
             1040               129025                         1                1528
             1120               138950                         1                1528
             1200               148875                         1                1528
             1280               158800                         1                1528
             1360               168725                         1                1528
             1440               178650                         1                1528
             1520               188575                         1                1528
             1600               198500                         1                1528
命中率降低了?        
    SQL> select 1 - ((physical.value - direct.value - lobs.value) / logical.value)
  2       "Buffer Cache Hit Ratio"
  3    from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical
  4    where physical.name = 'physical reads'
  5    and direct.name='physical reads direct'
  6    and lobs.name='physical reads direct (lob)'
  7    and logical.name='session logical reads';

Buffer Cache Hit Ratio
----------------------
            .906673167

继续缩小SGA大小
SQL>alter system set SGA_MAX_SIZE=3000M scope=spfile;

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 3155661888 bytes
Fixed Size                   734272 bytes
Variable Size            2315255808 bytes
Database Buffers          838860800 bytes
Redo Buffers                 811008 bytes
数据库装载完毕。
数据库已经打开。
select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v$db_cache_advice 
    where block_size='8192' and advice_status='ON';


继续测试:等待30分钟之后测试
    SQL> alter system set db_cache_size=1120M;
   
    select 1 - ((physical.value - direct.value - lobs.value) / logical.value)
     "Buffer Cache Hit Ratio"
  from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical
  where physical.name = 'physical reads'
  and direct.name='physical reads direct'
  and lobs.name='physical reads direct (lob)'
  and logical.name='session logical reads';
  ---命中率逐渐的提高了
  ---半个小时之后查询命中率是98%
  SQL> select 1 - ((physical.value - direct.value - lobs.value) / logical.value)
  2       "Buffer Cache Hit Ratio"
  3    from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical
  4    where physical.name = 'physical reads'
  5    and direct.name='physical reads direct'
  6    and lobs.name='physical reads direct (lob)'
  7    and logical.name='session logical reads';

Buffer Cache Hit Ratio
----------------------
            .980309028
-----查询推荐的值
show parameter db_block_size
8192

select name,size_for_estimate,v$db_cache_advice.ESTD_PHYSICAL_READS from
v$db_cache_advice  where block_size='8192' and advice_status='ON';

NAME                 SIZE_FOR_ESTIMATE ESTD_PHYSICAL_READS
-------------------- ----------------- -------------------
DEFAULT                            112                9581
DEFAULT                            224                9514
DEFAULT                            336                9514
DEFAULT                            448                9514
DEFAULT                            560                9514
DEFAULT                            672                9514
DEFAULT                            784                9514
DEFAULT                            896                9514
DEFAULT                           1008                9514
DEFAULT                           1120                9514
DEFAULT                           1232                9514

NAME                 SIZE_FOR_ESTIMATE ESTD_PHYSICAL_READS
-------------------- ----------------- -------------------
DEFAULT                           1344                9514
DEFAULT                           1456                9514
DEFAULT                           1568                9514
DEFAULT                           1680                9514
DEFAULT                           1792                9514
DEFAULT                           1904                9514
DEFAULT                           2016                9514
DEFAULT                           2128                9514
DEFAULT                           2240                9514
显示只要112M大小的空间就可以稳定降低ESTD_PHYSICAL_READS
alter system set db_cache_size=112M
NAME                 SIZE_FOR_ESTIMATE ESTD_PHYSICAL_READS
-------------------- ----------------- -------------------
DEFAULT                             16                   0
DEFAULT                             32                   0
DEFAULT                             48                   0
DEFAULT                             64                   0
DEFAULT                             80                   0
DEFAULT                             96                   0
DEFAULT                            112                   0
DEFAULT                            128                   0
DEFAULT                            144                   0
DEFAULT                            160                   0
DEFAULT                            176                   0

NAME                 SIZE_FOR_ESTIMATE ESTD_PHYSICAL_READS
-------------------- ----------------- -------------------
DEFAULT                            192                   0
DEFAULT                            208                   0
DEFAULT                            224                   0
DEFAULT                            240                   0
DEFAULT                            256                   0
DEFAULT                            272                   0
DEFAULT                            288                   0
DEFAULT                            304                   0
DEFAULT                            320                   0
---查看命中率
  select 1 - ((physical.value - direct.value - lobs.value) / logical.value)
     "Buffer Cache Hit Ratio"
  from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical
  where physical.name = 'physical reads'
  and direct.name='physical reads direct'
  and lobs.name='physical reads direct (lob)'
  and logical.name='session logical reads';

Buffer Cache Hit Ratio
----------------------
            .982795739
说明Oracle更换峰值的情况决定db_cache_size的大小。
所以设置最大峰值满足的情况。
alter system set db_cache_size=1120M;满足峰值的时候最大值
select name,size_for_estimate,v$db_cache_advice.ESTD_PHYSICAL_READS from
v$db_cache_advice  where block_size='8192' and advice_status='ON';


oracle10g Solaris 10 sparc系统调整

--查
  select name,size_for_estimate,v$db_cache_advice.ESTD_PHYSICAL_READS from
v$db_cache_advice  where block_size='8192' and advice_status='ON';

-------------------- ----------------- -------------------
DEFAULT                            128             1206647
DEFAULT                            256             1067789
DEFAULT                            384              987752
DEFAULT                            512              965164
DEFAULT                            640              913815
DEFAULT                            768              893485
DEFAULT                            896              867321
DEFAULT                           1024              808884
DEFAULT                           1152              599909
DEFAULT                           1280              344618
--此时开始保持在一个稳定的读取值
alter system set db_cache_size=1196M

DEFAULT                           1296              321763

NAME                 SIZE_FOR_ESTIMATE ESTD_PHYSICAL_READS
-------------------- ----------------- -------------------
DEFAULT                           1408              285030
DEFAULT                           1536              280506
DEFAULT                           1664              280325
DEFAULT                           1792              279816
DEFAULT                           1920              266871
DEFAULT                           2048              235838
DEFAULT                           2176              231298
DEFAULT                           2304              228483
DEFAULT                           2432              224971
DEFAULT                           2560              219467
--修改
alter system set db_cache_size=1196M
--查看命中率
  select 1 - ((physical.value - direct.value - lobs.value) / logical.value)
     "Buffer Cache Hit Ratio"
  from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical
  where physical.name = 'physical reads'
  and direct.name='physical reads direct'
  and lobs.name='physical reads direct (lob)'
  and logical.name='session logical reads';

转载于:https://www.cnblogs.com/login2012/p/5752687.html

深入解析Oracle数据库Buffer Cache Buffer CacheOracle系统全局区(System Global Area, SGA)的一个重要组成部分,它位于服务器的物理内存中,是一个专门用来缓存从磁盘读取的数据块的区域。由于内存访问速度远高于磁盘,因此,通过将频繁访问或最近访问过的数据块保留在Buffer Cache中,Oracle可以显著减少对磁盘I/O的需求,从而极大地提高数据库查询和数据处理的速度。 阅读详情

相关推荐

详解Oracle数据库db_cache_size和granule_size

详解Oracle数据库db_cache_size和granule_size 摘取了官方文档的描述,用中文进行了分析

oracle 内存结构db_cache_size,Oracle专用服务器的内存结构分布原则

一般我们会把Oracle实例的内存用到系统物理内存的80%-60%(4G以上内存用到80%以上,2G内存用到60%-70%)s=pga+sga_max_size=80%memory (对于OLTP系统pga是sga的4分之1,如果是DSS,则可以各占一半)db_cache_size=60%sgashared_pool_size=sga_max_size-db_cache_size-160m 也可以...

weixin_30746795的博客 1197

关于Oracle数据库缓存大小设置

关于Oracle数据库缓存大小设置

欢迎朋友,我是一名十多年开发经验的新手,希望多多指教。 1275

Oracle基础知识--内存参数设置

 1.SGA区的大小  SGA=log_buffer + Large_pool_size + java_pool_size + shared_pool_size + Data buffer  SGA--原则:物理RAM的55%-58%;SGA不能太小,Oracle性能会差,但是也不能过大,影响操作系统正常运作。  log_buffer--原则:128K-1M 之间,不可太大 Large_pool_

qsxucsdn的专栏 2490

oracle是怎么分配sga的,如何进行ORACLESGA分配?

理论上SGA可占OS系统物理内存的1/2——1/3,我们可以根据需求调整我推荐SGA=0。45*(OS RAM)假设服务器运行ORACLE 8。1。X 版本, OS系统内存为2G MEM, db_block_size 是8192 bytes, 除了运行ORACLE数据库外, 没有其它的应用程序或服务器软件。这样SGA合计约为921M ( 0。45*2048M ),设shared_pool_size...

weixin_35905707的博客 386

oracle 内存三 data buffer

Data Buffer是什么 Data Bufferoracle的数据缓存。位于SGA中。当Oracle从硬盘上读取了一段应用数据后,会把这段数据存在Data Buffer中。因为Oracle认为如果一个数据被使用过,那么下次使用它的可能性会很大,所以放在缓存中,下次就可以直接从缓存中提取,不必去从硬盘中提取,因为计算机对内存的访问速度远远高于硬盘。Oracle在读取一个数据的时候默认的顺序也

BHR_kramer的专栏 4483

linux cache 优化,Oracle Buffer Cache优化思路

最近看了几页书,做个笔记,拷贝Oracle官方文档上的一段话,当然Buffer Cache远不止这些,只是看英文的确速度好慢的,我现在最想说的一句话是:我需要更多的时间。最近杂事太多,没多少自己能够支配的时间。什么时候我能够非常流利的看英文呢?step by step 了,太多细节的东西只能从官方文档上获知,的确是个金库的东西,自己却拿不出金子来,step by step !Database Bu...

weixin_33895274的博客 295

postgresql 数据库 优化需要懂得几个参数

数据库优化是非常重要的。不管对系统还是别的,一个优化后的数据库的前后对比非常明显,而数据库又该如何优化呢?我认为可以分为俩部分:一 数据库系统配置优化二 sql的优化。本文主要是讲 数据库系统配置优化的几个关键参数

yang_z_1的博客 2611

Oracle buffer cache的内部结构

Oracle 9i中,它占188个字节。从Oracle 9i开始,Oracle允许存在不同数据块大小的BUFFER CACHE(分别用数据库参数DB_nK_CACHE_SIZE设置),这也就意味着相同大小的GRANULE可以包含不同数量的数据块,但是对于DEFAULT BUFFER POOL、KEEP BUFFER POOL、RECYCLE BUFFER POOL,则只能使用默认的数据块大小。在Oracle数据库中,组成数据文件的最小原子单位是数据块,在同一个数据库中可以有不同的BLOCK SIZE

weixin_46593978的博客 486

oracle 10g中db_cache_size

sql> show parameter cache_size    // 查看db_cache_size大小      数据块缓冲缓存区(Data block buffers cache): Data buffers在8i中是Db_block_buffers*Db_block_size, 9ie及以后版本用Db_cache_size来代替这个参数。 而10G中,这个参数是由oracle本身自

ljasdf123的专栏 4321

Oracle10g数据缓冲区(DB_CACHE_SIZE

数据块缓冲缓存区(Data block buffers cache): Data buffers在8i中是Db_block_buffers*Db_block_size, 9ie及以后版本用Db_cache_size来代替这个参数。 而10G中,这个参数是由oracle本身自动管理的,可以不用手工设置。 在内存的配置中把别的参数设置完成后,应该把...

anreddy 248

数据库优化 - 实例优化

从网上去搜数据库优化基本都是从SQL层次进行优化的,很少有提及到数据库本身的实例优化。就算有也都是基于某个特定数据库的实例优化,本文涵盖目前市面上所有主流数据库的实例优化(Oralce、MySQL、POSTGRES、达梦),按照文章的配置能够将你数据库性能用到80%或以上。 数据库优化方法论 这部分为理论知识,不感兴趣的同学可以直接跳到后面参数配置部分。 数据库优化目标 根据角色...

飘渺Jam的博客 5294

Oracle调优之buffer pool相关

一个oracle block与data buffer中的一个buffer对应。 用户进程(server process)负责读取磁盘上的block到data buffer cache中,DEWn进程负责将脏块写到磁盘上。 一个buffer在data buffer中有4种状态 pined...

chuifuhuo6864的博客 541

sga的组成 简述oracle_【Oracle数据库之体系结构SGA】

1.shared pool 共享池设置大小的参数:SHARED_POOL_SIZE包含:library cahce 库高速缓存区大小由共享池决定。包含:SQL 语句和SQLPLUS 文本,分析代码,执行计划存储目的:与性能有关。当两个语句相同的时候不需要重新分析,使用相同的执行计划即可。管理方法:采用 LRU (最近使用算法)least recent used 当空间不足的时候,使用LRU。结构:...

weixin_34521244的博客 299

数据库Oracle内存结构与参数调优

操作系统层面,默认情况下内存页大小通常为4KB。大页是一种内存管理机制,将标准内存页尺寸增大,例如从4KB改为2MB。使用大页可以减少TLB(Translation Lookaside Buffer)未命中的情况,从而降低页交换频率和I/O开销,提高系统的性能,特别是在大规模内存管理和Oracle数据库等场景下。

FixPng的博客 4935

看完还不会数据库优化,你来找我!

总的来说,面试是有套路的,一面基础,二面架构,三面个人。最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!” />总的来说,面试是有套路的,一面基础,二面架构,三面个人。最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友[外链图片转存中…(img-yNQGbLGN-1712492717727)]

2301_82242670的博客 1141

数据库优化 - 实例参数优化

一个新安装的数据库使用默认的参数配置,那么数据库的性能很难达到生产要求。要想更好的发挥数据库性能,对数据库参数优化是必不可少的。本文涵盖目前市面上所有主流数据库优化配置(Oralce、...

weixin_44742132的博客 566

数据库存储与 I/O 参数优化

内存设置配置或分别设置SGA_TARGET和根据工作负载类型调整 SGA/PGA 比例考虑启用 12c+ In-Memory 选项用于分析负载I/O 设置配置合适的启用异步 I/O优化重做日志大小和配置设置合适的版本特定优化根据版本调整隐藏参数启用 SecureFiles for LOBs (11g+)配置高优先级进程 (19c)

m0_37873601的博客 497
上一篇: 【PHP】月末・月初の出力方法
下一篇: 欧拉图
weixin_30240349
博客等级 码龄11年 110粉丝 1403原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值