今天网友问到了v$sgainfo中的Free SGA Memory Available的一些情况,开始我也比较迷糊,为什么会出现Free SGA Memory Available的值不为0,通过查询一些试验和测试,对这个问题进行了有力的说明

数据库版本10G

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod

PL/SQL Release 10.2.0.4.0 - Production

CORE 10.2.0.4.0 Production

TNS for Linux: Version 10.2.0.4.0 - Production

NLSRTL Version 10.2.0.4.0 - Production

当前SGA各组件信息

SQL> select name,bytes/1024/1024 from v$sgainfo;

NAME BYTES/1024/1024

-------------------------------- ---------------

Fixed SGA Size 1.20853043

Redo Buffers 6.7890625

Buffer Cache Size 192

Shared Pool Size 88

Large Pool Size 4

Java Pool Size 4

Streams Pool Size 8

Granule Size 4

Maximum SGA Size 304

Startup overhead in Shared Pool 36

Free SGA Memory Available 0

11 rows selected.

sga配置

SQL> show parameter sga;

NAME TYPE VALUE

------------------------------------ ----------- ---------------

lock_sga boolean FALSE

pre_page_sga boolean FALSE

sga_max_size big integer 304M

sga_target big integer 304M

在10g中,当采用asmm管理时,如果sga_max_size=sga_target,则Free SGA Memory Available为0

修改sga_target

SQL> alter system set sga_target=290M;

System altered.

再次查询v$sgainfo

SQL> select name,bytes/1024/1024 from v$sgainfo;

NAME BYTES/1024/1024

-------------------------------- ---------------

Fixed SGA Size 1.20853043

Redo Buffers 6.7890625

Buffer Cache Size 180

Shared Pool Size 88

Large Pool Size 4

Java Pool Size 4

Streams Pool Size 8

Granule Size 4

Maximum SGA Size 304

Startup overhead in Shared Pool 36

Free SGA Memory Available 12

11 rows selected.

再次查看sga_target值

SQL> show parameter sga;

NAME TYPE VALUE

------------------------------------ ----------- --------------

lock_sga boolean FALSE

pre_page_sga boolean FALSE

sga_max_size big integer 304M

sga_target big integer 292M

在10g中,当采用asmm管理时,如果sga_max_size>sga_target,则Free SGA Memory Available为sga_max_size-sga_target

找出sga_target修改为292M而不是290M原因

SQL> select component, granule_size from v$sga_dynamic_components;

COMPONENT GRANULE_SIZE

---------------------------------------------------------------- ------------

shared pool 4194304

large pool 4194304

java pool 4194304

streams pool 4194304

DEFAULT buffer cache 4194304

KEEP buffer cache 4194304

RECYCLE buffer cache 4194304

DEFAULT 2K buffer cache 4194304

DEFAULT 4K buffer cache 4194304

DEFAULT 8K buffer cache 4194304

DEFAULT 16K buffer cache 4194304

DEFAULT 32K buffer cache 4194304

ASM Buffer Cache 4194304

13 rows selected.

SQL> select 4194304/1024/1024 from dual;

4194304/1024/1024

-----------------

4

SQL> select 292/4 from dual;

292/4

----------

73

因为sga的内存分配是按照GRANULE为单位进行的,而在该库中sga对应组件的GRANULE为4M,所以我们修改的290M的最近的GRANULE整数倍为292M

sga_target为0的情况

SQL> show parameter sga_target;

NAME TYPE VALUE

------------------------------------ ----------- ----------

sga_target big integer 0

SQL> select name,bytes/1024/1024 from v$sgainfo;

NAME BYTES/1024/1024

-------------------------------- ---------------

Fixed SGA Size 1.20846176

Redo Buffers 6.7890625

Buffer Cache Size 180

Shared Pool Size 88

Large Pool Size 4

Java Pool Size 4

Streams Pool Size 8

Granule Size 4

Maximum SGA Size 292

Startup overhead in Shared Pool 36

Free SGA Memory Available 0

11 rows selected.

在10g中,如果不采用asmm内存管理模式,Free SGA Memory Available为0

11g数据库版本

SQL> select * from v$version;

BANNER

-----------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

PL/SQL Release 11.2.0.3.0 - Production

CORE 11.2.0.3.0 Production

TNS for Linux: Version 11.2.0.3.0 - Production

