windows oracle 内存大,如何设计Oracle数据库内存的大小

SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

PGA:是一块包含一个服务进程的数据和控制信息的内存区域。它是Oracle在一个服务进程启动时创建的,是非共享的。一个Oracle进程拥有一个PGA内存区。一个PGA也只能被拥有它的那个服务进程所访问,只有这个进程中的Oracle代码才能读写它。因此,PGA中的结构是不需要Latch保护的。

我们重点就是设置SGA,理论上SGA可占OS系统物理内存的1/2——1/3

ORACLE给的建议是: OLTP系PGA=(Total Memory)*80%*20%。DSS系统PGA=(Total Memory)*80%*50%。

ORACLE建议一个数据库服务器,分80%的内存给数据库,20%的内存给操作系统,那怎么给一个数据库服务器配内存呢?

SQL> select * from v$pgastat;

NAME                                                   VALUE UNIT

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

aggregate PGA target parameter         104857600 bytes

-----这个值等于参数PGA_AGGREGATE_TARGET的值,如果此值为0,表示禁用了PGA自动管理。

aggregate PGA auto target                                          75220992 bytes

-----表示PGA还能提供多少内存给自动运行模式,通常这个值接近pga_aggregate_target-total pga inuse.

global memory bound                                                20971520 bytes

-----工作区执行的最大值,如果这个值小于1M,马上增加PGA大小

total PGA inuse                                                    30167040 bytes

-----当前分配PGA的总大小,这个值有可能大于PGA,如果PGA设置太小.这个值接近

select sum(pga_used_mem) from v$process.

total PGA allocated            52124672 bytes

-----工作区花费的总大小

maximum PGA allocated              67066880 bytes

total freeable PGA memory            0 bytes   --没有了空闲的PGA

process count                               23         --当前有23个process

max processes count                     25

PGA memory freed back to OS       0 bytes

total PGA used for auto workareas      8891392 bytes

maximum PGA used for auto workareas     22263808 bytes

total PGA used for manual workareas   0 bytes    --为0自动管理

maximum PGA used for manual workareas 0 bytes    --为0自动管理

over allocation count   0

如果PGA设置太小,导致PGA有时大于PGA_AGGREGATE_TARGET的值,此处为0,说明PGA没有扩展大于TARGET的值,如果此值出现过,那么增加PGA大小。

bytes processed          124434432 bytes

extra bytes read/written      0 bytes

cache hit percentage         100 percent  ---命中率为100%,如果太小增加PGA

recompute count (total)       6651

19 rows selected

SQL> select max(pga_used_mem)/1024/1024 M from v$process;   ----当前一个process消耗最大的内存

M

----------

9.12815189

SQL> select min(pga_used_mem)/1024/1024 M from v$process where pga_used_mem>0; ---process消耗最少内存

M

----------

0.19186878

SQL> select max(pga_used_mem)/1024/1024 M from v$process ;    ----process曾经消耗的最大内存

M

----------

9.12815189

SQL> select sum(pga_used_mem)/1024/1024 from v$process;   ----当前process一共消耗的PGA

SUM(PGA_USED_MEM)/1024/1024

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

28.8192501068115

如何设置PGA呢?我们可以在压力测试阶段,模拟一下系统的运行,然后运行

select (select sum(pga_used_mem)/1024/1024 from v$process) (select count(*) from v$process) from dual;得到一个process大约占用了多少的内存,然后估算系统一共会有多少连接,比如一共有500个连接,

那么Sessions=1.1*process +5=500,那么processes=450,再乘以一个process需要消耗的内存,就能大约估算出PGA需要设置多大。

最好将PGA设置的值比计算出的值大一点,PGA值设定好后,就可以根据系统的性质,如果系统为OLTOP,那么总的内存可以设置为PGA/0.16,最后也能估算出SGA的大小,建议还是多配点内存,反正便宜。

下面摘抄eygle的关于一个process能够分配的最大内存(串行操作)的规则:

10gR1之前,对于串行操作(非并行)一个process能够分配的最大的内存为min(5%pga_aggregate_target,100m)

10gR2之后,对于串行操作(非并行)一个process能够分配的最大内存有如下规则:

如果pga_aggregate_target<=500m,那么最大的内存为20%*pga_aggregate_target.

如果500m

如果1000m如果pga_aggregate_target>2.5G,那么最大内存为2.5G.

SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ

2  FROM SYS.x$ksppi x, SYS.x$ksppcv y

3  WHERE x.inst_id = USERENV ('Instance')

4  AND y.inst_id = USERENV ('Instance')

5  AND x.indx = y.indx

6  AND x.ksppinm LIKE '%&par%'

7  /

NAME                                                                             VALUE                                                                            DESCRIB

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

_smm_max_size                                                                    20480                                                                            maximum work area size in auto mode (serial)

SQL> show parameter pga

NAME                                 TYPE        VALUE

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

pga_aggregate_target                 big integer 100M

此处我的一个process能够分配的最大内存为20M,因为我的PGA=100M,符合上面的规则。

隐含参数_smm_max_size表示一个process能够分配最大的memory.

买了piner的《oracle高可用环境》一书,正好趁这段时间学习一下。

把看到的东西总结一下发表于此,今天先发第一章关于SGA与PGA的内容。

以后会陆续将总结在此发表,与大家共享。

SGA与PGA的结构如下图:

SGA:

查看SGA:

Sqlp> show sga

或 select * from v$sga;

Total System Global Area  289406976 bytes

Fixed Size                  1248600 bytes

Variable Size             176161448 bytes

Database Buffers          109051904 bytes

Redo Buffers                2945024 bytes

Fixed Size:包括了数据库与实例的控制信息、状态信息、字典信息等,启动时就被固定在SGA中,不会改变。

Variable Size:包括了shard pool、large pool、java pool、stream pool、游标区和其他结构

Database Buffers:数据库中数据块缓冲的地方,是SGA中最大的地方,决定数据库性能

Redo Buffers:提供REDO缓冲的地方,在OLAP中不需要太大

V$sgastat记录了SGA的一些统计信息

V$sga_dynamic_components保存SGA中可以手动调整的区域的一些调整记录

Shard pool:

Shard_pool_size决定其大小,10g以后自动管理

Shard_pool中数据字典和控制区结构用户无法直接控制,与用户有关的只有sql缓冲区(library cache)。

将经常访问的过程或包用DBMS_SHARED_POOL.KEEP存储过程将该包pin在共享池中。

手工清除共享池的内容:alter system flush shard_pool;

共享池相关的几个常用的视图:

V$sqlarea 记录了所有sql的统计信息,包括执行次数、物理读、逻辑读、耗费时间等

V$sqltext_with_newline 完全显示sql语句,通过hash_value来标示语句,piece排序

V$sql_plan保存了sql的执行计划,通过工具查看

V$shared_pool_advice对共享池的预测,可以做调整SGA的参考

Data buffer:

在OLTP系统中要求data buffer 的命中率在95%以上

select sum(pins) "execution",sum(pinhits) "hits",

((sum(pinhits)/sum(pins))*100) "pinhitration",

sum(reloads) "misses",((sum(pins)/(sum(pins)

+sum(reloads)))*100) "relhitratio"

from V$librarycache

PINS NUMBER Number of times a PIN was requested for objects of this namespace

PINHITS NUMBER Number of times all of the metadata pieces of the library object were found in memory

RELOADS NUMBER Any PIN of an object that is not the first PIN performed since the object handle was created, and which requires loading the object from disk

Oracle把从data buffer中获得的数据库叫cache hit,把从磁盘获得的脚cache miss

数据缓冲区中的数据块通过脏列表(dirty list)和LRU列表(LRU list)来管理。

Data buffer可细分为:default pool、keep pool、recycle pool对应的参数为db_cache_size、 db_keep_cache_size 、db_recycle_size分别表示缓冲区大小

