others linux服务器运维 django3 监控 k8s golang 数据库 大数据 前端 devops 理论基础 java oracle 运维日志

oracle 12c 内存配置 MEMORY_TARGET sga pga

访问量:1844 创建时间:2021-04-08

oracle 12c 内存查看与基本认识

查看memory设置:

[oracle@esbqasdb oracle]$ sqlplus / as sysdba
SQL> show parameter memory;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
inmemory_adg_enabled                 boolean     TRUE
inmemory_clause_default              string
inmemory_expressions_usage           string      ENABLE
inmemory_force                       string      DEFAULT
inmemory_max_populate_servers        integer     0
inmemory_query                       string      ENABLE
inmemory_size                        big integer 0
inmemory_trickle_repopulate_servers_ integer     1
percent
inmemory_virtual_columns             string      MANUAL

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_max_target                    big integer 0
memory_target                        big integer 0
optimizer_inmemory_aware             boolean     TRUE
shared_memory_address                integer     0
################查看pga和sga设置
SQL> show parameter pga;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit                  big integer 2G
pga_aggregate_target                 big integer 199M
SQL> show parameter pga;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit                  big integer 2G
pga_aggregate_target                 big integer 199M
SQL> show parameter sga;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
allow_group_access_to_sga            boolean     FALSE
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     TRUE
sga_max_size                         big integer 600M
sga_min_size                         big integer 0
sga_target                           big integer 600M
unified_audit_sga_queue_size         integer     1048576

memory_target \sga_target \pga_aggregate_target\memory_max_size解释

memory_target sga_target pga_aggregate_target 作用
MEMORY_TARGET小于等于memory_max_target,二者均为0时为 手动管理内存 0不设置 0不设置 SGA中的shared pool,buffer cache,redo log buffer,java pool,larger pool等内存各组件大小都要明确设定,不能自动调整各组件大小。PGA不能自动增长和收缩。
MEMORY_TARGET小于等于memory_max_target,二者均为0时为 手动管理内存 设置内存值 设置内存值 自动调节SGA中的shared pool,buffer cache,redo log buffer,java pool,larger pool等内存空间的大小。PGA则依赖pga_aggregate_target的大小。sga和pga不能自动增长和自动缩小。
memory_max_target设置而memory_target = 0 同上两种情况 同上两种情况 同上两种情况
memory_target设置为非0值 设置内存大小 设置内存大小 已经设置了参数sga_target和pga_aggregate_target,则这两个参数将各自被分配为最小值为他们的目标值。memory_target = sga_target + pga_aggregate_target,大小和memory_max_size一致。
memory_target设置为非0值 sga_target设置内存大小 没有设置大小(默认0) pga_aggregate_target初始化值=memory_target-sga_target
memory_target设置为非0值 没有设置大小(默认0) sga_target=0 pga_aggregate_target设置大小 sga_target初始化值=memory_target-pga_aggregate_target
memory_target设置为非0值 oracle自动管理内存 没有设置大小 没有设置大小 sga_target和pag_aggregate_target都没有设定大小的情况下,Oracle将对这两个值没有最小值和默认值。Oracle将根据数据库运行状况进行分配大小。但在数据库启动是会有一个固定比例来分配:sga_target = memory_target60% ; pga_aggregate_target = memory_target40%。

手动管理内存改为自动管理内存

设置MEMORY_TARGET 大小(参考机器物理内存设置), 设置SGA_TARGET与PGA_AGGREGATE_TARGET为0.

SQL> ALTER SYSTEM SET MEMORY_TARGET = 1433M SCOPE=SPFILE; 
System altered.
SQL> ALTER SYSTEM SET memory_max_target = 1638M SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET SGA_TARGET = 0 SCOPE=SPFILE; 
System altered.
SQL> ALTER SYSTEM SET SGA_MAX_SIZE=800M SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE=SPFILE;
System altered.
##启动实例时,不加载全部SGA
SQL> alter system set pre_page_sga=FALSE scope=spfile;
System altered.

以上操作需要重启数据库

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  838860800 bytes
Fixed Size                  8798312 bytes
Variable Size             322965400 bytes
Database Buffers          503316480 bytes
Redo Buffers                3780608 bytes
Database mounted.
Database opened.

###--将所有可插入数据库开启,开启一个将all替换为pdb的名字
SQL> alter pluggable database all open;
SQL> show pdbs;
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ESBQASPDB                      READ WRITE NO

更改参数的时候,有4种scope选项,scope就是范围

配置 含义
1、scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改
2、scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了
3、scope=both 内存和spfile都更改
4、 不指定scope搜索参数,等同于scope=both.

自动管理内存改为手动管理内存

设置MEMORY_TARGET=0 ,memory_max_target=0 ,SGA_TARGET=大于0的值,SGA_MAX_SIZE=大于0的值,PGA_AGGREGATE_TARGET=大于0的值,重启实例。

SQL> ALTER SYSTEM SET MEMORY_TARGET = 0 SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET memory_max_target = 0 SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET SGA_TARGET = 1024M SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET SGA_MAX_SIZE=1500M SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 512M SCOPE=SPFILE;
System altered.
####启动实例时,加载SGA全部物理内存。
SQL> alter system set pre_page_sga=TRUE scope=spfile;
System altered.

上面的操作需要重启oracle

登陆评论: 使用GITHUB登陆