NLSRTL Version 11.2.0.3.0 - Production

查询v$sgainfo信息

SQL> select name,bytes/1024/1024 from v$sgainfo;

NAME BYTES/1024/1024

-------------------------------- ---------------

Fixed SGA Size 1.28236008

Redo Buffers 6.03515625

Buffer Cache Size 20

Shared Pool Size 116

Large Pool Size 4

Java Pool Size 4

Streams Pool Size 8

Shared IO Pool Size 0

Granule Size 4

Maximum SGA Size 299.320313

Startup overhead in Shared Pool 52.2684898

Free SGA Memory Available 140

oracle内存相关参数设置

SQL> show parameter memory;

NAME TYPE VALUE

------------------------------------ ----------- ------------

hi_shared_memory_address integer 0

memory_max_target big integer 300M

memory_target big integer 300M

shared_memory_address integer 0

SQL> show parameter pga;

NAME TYPE VALUE

------------------------------------ ----------- ------------

pga_aggregate_target big integer 0

数据库动态组件内存分配

SQL> select COMPONENT,CURRENT_SIZE/1024/1024 CURRENT_SIZE from V$MEMORY_DYNAMIC_COMPONENTS;

COMPONENT CURRENT_SIZE

---------------------------------------------------------------- ------------

shared pool 116

large pool 4

java pool 4

streams pool 8

SGA Target 160

DEFAULT buffer cache 20

KEEP buffer cache 0

RECYCLE buffer cache 0

DEFAULT 2K buffer cache 0

DEFAULT 4K buffer cache 0

DEFAULT 8K buffer cache 0

DEFAULT 16K buffer cache 0

DEFAULT 32K buffer cache 0

Shared IO Pool 0

PGA Target 140

ASM Buffer Cache 0

16 rows selected.

初步怀疑:在11g的amm内存管理模式下Free SGA Memory Available和PGA Target相等

尝试修改pga_aggregate_target值

SQL> alter system set pga_aggregate_target=150M;

System altered.

再次查询v$sgainfo

SQL> select name,bytes/1024/1024 from v$sgainfo;

NAME BYTES/1024/1024

-------------------------------- ---------------

Fixed SGA Size 1.28236008

Redo Buffers 6.03515625

Buffer Cache Size 8

Shared Pool Size 116

Large Pool Size 4

Java Pool Size 4

Streams Pool Size 8

Shared IO Pool Size 0

Granule Size 4

Maximum SGA Size 299.320313

Startup overhead in Shared Pool 52.2684898

Free SGA Memory Available 152

查询动态组件内存分布

SQL> select COMPONENT,CURRENT_SIZE/1024/1024 CURRENT_SIZE from V$MEMORY_DYNAMIC_COMPONENTS;

COMPONENT CURRENT_SIZE

---------------------------------------------------------------- ------------

shared pool 116

large pool 4

java pool 4

streams pool 8

SGA Target 148

DEFAULT buffer cache 8

KEEP buffer cache 0

RECYCLE buffer cache 0

DEFAULT 2K buffer cache 0

DEFAULT 4K buffer cache 0

DEFAULT 8K buffer cache 0

DEFAULT 16K buffer cache 0

DEFAULT 32K buffer cache 0

Shared IO Pool 0

PGA Target 152

ASM Buffer Cache 0

16 rows selected.

进一步证明:在11g的amm内存管理模式下Free SGA Memory Available和PGA Target相等

设置pga_aggregate_target为150M,PGA Target为152M原因分析

SQL> select COMPONENT,GRANULE_SIZE from V$MEMORY_DYNAMIC_COMPONENTS;

COMPONENT GRANULE_SIZE

---------------------------------------------------------------- ------------

shared pool 4194304

large pool 4194304

java pool 4194304

streams pool 4194304

SGA Target 4194304

DEFAULT buffer cache 4194304

KEEP buffer cache 4194304

RECYCLE buffer cache 4194304

DEFAULT 2K buffer cache 4194304

DEFAULT 4K buffer cache 4194304

DEFAULT 8K buffer cache 4194304

DEFAULT 16K buffer cache 4194304

DEFAULT 32K buffer cache 4194304

Shared IO Pool 4194304

PGA Target 4194304

ASM Buffer Cache 4194304

16 rows selected.

原理同上述10g中的sga_target分析,不再重复,主要就是:150M不能被4M整除,所以取最近的152M

