分享
 
 
 

Oracle 数据库 10g:自动共享内存管理

王朝mssql·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

Oracle 数据库 10g:自动共享内存管理

Oracle 数据库 10g:自动共享内存管理 是不是很难准确地分配不同的池所需的内存数?自动共享内存管理特性使得自动将内存分配到最需要的地方去成为可能。

无论您是一个刚入门的 DBA 还是一个经验丰富的 DBA,您肯定至少看到过一次类似以下的错误: ORA-04031:unable to allocate 2216 bytes of shared memory ("shared pool"... ...

或者这种错误: ORA-04031:unable to allocate XXXX bytes of shared memory ("large pool","unknown object","session heap","frame")

或者可能这种错误: ORA-04031:unable to allocate bytes of shared memory ("shared pool","unknown object","joxlod:init h", "JOX:ioc_allocate_pal")

第一种错误的原因很明显:分配给共享池的内存不足以满足用户请求。(在某些情况下,原因可能不是池本身的大小,而是未使用绑定变量导致的过多分析造成的碎片,这是我很喜欢的一个主题;但目前让我们把重点放在手头的问题上。)其它的错误分别来自大型池和 Java 池的空间不足。

db_cache_size = 2gshared_pool_size = 1glarge_pool_size = 1gjava_pool_size = 1g

i 数据库为您提供了在线修改内存分配的功能,但由于提供的总物理内存有限,您决定从大型池和 Java 池中取出一些内存: alter system set db_cache_size = 3g scope=memory;alter system set large_pool_size = 512m scope=memory;alter system set java_pool_size = 512m scope=memory;

alter system set db_cache_size = 2G scope=memory;alter system set large_pool_size = 512M scope=memory;alter system set java_pool_size = 1.5G scope=memory;

g 中的自动共享内存管理特性正好能够实现这一目的。您可以决定 SGA 的总大小,然后设置一个名称为 SGA_TARGET 的参数,这个参数决定 SGA 的总大小。SGA 内部的各个池将根据工作负载动态地进行配置。实现自动内存分配仅仅需要 SGA_TARGET 参数的一个非零值。

SQL> select sum(value)/1024/1024 from v$sga;SUM(VALUE)/1024/1024-------------------- 500

SGA_TARGET 的值。接下来,执行语句: alter system set sga_target = 500M scope=both;

shared_pool_size = 0large_pool_size = 0java_pool_size = 0db_cache_size = 0

g 实施。从数据库主页中,选择 "Administration" 选项卡,然后选择 "Memory Parameters"。对于人工配置的内存参数,将显示标记为 "Enable" 的按钮,以及所有人工配置的池的值。单击 "Enable" 按钮,启用自动共享内存管理特性。企业管理器将完成剩下的工作。

SQL> select current_size from v$buffer_pool;CURRENT_SIZE------------ 340SQL> select pool, sum(bytes)/1024/1024 Mbytes from v$sgastat group by pool;POOL MBYTES------------ ----------java pool 4large pool 4shared pool 148

alter system set sga_target = 300M scope=both;

SQL> select current_size from v$buffer_pool;CURRENT_SIZE------------ 244SQL> select pool, sum(bytes)/1024/1024 Mbytes from v$sgastat group by pool;POOL MBYTES------------ ----------java pool 4large pool 4shared pool 44

SGA_TARGET 改变时,如何自动重新分配池。

SGA_TARGET 指定的最大值之内,因此不存在使内存需求的增长比例失调(这将导致分页和交换)的风险。您可以动态地将 SGA_TARGET 增加至绝对最大值,这个绝对最大值是通过调整参数 SGA_MAX_SIZE 指定的。

KEEP 池或 RECYCLE 池的非默认块大小。如果您的数据库有一个块大小为 8K,而您想要配置 2K、4K、16K 和 32K 块大小的池,那么您必须手动设置它们。它们的大小将保持不变;它们将不会根据负载缩小或扩展。当使用多种大小的缓冲池、KEEP 池和 RECYCLE 池时,您应当考虑这个因素。此外,日志缓冲不受内存调整的影响 — 不管工作负载如何,在参数 log_buffer 中设定的值是不变的。( g 中,还可以在 SGA 中定义一种新的池:流池 (stream pool),它用参数 streams_pool_size 进行设置。该池也不受自动内存调整的影响。)

db_2k_cache_size),那么它们的总大小将从 SGA_TARGET 值中减去,以计算自动调整的参数值,以使 SGA 的总大小保持不变。例如,假设值看起来像这样:

sga_target = 500Mdb_2k_cache_size = 50M

db_cache_size)、共享池、Java 池和大型池)保留了 450MB。当以一种方法动态地调整不可自动调整的参数(如 2KB 块大小池)——这种方法将影响到可自动调整部分的大小,可自动调整的部分将重新调整。例如,将 db_2k_cache_size 的值从 50MB 提高到 100MB 只为可自动调整的参数剩余 400MB。因此,如图 4 所示,可调整的池(如共享池、大型池、Java 池和默认缓冲池)自动缩小,以将它们的总大小从 450MB 减少到 400MB。

SGA_TARGET、通过在文件中将其设为 0,或者通过使用 ALTER SYSTEM 动态地将其修改为 0 来关闭自动大小调整。当 SGA_TARGET 被设为 0 时,池的当前值被自动设为它们的参数。

g 来处理这些参数。从数据库主页中单击超链接 "Memory Parameters",这将显示一个类似于图 5 中的屏幕。

SGA_TARGET 中指定的值相同。您可以在此修改它,然后单击 Apply 按钮接受这些值;可调整的参数将自动调整。

SGA_TARGET 设为 600MB,并且各个池已自动分配:

大小 (MB)

缓冲池

404

Java 池

4

大型池

4

共享池

148

ALTER SYSTEM 来实现这一目的(如下所示)。

alter system set large_pool_size = 16M;alter system set java_pool_size = 8M;

SQL> select pool, sum(bytes)/1024/1024 Mbytes from v$sgastat group by pool;POOL MBYTES------------ ----------java pool 8large pool 16shared pool 148SQL> select current_size from v$buffer_pool;CURRENT_SIZE------------ 388

大小 (MB)

缓冲池

388

Java 池

8

大型池

16

共享池

148

g 中的自动共享内存管理特性通过动态地将资源重新分配到最需要它们的地方同时施加一个指定的最大值以防止分页和交换,使得 DBA 能够更有效地管理系统内存。更有效的内存管理还带来了更少的内存需求,这使得更精简的硬件更加可行。

Oracle 数据库性能调整指南的第 7 章。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有