memory_max_target/memory_target//sga_max_size/sga_target

1、memory_max_target 就是oracle实例的最大的内存大小

2、memory_target 就是oracle实例实际内存的大小,最大值不能超过memory_max_target

3、 sga_max_size 系统全局区 最大值

4、sga_target 系统全局区 实际值 不能超过 sga_max_size

5、pag_aggregate_target 进程全局区)

如果memory_target=0 表示数据库不启用自动内存管理,那么sga_target(系统全局区) 跟pag_aggregate_target(进程全局区)
各自管理,互不干扰

如果memory_target 大于0 表示数据库启用自动内存管理,相当于sga_target(系统全局区) 跟pag_aggregate_target(进程全局区)
各自管理,互不干扰

如果 sga_target=0 表示数据库不使用 自动共享内存管理 那么
db_buffer_cache_size,java_pool shared_pool,large_pool,stream_pool 都需要手动设置一个值

如果 sga_target大于0 表示数据库使用 自动共享内存管理 那么
db_buffer_cache_size,java_pool shared_pool,large_pool,stream_pool 不需要设置值,数据库会自动分配,内存使用率高

下面来讨论 一下 memory_target 跟sga_target 组合

memory_target=0 && sga_target=0 不是自动共享内存管理
那么 db_buffer_cache_size,java_pool shared_pool,large_pool,
stream_pool pag_aggregate_target 都需要手动设置一个值

memory_target=0 && sga_target>0 是自动共享内存管理 那么
db_buffer_cache_size,java_pool shared_pool,large_pool,stream_pool 可以设置也可以不设置
pag_aggregate_target必须要设置一个值
sga_target=db_buffer_cache_size+java_pool+shared_pool+stream_pool

memory_target>0 && sga_target>0 是自动内存管理 那么 sga_target 跟pag_aggregate_target 不需要设定值,
若设定了某个值,也表示 数据库启动的时候sga_target 跟pag_aggregate_target 最小不能低于设定的某个值
如 memory_target=1024 sga_target=800M 表示数据库最少要分配800M 给SGA
memory_target=sga_target+max(pag_aggregate_target,MAXIMUM PGA ALLOCATED)

当使用 dbca 创建默认创建实例的时候 如果系统内存小于4G 那么AMM 启用 大余4G AMM禁用 ASMM 启用,所以一般选择 高级安装

使用大表缓存 并行查询 在 RAC 或者单实例环境
DB_BIG_TABLE_CACHE_PERCENT_TARGET >0 &&PARALLEL_DEGREE_POLICY=‘AUTO’ 或者PARALLEL_DEGREE_POLICY=‘ADAPTIVE’

使用大表缓存 窜行查询 只适用于单实例
DB_BIG_TABLE_CACHE_PERCENT_TARGET >0

监控 调优 内存管理, 就是说,内存管理设置那个值为最合理

自动内存管理值建议
select * from v$memory_target_advice order by memory_size;

MEMORY_SIZE_FACTOR=1 表示当前数据库的内存, 通过ESTD_DB_TIME 来判断设置多大最合适

SGA 设置内存大小是按 颗粒度的整数倍 分配
查看数据库的颗粒度
select * from v s g a i n f o 自 动 共 享 内 存 管 理 值 建 议 s e l e c t ∗ f r o m v sgainfo 自动共享内存管理值建议 select * from v sgainfoselectfromvsga_target_advice order by sga_size;

这个错误是在使用 Oracle 数据库时出现的,它表示你尝试将 SGA_MAX_SIZE 参数设置为比 MEMORY_TARGET 参数更大的值,这是不允许的。SGA_MAX_SIZE 是指定 SGA(System Global Area)最大大小的参数,而 MEMORY_TARGET 是指定 SGA 和 PGA(Process Global Area)总大小的参数。 在 Oracle 11g 及更高版本中,Oracle 推荐使用 MEMORY_TARGET 参数来管理 SGA 和 PGA 的大小,而不是手动设置 SGA_MAX_SIZE 和 PGA_AGGREGATE_TARGET 参数。这是因为使用 MEMORY_TARGET 可以更好地优化内存使用,提高系统性能。 因此,要解决这个错误,你需要调整 SGA_MAX_SIZEMEMORY_TARGET 参数的值,使它们保持一致或者 MEMORY_TARGET 的值更大。你可以通过修改 Oracle 数据库的参数文件(init.ora 或 spfile)来更改这些参数的值。具体操作步骤如下: 1. 使用 SQLPLUS 连接到 Oracle 数据库,以 SYSDBA 用户身份登录: ``` sqlplus / as sysdba ``` 2. 查看当前 SGA 和 PGA 的大小: ``` SHOW SGA; SHOW PARAMETER PGA_AGGREGATE_TARGET; ``` 3. 关闭数据库实例: ``` SHUTDOWN IMMEDIATE; ``` 4. 编辑参数文件(init.ora 或 spfile),将 MEMORY_TARGETSGA_MAX_SIZE 参数设置为相同的值,或者 MEMORY_TARGET 的值更大。例如: ``` MEMORY_TARGET=3G SGA_MAX_SIZE=3G ``` 5. 启动数据库实例: ``` STARTUP ``` 6. 再次查看 SGA 和 PGA 的大小,确认修改成功: ``` SHOW SGA; SHOW PARAMETER PGA_AGGREGATE_TARGET; ``` 这样就可以避免 SGA_MAX_SIZEMEMORY_TARGET 值不一致的错误了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值