我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle 11g buffer cache的设置

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle 11g buffer cache的设置

查看buffer cache的大小:
SQL> SELECT component,current_size,min_size FROM v$sga_dynamic_components;


COMPONENT                                                        CURRENT_SIZE   MIN_SIZE
---------------------------------------------------------------- ------------ ----------
shared pool                                                        5570035712 5301600256
large pool                                                           67108864   67108864
java pool                                                            67108864   67108864
streams pool                                                         67108864   67108864
DEFAULT buffer cache                                               1.1409E+10 1.1140E+10
KEEP buffer cache                                                           0          0
RECYCLE buffer cache                                                        0          0
DEFAULT 2K buffer cache                                                     0          0
DEFAULT 4K buffer cache                                                     0          0
DEFAULT 8K buffer cache                                                     0          0
DEFAULT 16K buffer cache                                                    0          0
DEFAULT 32K buffer cache                                                    0          0
Shared IO Pool                                                              0          0
ASM Buffer Cache                                                            0          0
14 rows selected.


SQL> show parameter sga


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 16512M
sga_target                           big integer 16512M
SQL> show parameter db_cache_size


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_cache_size                        big integer 0
db_cache_size的设置的值为默认值0,说明没有设置大小,用的全是由SGA自动调整

这里可以看到buffer cache是系统自己自动分配的,大概是10880MB。


举个例子:

现在改一下
alter system set db_cache_size=200M scope=both;

SQL> alter system set db_cache_size=200M scope=both;
alter system set db_cache_size=200M scope=both
*
ERROR at line 1:
ORA-32017: failure in updating SPFILE
ORA-00384: Insufficient memory to grow cache
结果显示没有足够的内存去增加

就是sga_target已经就这么大了,都分完了
都分给各个池子了
这时要把DEFAULT buffer cache的值增加
要增加这个buffercache池子的大小的话
首先增加sga的大小


这地方首先说一下思路
首先增加sga_max_size大小
然后再增加sga_target
最后再增加db_cache_size


语句分别为

alter system set sga_max_size=500M scope=spfile;
alter system set sga_target=400M;
alter system set db_cache_size=200M;

其中的scope选项有三个可取值


scope=spfile
表示将参数值存入spfile文件,即改变oracle的初始化参数文件内容,在重启数据库后才能生效
scope=memory
表示改变正在内存中运行的实例的参数值,只在内存上修改,立即生效,
关闭实例此值就会丢失而被还原为原已保存的值,因为这个修改并没有写入到初始化参数文件
scope=both
表示将参数值同时存入spfile和memory,立即生效,因为存入了spfile重启数据库后仍然有效。


both是默认值,修改静态参数必须使用spfile,动态参数三种方式都可以用。


spfile文件的位置
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/product/10.2.0
                                                 /db_1/dbs/spfilejiagulun.ora

为了保护数据库的安全有的参数进行了保护把它指定为静态状态
修改值时要加额外参数并且要数据库重启才能生效
但大部分参数是动态的可以随时修改随时生效
sga_max_size是静态参数,sga_target和db_cache_size是动态参数


这三个参数目前值
sga_max_size                         big integer 272M
sga_target                           big integer 272M
db_cache_size                        big integer 0
因为sga_max_size和sga_target当前值相同
所以这里必须先修改sga_max_size并重启数据库后
才能继续修改sga_target的值使其增加
在sga有足够空间时才能增加db_cache_size的值


我的修改过程
在sga_target把值增加后就会立即自动把剩余的空间全部分配给db_cache_size
以为是因为db_cache_size使用默认值0,
但手工对db_cache_size分配值后效果仍然一样。


在修改db_cache_size的值时


增加时是有限制的
sga要根据当前所有的状态值分析有没有足够的空间满足这个增大的值


减少时一般没限制
因为这个值即使设置小了但sga仍使用自动分配空间分配给db_cache_size
一般真实值不会减少,仍保持在合理状态


