5.4.4 Enabling Automatic Shared Memory Management
本节描述如果数据库实例当前启用了自动内存管理或手动共享内存管理,如何更改为自动共享内存管理。
如果当前启用自动内存管理,则更改为自动共享内存管理:
如果当前启用了自动内存管理,但您希望对系统全局区域(SGA)和实例程序全局区域(PGA)的大小有更直接的控制,则可以禁用自动内存管理并启用自动共享内存管理。遵循以下步骤:
-
在Oracle Enterprise Manager Database Express (EM Express)中,从Configuration菜单中选择初始化参数。
将显示初始化参数页,并显示当前选项卡。 -
在搜索字段中,输入MEMORY_TARGET。
-
选择MEMORY_TARGET,然后单击Set。
出现Set初始化参数页。 -
在Value字段中,输入0,指定内存范围,然后单击OK。
出现一条确认消息。
注意:
此步骤将当前会话的自动内存管理更改为自动共享内存管理。将自动内存管理改为自动共享内存管理,并在数据库重启后保持有效:-
如果数据库使用服务器参数文件,请在设置初始化参数页上指定SPFile的作用域和内存的作用域。
-
如果数据库使用文本初始化参数文件,则手动将该文件中的MEMORY_TARGET值设置为0.
-
-
从Configuration菜单中选择Memory。
注意,在内存设置部分的SGA内存分区中,管理模式值现在是自动的。这表示启用了自动共享内存管理。页面上显示的初始化参数值是除MEMORY_TARGET之外指定的值。
如果当前启用手动共享内存管理,则更改为自动共享内存管理:
如果当前启用了手动共享内存管理,但是希望Oracle数据库帮助您确定SGA和实例PGA的最佳大小,则可以禁用手动共享内存管理并启用自动共享内存管理。遵循以下步骤:
- In SQL*Plus, run the following query in the database to obtain a value for
SGA_TARGET
:SELECT ( (SELECT SUM(value) FROM V$SGA) - (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY) ) "SGA_TARGET" FROM DUAL; SGA_TARGET ---------- 371654656
This value is approximately 354M.
- I在配置菜单中,选择初始化参数。
将出现初始化参数页。 - In the Search field, enter
SGA_TARGET
. - Select
SGA_TARGET
, and then click Set.The Set Initialization Parameter page appears.
- 在Value字段中,输入上面步骤1中的SGA_TARGET值(本例中为354M),指定内存范围,然后单击OK。
Note:
此步骤将当前会话的手动共享内存管理更改为自动共享内存管理。将手动共享内存管理改为自动共享内存管理,并在数据库重启后保持有效:
-
如果数据库使用服务器参数文件,请在设置初始化参数页上指定SPFile的作用域和内存的作用域。
-
如果数据库使用文本初始化参数文件,则手动将该文件中的MEMORY_TARGET值设置为0。
-
- 从Configuration菜单中选择Memory。
注意,在内存设置部分的SGA内存分区中,管理模式值现在是自动的。这表示启用了自动共享内存管理。 - Do one of the following:
-
为了更完整的自动调优,在初始化参数页面将下表中列出的自动调整大小的SGA组件的值设置为0:
SGA Component Initialization Parameter The shared pool
SHARED_POOL_SIZE
The large pool
LARGE_POOL_SIZE
The Java pool
JAVA_POOL_SIZE
The buffer cache
DB_CACHE_SIZE
The Streams pool
STREAMS_POOL_SIZE
-
要控制一个或多个自动调整大小的SGA组件的最小大小,请将这些组件的大小设置为所需的值,如Oracle Database Administrator 's Guide中所述。在初始化参数页上将其他自动调整大小的SGA组件的值设置为零。
-
5.4.5 Modifying Memory Settings – Automatic Shared Memory Management
在修改用于自动共享内存管理的内存设置之前,请使用Oracle Enterprise Manager Database Express (EM Express)中的SGA Advisor图来预测使用不同的系统全局区域(SGA)大小节省的时间百分比。本节假设禁用了自动内存管理,并且启用了自动共享内存管理。
预测不同SGA内存大小节省的时间百分比:
-
在EM Express中,从Configuration菜单中选择Memory。
出现内存管理页面。在内存设置部分,管理模式值在SGA内存部分是自动的。这表明数据库启用了自动共享内存管理。
使用SGA Advisor图(出现在内存设置部分右侧)预测为潜在的SGA内存大小节省的时间百分比。
Description of the illustration sga_advisor_graph.gifIn the SGA Advisor graph:
-
SGA_TARGET初始化参数的潜在值(单位为MB)在图的横轴上表示。SGA_TARGET初始化参数的当前设置由一个蓝点表示。
-
节省的时间值在图的纵轴上表示。绘制的值表示为相对于当前SGA_TARGET初始化参数设置的百分比。
负值表示时间消耗增加的百分比(分配给Oracle的内存小于当前设置时),正值表示时间消耗减少的百分比(分配给Oracle的内存大于当前设置时)。
图上的一条橙色线表示可以为sga_targetinitialize参数指定的不同值。单击橙色直线上的任何一个点,可以看到由该点表示的SGA_TARGET的时间消耗减少的预测。
在此图中,SGA Advisor图表明,增加SGA_TARGET初始化参数的当前值不会减少节省的时间百分比。 -
-
要更改SGA_TARGET初始化参数的值:
-
Click Configure Memory on the Memory Management page.
The Initialization Parameter page appears.
-
Select the
SGA_TARGET
initialization parameter and click Set.The Set Initialization Parameter page appears.
-
In the Scope field, enter the scope for this change.
See "Viewing and Modifying Initialization Parameters" for more information about setting a scope of Memory, or SPFile, or both.
-
In the Value field, enter the new value for the
SGA_TARGET
initialization parameter. -
Click OK.
A confirmation message appears.
-
See Also:
-
Oracle Database Performance Tuning Guide for more information about memory management modes