oracle中sga的合理设置,oracle学习:SGA_MAX_SIZE参数设置

oracle学习:SGA_MAX_SIZE参数设置

时间:2017-07-11 来源:

SGA_MAX_SIZE这个参数顾名思义,它用来控制SGA 使用虚拟内存

的最大大小,这里的虚拟内存的含义可能会有所模糊,先可以这样理解,就是Oracle 所能在内存中给SGA 分配的最大大小 。

现在来解释一下我这里“虚拟内存”的含义,确切的应该这样说:实际内存和虚拟内存。我们知道当OS 中实际内存不够使用的时候,OS 就会去使用虚拟内存。oracle

是运行与os 之上的一个系统软件,它也是一个程序,它所请求os 给它多少内存用来作为其sga (比方说Oracle 申请500M 内存用作SGA

,即SGA_MAX_SIZE=500M ),os 一般是不会在oracle 启动的时候就给它全部的实际内存,而可能只给200M 。

随着程序的运行,Oracle 不断的需要内存,而假设计算机的所有实际内存只有500M ,那么很肯定的是OS 不可能把全部500M

实际内存分配给oracle 的sga ,可能也最多就给了350M ,剩下的150M 使用虚拟内存。Oracle 的SGA 达到500M

的时候(即达到SGA_MAX_SIZE 指定的大小),实际上这个sga 由350M 实际内存和150M 的虚拟内存组成,如果这个时候Oracle

想继续申请内存给SGA 使用,那么OS 是不会再给其分配内存,因为它已经达到了SGA_MAX_SIZE 的最大值。这个例子,虽然比较极端,即使OS

实际上比方说有1G 内存,Oracle 的SGA 也未必全部由实际内存组成,可能是由400M 实际内存和100M 的虚拟内存

组成,这是由操作系统的内存管理策略决定的。此时,很显然有个问题,假设我的机器物理内存(实际内存)足够多,如何让Oracle 所申请的SGA

内存全部在物理内存中呢,因为假设使用了虚拟内存,必定会带来额外的PAGE IN/PAGE OUT 的I/O

操作,这是很不合算的。这个问题其实就是在物理内存中固定SGA 的问题,这要涉及到另外两个参数LOCK_SGA 和PRE_PAGE_SGA

以及具体操作系统是否支持内存锁定的问题了,对此在这不予讨论。

因此可以简洁的这样说:当实例启动后,各个内存区只分配实例所需要的最小大小,在随后的运行过程中,再根据需要扩展他们的大小,而他们的总和大小受到了SGA_MAX_SIZE

的限制。

根据前面的SGA 的组成介绍,我们很容易得到一个计算SGA 的实际值的公式,如下:

SGA 实际大小 =

DB_CACHE_SIZE

+ DB_KEEP_CACHE_SIZE

+ DB_RECYCLE_CACHE_SIZE

+ DB_nk_CACHE_SIZE

+ SHARED_POOL_SIZE

+ LARGE_POOL_SIZE

+ JAVA_POOL_SIZE

+ STREAMS_POOL_SIZE (10g 中的新内存池)

+ LOG_BUFFERS+11K(Redo Log Buffer 的保护页)

+ 1MB

+ 16M(SGA 内部内存消耗,适合于9i 及之前版本)

而SGA_MAX_SIZE 就是它的各个部分内存区都达到定义的最大值的时候的大小之和。修改SGA_MAX_SIZE 的大小,必须要重新启动数据库实例。

这样就可能出现这样的一种情况,在spfile 中,SGA 各个内存区设置大小总和大于SGA_MAX_SIZE 。这时,oracle

会如下处理:当实例再次启动时,如果发现SGA各个内存总和大于SGA_MAX_SIZE,它会将SGA_MAX_SIZE 的值修改为SGA

各个内存区总和的值。

SQL> show parameter sga;

NAME TYPE VALUE

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

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

lock_sga boolean FALSE

pre_page_sga boolean FALSE

sga_max_size big integer 276M

sga_target big integer 276M

修改sga_max_size大小