设置buffer cache的合理值:
SELECT size_for_estimate "Cache Size (MB)",size_factor,buffers_for_estimate "Buffers",
estd_physical_read_factor est_read_factor,
estd_physical_reads estd_phy_red,estd_physical_read_time est_phy_red_t
FROM  v$db_cache_advice
WHERE NAME='DEFAULT' AND block_size=(SELECT VALUE FROM v$parameter WHERE NAME='db_block_size');
Cache Size (MB) SIZE_FACTOR    Buffers EST_READ_FACTOR ESTD_PHY_RED EST_PHY_RED_T
--------------- ----------- ---------- --------------- ------------ -------------
           1088          .1     128520         12.0303   5839773844      10813098
           2176          .2     257040          4.7929   2326564251       3913685
           3264          .3     385560          2.4136   1171610058       1645529
           4352          .4     514080          1.5546    754629867        826643
           5440          .5     642600          1.2682    615616449        553642
           6528          .6     771120          1.1589    562544805        449417
           7616          .7     899640          1.0981    533021196        391437
           8704          .8    1028160          1.0541    511676762        349520
           9792          .9    1156680          1.0238    496952824        320604
          10880           1    1285200               1    485421183        297958
          11968         1.1    1413720           .9812    476284469        280015
          13056         1.2    1542240           .9644    468161067        264061
          14144         1.3    1670760           .9495    460909360        249820
          15232         1.4    1799280           .9358    454276548        236794
          16320         1.5    1927800           .9253    449182455        226790
          17408         1.6    2056320           .9128    443069856        214786
          18496         1.7    2184840           .9015    437583045        204011
          19584         1.8    2313360           .8913    432648923        194321
          20672         1.9    2441880           .8659    420332933        170134
          21760           2    2570400           .8412    408330158        146563


20 rows selected.


SQL> show parameter db_block_size


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_size                        integer     8192

一个块大小是8192
1088MB除以8K就是第一行的buffers列的值128520

EST_READ_FACTOR 为预估的物理读因子
ESTD_PHY_RED 预估的物理读的次数
EST_PHY_RED_T 预估的物理读时间


我们可以以物理读时间作为标准
因为buffercache最最突出的作用是缓存block
目的是减少物理io
这样就减少了物理io读的时间


ESTD_PHY_RED和EST_PHY_RED_T基本上是同步的
次数多时间就长

在实际生产中我们就是找这个数值
它对应的这行最后边三列的值,在此行以后的行这三列的数值变化不大的时候
找此行Cache Size (MB)值设置就可以了

相关文章:
http://blog.csdn.net/xinzhan0/article/details/52663078
http://blog.itpub.net/12679300/viewspace-1185623/

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle 11g buffer cache的设置

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle 11G数据库审计监控设置指南

目录oracle 11G 开启审计监控数据库1 创建审计数据专用表空间2 查看相关信息3 在线移动至新的表空间3.1 清空历史审计信息3.2 迁移表空间3.3 开启审计4 审计功能的一些相关维护4.1 审计数据迁移(另一种方案)4.2 审计
Oracle 11G数据库审计监控设置指南
2024-10-09

Oracle的kernel.shmmax和kernel.shmall设置

Oracle的kernel.shmmax和kernel.shmall设置 不会推车的娘们 2019-12-04 12:02:30 1135 收藏 3 分类专栏: linux ORACLE 文章标签: sysctl 系统内核 oracle操作 版权 1.  ke
Oracle的kernel.shmmax和kernel.shmall设置
2021-01-19

oracle中spool的参数怎么设置

在Oracle中,spool命令用于将SQL语句的结果输出到文件中。以下是spool命令的一般语法:SPOOL file_path在这里,file_path是要输出结果的文件的路径。使用spool命令时,可以设置一些参数来控制输出的行为。
oracle中spool的参数怎么设置
2024-04-09

oracle设置密码复杂度及设置超时退出的功能

目录查看oracle是否启用密码复杂度;关闭密码复杂性校验查看密码有效期:oracle密码设置为180天oracle设置密码复杂度设置oracle超时退出的功能;查看是否开启oracle的审计功能;总结查看oracle是否启用密码复杂度;
2022-06-28

编程热搜

目录