从9i开始oracle支持不同块大小的表空间,相应的可以为不同块大小的表空间指定不同块大小的数据缓冲区,不同块大小的数据缓冲区可以用相应的db_nk_cache_size来指定,其中n可以是2、4、6、16或32

V$db_cache_advice 对数据缓冲区的预测,可以做调整data buffer的参考

V$bh、x$bh记录了数据块在data buffer中缓冲的情况,通过这个视图可以找系统中的热点块。通过下面语句找系统中top 10 热点快所在的热点对象:

Select /*+ rule*/ owner,object_name from dba_objects

Where data_object_id in

(select obj from

(select obj from x$bh order by tch desc)

Where rownum<11);

PGA:

用来保存于用户进程相关的内存段。

从9i开始使用PGA自动管理,pga_aggregate_target参数指定session一共使用的最大PGA内存的上限。Workarea_size_policy参数用于开关PGA内存自动管理功能,auto/manual

在OLTP环境中,自动PGA管理只要设置到一定的值,如2G左右就能满足系统的要求。

自动内存管理:

从9i开始,sga_max_size参数设置SGA的内存大小,不能动态修改

从10g开始,指定了sga_target参数后,所有的SGA组件如:shared pool、 data buffer、 large pool都不用手工指定了,Oracle会自动管理。这一特性就是自动共享内存管理ASMM。如果设置了sga_target=0,就自动关闭自动共享内存管理功能。Sga_target大小不能超过sga_max_size的大小。

手动管理SGA:

Alter system set sga_target=2000m;

Alter system set db_cache_size=1000m;

Alter system set shared_pool=200m;

Alter system set sga_target=0---------关闭自动共享内存管理ASMM

11G以后sga+pga整个内存可以自动管理AMM,相关参数memory_max_target  memory_target.设置好这两个参数后就不用关心SGA和PGA了

11g手动内存管理:

Alter system set memory_target=3000m;

Alter system set sga_target=2000m;

Alter system set pga_aggregate_target=1000m;

Alter system set memory_target=0;---------关闭自动内存管理AMM

SGA+PGA最好不要超过总内存的70%

补充:总原则:OS 使用内存+SGA+并发执行进程数*(sort_area_size+hash_ara_size+2M) < 0.7*总内存

简单说就是:SGA+PGA+OS使用内存

关于SGA、PGA与系统内存三者间的关联,目前有一个相对通用的计算规则可供参考:

对于OLTP数据库,SGA=系统内存*70%*80%,PGA=SGA*(10%~20%)。SGA=系统内存*0.56 PGA=系统内存*(0.05~0.1)

对于OLAP数据库,SGA=系统内存*80%*60%,PGA=SGA*(45%~65%)。SGA=系统内存*0.48 PGA=系统内存*(0.22~0.31)

(对于32bit平台,默认情况下SGA最大可用内存有1.7GB的限制)

实例配置时需要考虑的因素

一:物理内存多大

二:操作系统估计需要使用多少内存

三:数据库是使用文件系统还是裸设备

四:有多少并发连接

五:应用是OLTP 类型还是OLAP 类型

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

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

相关文章

智稳双全--AnalyticDB如何助力菜鸟运配双十一

#今年双十一快递有多快#、#双十一快递比外卖还快# 这些话题在今年双十一期间频繁出现在热搜榜上&#xff0c;“凌晨付款起床收货”成了今年双十一快递时效的新标签。作为天猫官方物流服务提供方&#xff0c;今年菜鸟联合14家快递公司为消费者提供了如任意门般的天猫双十一物流体…

AliExpress智能营销引擎大揭秘 - AnalyticDB如何做到快准狠省

业务介绍 AliExpress&#xff08;简称AE&#xff09;是从集团内wholesale孵化出来面向全球消费者的B2C电商平台&#xff0c;目前也是全球化电商业务的排头兵。当前AE为全球220个国家提供在线购物服务&#xff0c;支持3端&#xff08;PC、Msite和APP&#xff09;、18种语言&…