SQL> alter system set sga_max_size=300m scope=spfile;

System altered.

修改后不会直接生效

SQL> show parameter sga

NAME TYPE VALUE

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

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

lock_sga boolean FALSE

pre_page_sga boolean FALSE

sga_max_size big integer 276M

sga_target big integer 276M

重启实例

SQL> shutdown immediate

SQL> startup

SQL> show parameter sga

NAME TYPE VALUE

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

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

lock_sga boolean FALSE

pre_page_sga boolean FALSE

sga_max_size big integer 300M

sga_target big integer 276M

只有重新启动实例,设置才能生效。

但是现在两个值出现不一致现象,哪一个规定了SGA的最大值呢?

SQL> select (sum(value))/1024/1024 "SIZE_MB" from v$sga;

size mb

----------

300

查看SGA分配规定的总和,已经是300m了,但是......

SQL> select sum(bytes)/1024/1024 "SIZE_MB" from v$sgastat;

SIZE_MB

----------

276.00251

v$sgastat看到的是内存当前分配的详细信息,是sga_target的值

说明限制内存分配的参数还是由sga_target控制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑科技揭秘:如何通过阿里云超算,使得汽车仿真效率提升25%

在汽车行业,过去有一句俗话,一辆车从设计到下线,“至少要11辆真实碰撞试验”,今天,在现代化的汽车制造业,通过长期发展的设计和仿真软件,几乎所有的环节,都可以做到设计与仿真一体化…

更改应用程序图标_苹果更新 TestFlight 应用图标,增加更多拟真细节

TestFlight 是苹果公司针对开发者分发测试软件的应用,开发者可通过 TestFlight 向最多1万名测试者分发待测试应用。测试者在测试使用软件的同时,还可以向开发者提供使用意见或遇到的问题。最近,标志情报局发现,TestFlight 应用程序…

在一夜暴富之前,我先一夜秃了头

戳蓝字“CSDN云计算”关注我们哦!作者 | 朱小五and王小九责编 | 阿秃与天斗,其乐无穷;与地斗,其乐无穷;与发际线斗,虽败犹荣……年轻人,今天的你比昨天更秃了吗?口说无凭&#xff…

负载均衡工具 haproxy 单机安装部署完整流程

负载均衡是系统设计最常见的一种方式,Nginx、HAProxy、LVS、F5用得比较普遍,不过Nginx只能在HTTP层负载,而HAProxy即可以在7层做负载,也可以在4层做负载,LVS配置有点太麻烦。 HAProxy是免费、极速且可靠的用于为TCP和基…

黑科技揭秘:阿里云如何做到从业务宕机到恢复业务运行只用一分半钟时间

2018杭州云栖大会主论坛上,阿里云打造的混合云容灾方案惊喜亮相,并直接在现场进行了全过程的演示,凸显出阿里云技术的强大心智。 整个混合云容灾演示在5分钟内呈现了阿里云秒级RPO,分钟级RTO企业应用容灾的端到端流程,…

恭喜你!在25岁前看到了这篇最最靠谱的深度学习入门指南

戳蓝字“CSDN云计算”关注我们哦!人工智能(AI)和机器学习(ML)在当下的火热程度我就不多说了,但是真正懂这方面的人又有多少呢?本文将带你了解人工智能和机器学习的基本知识。同时,你…

华为智能家居app未能连接上远程云服务_【InForSec通讯】智能家居云平台实体间交互状态安全分析 | Usenix2019...

论文题目:Discovering and Understanding the Security Hazards in the Interactions between IoT Devices, Mobile Apps, and Clouds on Smart Home Platforms论文作者: Wei Zhou, Yan Jia, Yao Yao&#…

黑科技揭秘:百种异常随机注入,专有云为何稳如泰山

关键应用服务中断引发一系列连锁反应,起因仅是一块磁盘被写满?为什么这么巧,两个小概率的问题偏偏一起发生,造成保护失效?为什么我们做了测试演练,然而真正发生问题依然踩坑?”2018杭州云栖大会…