整体总结

1.如果不采用asmm和amm,Free SGA Memory Available为0

2.如果采用asmm,当sga_max_size=sga_target,则Free SGA Memory Available为0

3.如果采用asmm,当sga_max_size>sga_target,则Free SGA Memory Available为sga_max_size-sga_target

4.如果采用amm,Free SGA Memory Available和PGA Target相等

mysql sga_v$sgainfo中Free SGA Memory Available的各种情况解释相关推荐

  1. Mysql中SQL语句不使用索引的情况

    Mysql中SQL语句不使用索引的情况 MySQL查询不使用索引汇总 众所周知,增加索引是提高查询速度的有效途径,但是很多时候,即使增加了索引,查询仍然不使用索引,这种情况严重影响性能,这里就简单总结 ...

  2. linux的swap与memory,【Linux】Linux中Swap与Memory内存简单介绍

    背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...

  3. MySQL 5.6中如何定位DDL被阻塞的问题

    在上一篇文章<MySQL 5.7中如何定位DDL被阻塞的问题>中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata ...

  4. mysql 执行cmd,mysql命令行中执行sql的几种方式总结

    1.直接输入sql执行 MySQL> select now(); +---------------------+ | now() | +---------------------+ | 2013 ...

  5. mysql的调用有哪三种方式_MySQL数据库之mysql命令行中执行sql的几种方式总结

    本文主要向大家介绍了MySQL数据库之mysql命令行中执行sql的几种方式总结 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1.直接输入sql执行 MySQL> se ...

  6. mysql修改表中某个字段的默认值

    Mysql中用SQL增加.删除字段,修改字段名.字段类型.注释,调整字段顺序总结 在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或 ...

  7. MySQL 5.7中的更多改进,包括计算列

    让我们继续上一周的内容,讨论MySQL 5.7中的新特性,我们将把注意力集中于新的安全方面的特性.首先,新版本中取消了mysql_old_password这个认证插件.其实这个插件从版本4.x开始就已 ...

  8. MariaDB/MySQL从数据库中选择随机的行

    MariaDB/MySQL从数据库中选择随机的行 一个比较传统的做法是使用sql自带的rand函数,从而达到随机排序的目的. SELECT column FROM table ORDER BY RAN ...

  9. mysql init-file参数中语句限制

    mysql 启动选项中的init-file文件的内容目测只能是dml语句,不能包含ddl,否则执行就会报错,但不影响启动本身..太扯了..

最新文章

  1. linux ping程序设计与实现,一步步学Linux网络编程--ping命令的实现分析
  2. java-mybaits-00101-基础安装配制
  3. jQuery.fn和jQuery.prototype区别。
  4. CmsEasy 漏洞挖掘
  5. 智力+贪心的过河问题
  6. Composer -- PHP依赖管理的用法
  7. 等比数列和的快速求法
  8. ubuntu20.04安装mysql教程
  9. python分支语句_Python中的分支语句和循环语句及案例
  10. “家乡好物直播”走进“水果第一县”,人大教授变身“好物推荐官”
  11. C/C++网络编程工作笔记0004---socket()函数详解
  12. 【JavaScript高级程序设计】--第1章 JavaScript简介
  13. 计算机学院学生会会徽设计,学生会会徽设计策划书
  14. nginx.conf文件配置及nginx重启脚本
  15. 天线学习笔记——HFSS简单阵列天线
  16. 冠状病毒主题网页制作——疫情地图
  17. 计算机专业为职业环境分析,2021年计算机职业环境分析报告|计算机职业环境分析-得范文网...
  18. 数据结构-树-愿天下有情人都是失散多年的兄妹
  19. 百度低代码框架amis介绍及实例讲解
  20. Hills And Valleys

热门文章

  1. final类与final方法
  2. 推荐几个机器人开发框架
  3. 基于opencv-python的人脸识别算法
  4. 梦龙_C语言作业13
  5. Spring Boot 大型线上商城项目实战教程
  6. python pil 第三方库实战之二:图片叠加
  7. Chrome渲染分析之Rendering工具
  8. Beehive:用于修复分布式存储系统中多个故障的纠删码
  9. python验证码识别训练模型_python 基于机器学习识别验证码
  10. 《钢铁侠》等电影中的image based lighting和physical shading