取得sga_max_size的建议值

本文提供了一种方法来确定Oracle数据库中SGA的最大合适尺寸,以便将其从手动管理模式转换为自动管理模式。通过运行特定的SQL查询,管理员可以计算出理想的SGA_TARGET值。

但需要将sga从手动管理修改为自动管理的时候,可以使用如下sql取得合适的sga_max_size的值:

(b14231 第96页)

sys@CNHTM> SELECT (
2 (SELECT SUM(value) FROM V$SGA) -
3 (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)
4 ) "SGA_TARGET"
5 FROM DUAL;

SGA_TARGET
----------
209715200

1 row selected.

--end--

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22049049/viewspace-1031250/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22049049/viewspace-1031250/

### 设置 Oracle 数据库SGA_TARGET 和 SGA_MAX_SIZE 参数 在 Oracle 数据库中,`SGA_TARGET` 和 `SGA_MAX_SIZE` 是用于控制共享全局区(SGA)内存大小的重要参数。它们的设置方式和行为在不同版本的 Oracle 中有所不同,因此需要根据数据库版本进行适当调整。 #### 1. 理解 SGA_TARGET 和 SGA_MAX_SIZE 的关系 - `SGA_TARGET` 是一个动态参数,表示 Oracle 自动管理 SGA 内存的总目标大小。它可以在数据库运行期间动态调整,但不能超过 `SGA_MAX_SIZE` 的。 - `SGA_MAX_SIZE` 是一个静态参数,表示 SGA 的最大可能大小。该参数不能动态修改,必须在数据库启动前设置,并且修改后需要重启数据库实例才能生效 [^3]。 #### 2. 不同 Oracle 版本的行为差异 - 在 Oracle 10g 中,`SGA_TARGET` 可以动态调整,但不能超过 `SGA_MAX_SIZE` 的。如果 `SGA_MAX_SIZE` 未显式设置,则数据库启动时会将其设置为 `SGA_TARGET` 的 [^4]。 - 在 Oracle 11g 中,`SGA_TARGET` 必须等于 `SGA_MAX_SIZE` 的大小。如果在参数文件中设置 `SGA_TARGET` 小于 `SGA_MAX_SIZE`,Oracle 会自动调整 `SGA_TARGET` 为 `SGA_MAX_SIZE` 的 [^2]。 - 在 Oracle 12c 及更高版本中,引入了 `MEMORY_TARGET` 和 `MEMORY_MAX_TARGET` 参数,支持自动管理 SGA 和 PGA 的总内存大小。如果使用自动内存管理(AMM),则 `SGA_TARGET` 和 `PGA_AGGREGATE_TARGET` 将被忽略 [^5]。 #### 3. 推荐设置方式 - **Oracle 10g/11g**:建议将 `SGA_TARGET` 设置为与 `SGA_MAX_SIZE` 相同的,以避免不必要的自动调整行为。例如: ```sql ALTER SYSTEM SET SGA_TARGET=1G SCOPE=BOTH; ALTER SYSTEM SET SGA_MAX_SIZE=1G SCOPE=SPFILE; ``` 修改 `SGA_MAX_SIZE` 后需要重启数据库实例才能生效 [^3]。 - **Oracle 12c 及以上版本**:如果使用 AMM(自动内存管理),应优先设置 `MEMORY_TARGET` 和 `MEMORY_MAX_TARGET`,而不再单独设置 `SGA_TARGET` 和 `SGA_MAX_SIZE`。例如: ```sql ALTER SYSTEM SET MEMORY_TARGET=2G SCOPE=SPFILE; ALTER SYSTEM SET MEMORY_MAX_TARGET=4G SCOPE=SPFILE; ``` 启动后,Oracle 会自动在 `MEMORY_TARGET` 的范围内动态调整 SGA 和 PGA 的大小 [^5]。 #### 4. 注意事项 - 如果在 `SPFILE` 中设置了 SGA 各个组件的总和大于 `SGA_MAX_SIZE`,Oracle 在启动时会自动将 `SGA_MAX_SIZE` 的调整为实际组件总和的大小 [^3]。 - 在 11g 中,若 `SGA_TARGET` 设置小于 `SGA_MAX_SIZE`,Oracle 会自动将其调整为等于 `SGA_MAX_SIZE`,因此建议避免设置不一致 。 --- ### 示例:设置 SGA_TARGET 和 SGA_MAX_SIZE ```sql -- 设置 SGA_TARGET 为 1GB,SGA_MAX_SIZE 为 2GB(仅适用于 10g) ALTER SYSTEM SET SGA_TARGET=1G SCOPE=BOTH; ALTER SYSTEM SET SGA_MAX_SIZE=2G SCOPE=SPFILE; -- 重启数据库实例后生效 SHUTDOWN IMMEDIATE; STARTUP; ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值