负载均衡工具 haproxy 集群安装部署完整流程

负载均衡是系统设计最常见的一种方式,Nginx、HAProxy、LVS、F5用得比较普遍,不过Nginx只能在HTTP层负载,而HAProxy即可以在7层做负载,也可以在4层做负载,LVS配置有点太麻烦。 HAProxy是免费、极速且可靠的用于为TCP和基…

阿里云 MaxCompute 2018-09 新功能发布

2018年9月大数据计算服务 MaxCompute 又发布新功能啦! 【新功能】MaxCompute窗口函数支持WINDOW_CLAUSE 参考文档 适用客户 数据开发人员在进行数据开发过程中,用到调用window函数窗口时,SQL里反复写上OVER语句会显得冗余,MaxC…

oracle12到128数组越界,jfinal save 超过9个字段以上就会出现数组下标越界

代码:public static void main(String[] args) {C3p0Plugin c3p0Plugin new C3p0Plugin("jdbc:oracle:thin:192.168.101.10:1521:oratm","imp_zyk", "11111111");c3p0Plugin.setDriverClass("oracle.jdbc.driver.OracleDriver&…

要不要赶个时髦,去建设一个「 中台 」?

戳蓝字“CSDN云计算”关注我们哦!作者 | 奎哥责编 | 阿秃很多技术人总是抱怨 新技术/新框架/新概念 太多了,总是学不完,抱怨实在是学不动了。哈哈,这不,最近「 中台 」这么火热,要不要停止抱怨&#xff0…

strcpy用于调用的参数太少_C和汇编如何互相调用?嵌入式工程师必须掌握

ARM系列文章,请点击以下汇总链接:《从0学arm合集》一、gcc 内联汇编内联汇编即在C中直接使用汇编语句进行编程,使程序可以在C程序中实现C语言不能完成的一些工作,例如,在下面几种情况中必须使用内联汇编或嵌入型汇编。…

在阿里云上试用 Knative

在今年的Google Cloud Next大会上,Google发布了Knative, 这是由Google、Pivotal、Redhat和IBM等云厂商共同推出的Serverless开源工具组件,它与Istio,Kubernetes一起,形成了开源Serverless服务的三驾马车。 本文来自阿里巴巴中间件…

负载均衡工具 haproxy剖析

haproxy 进阶 应用场景 只是作为负载均衡的工具,至于是什么应用集群都可以,例如:上面的RabbitMQ集群 下面那redis集群再给大家举个例子: 创建配置haproxy配置文件 #创建haproxy配置文件 touch /etc/haproxy/haproxy.cfg #Hapro…

阿里云参加ONS EU 2018,飞天洛神亮相网络顶会

9月25日,荷兰阿姆斯特丹,为期3天的网络科技界盛会Open Networking Summit拉开序幕。来自世界各地的网络技术领域专家齐聚一堂,参与并分享各自分支领域的经验和成果。阿里云在会上展示了虚拟网络系统飞天洛神,智能网络管理平台齐天…

linux中如何在文件中查找文件,linux下find(文件查找)命令的用法总结

每一种操作系统都有成千上万的文件组成,对于linux这样“一切皆文件”的操作系统来说更不例外,大家应该都能很轻松使用windows下的文件查找功能,但是对linux这一功能可能并不是很熟悉,其实想玩linux的你更要牢牢掌握这个命令&#…

主动安全,新华三融合生态之力!

戳蓝字“CSDN云计算”关注我们哦!作者 | 晶少责编 | 阿秃出品 | CSDN云计算(ID:CSDNcloud)“如今网络安全形势错综复杂,解决方案不可能由一家公司独当天下,面对这样的情况,我们就要选择自身擅长…

python数字字符串乘以2_Python基础(2)_数字和字符串类型

一、数据类型1、数字整型Python的整型相当于C中的long型,Python中的整数可以用十进制,八进制,十六进制表示。>>> 1010 --------->默认十进制>>> oct(10)012 --------->八进制表示整数时,数值前面要加上一个前缀“0”>>> hex(10)0x…