oracle32位客户端安装教程,Win7系统32位Oracle11g客户端安装详述

A部分(既安装服务端&#xff0c;又安装客户端)注意事项&#xff1a;在第一步选择“安装类型”的时候一定要选择“管理员”安装&#xff0c;否则安装后开始菜单下的客户端文件中只有两个子文件目录&#xff0c;表示安装过程只安装了部分功能&#xff0c;而客户端程序不仅需要安装…

AIoT时代的新思维

作者|陈伟 博士&#xff0c;英特尔公司物联网事业部副总裁、视频事业部全球总经理、中国区总经理 后疫情时代&#xff0c;当我们重新审视全球疫情&#xff0c;深刻领悟到这段特殊时期不仅加速了千行百业的数字化转型进程&#xff0c;更进一步引发了数据的指数级爆发。与以往不…

千万商家的智能决策引擎--AnalyticDB如何助力生意参谋双十一

作者&#xff1a;算法&健兮&#xff0c;阿里巴巴数据技术及产品部技术专家 生意参谋介绍 生意参谋是阿里官方打造的全渠道、全链路、一站式数据平台&#xff0c;致力于为用户提供经营分析、市场洞察、客群洞察等多样化数据服务&#xff0c;帮助用户全面提升商业决策效率。…

广播电视加速技术迭代,如何用新技术拥抱行业转型?

12月7日&#xff0c;国家广播电视总局印发了《广播电视技术迭代实施方案&#xff08;2020-2022年&#xff09;》。该文件指出&#xff0c;广电将利用3年左右时间&#xff0c;实现全行业未来大转型的&#xff0c;通过广播电视技术迭代&#xff0c;加快重塑广电媒体新生态&#x…

php有多少种占位符,php 占位符问题?

为什么我echo出来的东西就是一个%s&#xff1f;而不是我赋值的字符串?完整代码&#xff1a;IndexAction.class.php// 本类由系统自动生成&#xff0c;仅供测试用途class IndexAction extends Action {public function index(){$this->responseMsg();}public function respo…

我们为什么需要云原生?看完这一篇就够了

作者 | 侯淼淼出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;云原生这个词对于业内大多数人来说都不陌生&#xff0c;伴随着云计算的蓬勃发展&#xff0c;大有愈演愈烈之势&#xff0c;已经赫然成为企业数字化转型的重要基石。与此同时&#xff0c;无数的新兴词汇…

Serverless 如何落地?揭秘阿里核心业务大规模落地实现

简介&#xff1a; 2020 年&#xff0c;新冠肺炎疫情催化数字化生活方式渐成常态。在企业积极进行数字化转型、全面提升效率的今天&#xff0c;几乎无人否认背负“降本增效”使命诞生的 Serverless 即将成为云时代新的计算范式。 来源|阿里巴巴云原生公众号 2020 年&#xff0c…

linux使用ping命令ping本机,Linux下使用ping命令判断网络的好坏

简介在Linux系统里面如果想判断网络的好坏&#xff0c;脑海中蹦出的第一个命令就是ping了。ping命令基本是最常用的网络命令&#xff0c;它可以用来测试与目标主机的连通性。ping通过发送ICMP ECHO_REQUEST数据包到网络主机&#xff0c;并显示返回的相应情况&#xff0c;根据这…

分布式事务框架 seata-golang 通信模型详解

简介&#xff1a; Java 的世界里&#xff0c;大家广泛使用的一个高性能网络通信框架 netty&#xff0c;很多 RPC 框架都是基于 netty 来实现的。在 golang 的世界里&#xff0c;getty 也是一个类似 netty 的高性能网络通信库。getty 最初由 dubbogo 项目负责人于雨开发&#xf…

移动云TeaTalk(长沙站)| 聚焦“云网一体”发展新机遇

聚焦“云网一体”发展新机遇移动云TeaTalk&#xff08;长沙站&#xff09;云网一体&#xff0c;“湘”遇“湘”融 。7月23日&#xff0c; 移动云TeaTalk沙龙第四站在长沙成功举办。活动围绕中国移动“云网一体”理念&#xff0c;介绍云网产品体系规划以及各领域产品应用&#x…

宜泊科技加入阿里云原生合作伙伴计划,共建智慧停车新生态

简介&#xff1a; 在过去几年里&#xff0c;“云原生”的概念逐渐被广大的企业所熟知。云原生给企业带来了巨大的价值&#xff1a;一方面&#xff0c;统一的容器编排角度&#xff0c;给企业带来了更好的资源利用率和管理的效率&#xff1b;另一方面&#xff0c;云原生的技术实践…

红旗Linux网卡绑定,Linux bonding 之balance-alb 原理介绍及其实现

要求&#xff1a;首先要安装bonding driver 和 ifenslave。bonding driver 是实现网卡绑定的软件基础&#xff0c;它在很多系统中都作为模块而加载。ifenslave 是实现网卡绑定的一个实用工具。检查系统是否符合这两个要求&#xff1a;[rootnode1 bin]# lsmod | grep bondbondin…

大数据时代,如何用数据驱动精准营销

简介&#xff1a; 针对Yeahmobi在全球业务中需要统一治理数据资产和提供高并发、高弹性的存储服务需求&#xff0c;阿里云为Yeahmobi构建了一站式的数据湖解决方案。 Yeahmobi介绍 Yeahmobi是一家技术驱动发展的国际化智能营销服务公司&#xff0c;致力于为客户提供精准的全球…

百度获得国内首批无人驾驶乘用车高速公路道路测试资质

7月27日&#xff0c;第二十三届中国科协年会在北京拉开帷幕。在自动驾驶汽车产业落地与示范运营分论坛上&#xff0c;北京市高级别自动驾驶示范区推进工作组负责人孔磊介绍了《北京市高级别自动驾驶示范区建设阶段成果及2.0规划》&#xff0c;并向部分企业颁发了国内首批乘用车…

排查指南 | 关于 mPaaS-iOS 小程序打不开问题的解决方案

简介&#xff1a; 让天下没有打不开的小程序&#xff01;&#xff01;&#xff01; 在我们集成 mPaaS 插件并使用小程序的过程中&#xff0c;很多开发者遇到了打不开小程序的问题。今天就举例说明&#xff0c;开发者在完成基本接入后&#xff0c;尝试打开 H5 应用&#xff0c;但…

十万亿级OLAP引擎解读-AnalyticDB如何支撑数据银行超大规模低成本实时分析

简介&#xff1a; 数据银行是一款品牌消费者运营的商业数据产品&#xff0c;由于其核心分析能力需要在海量数据上实现任意维度自由分析和响应时间上的强需求&#xff0c;我们大规模使用AnalyticDB作为底层的分析引擎&#xff0c;最终以较低的成本&#xff0c;出色的性能&#x…

C-Power 自主无人海上电力系统有望通过高效能源传输及远程高带宽通信技术,开启新的海上应用

开发利用海浪能是一个快速发展的领域&#xff0c;海洋工程师正在改进技术&#xff0c;以提供可靠、经济高效的海洋能源发与存储&#xff0c;并实现全新的海上数据与通信服务。 哥伦比亚电力技术公司 (C-Power) 位于俄勒冈州科瓦利斯市&#xff0c;是波浪能系统的全球领先企业&…

性能高1倍,价格低3/4!数据库实时同步新选择!

2020年双11&#xff0c;云原生实时数仓首次在阿里巴巴双11核心数据场景落地&#xff0c;实现商业全链路实时化&#xff0c;毫秒级海量数据处理能力。搜索推荐业务数据开发效率提升4倍&#xff0c;菜鸟物流包裹数据链路从小时级优化到3分钟&#xff0c;考拉分钟及小时业务1分钟内…