查看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