- 浏览: 244160 次
最新评论
sga_target和sga_max_size
1.说明
sga_max_size是从9i以来就有的作为设置SGA大小的一个参数,而SGA_TARGET则是从10g才有的一个新参数,作为配合10g自动管理SGA而出现的
sga_target是10g的新特性,只要sga_target为非零值,那么内存组件就是采用动态分配原则,由Oracle自动调整各内存组件的大小。
2.参数查看:
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1456M
sga_target big integer 0 --自动管理关闭,每个值都是固定的。
SQL> select name,bytes/1024/1024 "size(MB)",resizeable from v$sgainfo;
NAME size(MB) RES
-------------------------------- ---------- ---
Fixed SGA Size 2.12534332 No
Redo Buffers 7.359375 No
Buffer Cache Size 544 Yes
Shared Pool Size 256 Yes
Large Pool Size 16 Yes
Java Pool Size 16 Yes
Streams Pool Size 16 Yes
Shared IO Pool Size 0 Yes
Granule Size 16 No --Granule Size 为16M
Maximum SGA Size 1449.48828 No --SGA_MAX_SIZE对应的值
Startup overhead in Shared Pool 84.60112 No
NAME size(MB) RES
-------------------------------- ---------- ---
Free SGA Memory Available 592
注意,resizeable值为NO的,都是不可动态调整的值,
而所有可动态调整的几个内存组件则正好等于SGA_TARGET的值:
2.12534332+7.359375+544+256+16+16+16+16+84.60112+592~1449.48828
我们也可以从v$sga_dynamic_components这个视图了解各内存组件的内存分配情况,和v$sgainfo内容基本是一致的,除了没有展示Gradual Size这一项
SQL> select component,current_size/1024/1024 "size(MB)" from v$sga_dynamic_components;
COMPONENT size(MB)
---------------------------------------------------------------- ----------
shared pool 256
large pool 16
java pool 16
streams pool 16
DEFAULT buffer cache 544
KEEP buffer cache 0
RECYCLE buffer cache 0
DEFAULT 2K buffer cache 0
DEFAULT 4K buffer cache 0
DEFAULT 8K buffer cache 0
DEFAULT 16K buffer cache 0
DEFAULT 32K buffer cache 0
Shared IO Pool 0
ASM Buffer Cache 0
14 rows selected
SGA = shared pool + large pool + java pool + streams pool + DEFAULT buffer cache = 256+16+16+16+544=848M
这个算出来的SGA值比SGA_TARGET的值少了4M,其实就是那个Gradual Size的值
SQL> select name,issys_modifiable from v$parameter where name like '%sga%';
NAME ISSYS_MOD
----------------------------------- ---------
sga_max_size FALSE
pre_page_sga FALSE
lock_sga FALSE
sga_target IMMEDIATE
ISSYS_MODIFIABLE列的值为FALSE的,就是不能动态修改的参数,需重启生效,为IMMEDIATE的,即可以动态修改
3.动态修改sga_target的值
SQL> alter system set sga_target=1000m;
System altered.
SQL> alter system set sga_target=2000m;
alter system set sga_target=2000m
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00823: Specified value of sga_target greater than sga_max_size
3.1 如果不带scope参数,默认为both,但要在内存中生效,必须满足SGA_TARGET<SGA_MAX_SIZE的条件,否则会报上述错误
报错解决步骤:
1)手动新建一个pfile
vi pfilepoc.ora
2)将原来的spfilepoc.ora里面的内容复制到pfilepoc.ora里面,修改里面错误的配置。
3)startup pfile='/u02/oracle/dbs/pfilepoc.ora';
4)重新创建spfile
create spfile from pfile='/u02/oracle/dbs/pfilepoc.ora';
5)再次重启
shutdown immediate
startup
3.2 如果设置大于sga_max_size---启动会报错
SQL> alter system set sga_target=2000m scope=spfile; --超过了sga_max_size的值1456M
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
--启动会报错
SQL> startup
ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 2016M
尝试手动修改pfile里面的memory_target的值
vi /u01/oracle/dbs/pfiletinadb.ora
*.memory_target=2522532352
遇到另外一个报错:
SQL> startup pfile='/u01/oracle/dbs/pfiletinadb.ora'
ORA-00845: MEMORY_TARGET not supported on this system
报错是由于/dev/shm过小导致的,而且/dev/shm是一个tmpfs的文件系统,该文件系统是基于内存的,大小是随着物理内存的大小动态改变的,
一般为物理内存的一半;tmpfs文件系统可以使用物理内容,也可以使用swap。
/dev/shm的值必须大于memory_max_target
[root@oratest ~]# df -Th /dev/shm
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 1.9G 861M 1.1G 45% /dev/shm
[root@oratest ~]# vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=2G 0 0
[root@oratest ~]# umount /dev/shm
[root@oratest ~]# mount /dev/shm
[root@oratest ~]# df -Th /dev/shm
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
SQL> startup pfile='/u01/oracle/dbs/pfiletinadb.ora'
SQL> show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
memory_max_target big integer 2000M
memory_target big integer 2000M
shared_memory_address integer 0
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 2000m
sga_target big integer 1504m
spfile中的内容:
*.memory_max_target=2097152000
*.memory_target=2097152000
*.sga_target=1577058304
3.3 如果设置sga_max_size比sga_target小
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1648M
sga_target big integer 1008M
SQL> alter system set sga_max_size=500m scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
启动也会报错:
SQL> startup
ORA-00823: Specified value of sga_target greater than sga_max_size
结论:在11g中,这个SGA_TARGET只能设置是小于等于SGA_MAX_SIZE的大小,设置比它小,oracle会自动帮你调整,设置比它大,会报错!
4.设置的值与显示不同的原因:
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1456M
sga_target big integer 1408M
可以看到,当调整了SGA_TARGET参数从0调整为1400M,这里还有个比较有意思的地方,这多出来的8M又是什么呢?
SQL> select 1400/16 "Granual Count" from dual;
Granual Count
-------------
87.5
SQL> select 88*16 "SGA_SIZE(MB)" from dual;
SGA_SIZE(MB)
------------
1408
刚才说了Granual Size的大小为16M,由于Granual必须完整地分配,因此会分配给SGA共88个Granual,即88*16=1408M,也就是多给了8M
5.对比下,开启自动管理sga后,内部的参数发生了哪些变化:
SQL> select component,current_size/1024/1024 "size(MB)" from v$sga_dynamic_components;
COMPONENT size(MB)
---------------------------------------------------------------- ----------
shared pool 256
large pool 16
java pool 16
streams pool 16
DEFAULT buffer cache 1088 --这个值变化了。
KEEP buffer cache 0
RECYCLE buffer cache 0
DEFAULT 2K buffer cache 0
DEFAULT 4K buffer cache 0
DEFAULT 8K buffer cache 0
DEFAULT 16K buffer cache 0
DEFAULT 32K buffer cache 0
Shared IO Pool 0
ASM Buffer Cache 0
14 rows selected
SQL> select name,bytes/1024/1024 "size(MB)",resizeable from v$sgainfo;
NAME size(MB) RESIZEABLE
-------------------------------- ---------- ----------
Fixed SGA Size 2.12534332 No
Redo Buffers 7.359375 No
Buffer Cache Size 1088 Yes
Shared Pool Size 256 Yes
Large Pool Size 16 Yes
Java Pool Size 16 Yes
Streams Pool Size 16 Yes
Shared IO Pool Size 0 Yes
Granule Size 16 No
Maximum SGA Size 1449.48828 No
Startup overhead in Shared Pool 93.4275817 No
Free SGA Memory Available 48 ---重要参数
12 rows selected
注意,48就是1456-1408得到的,相当于做了个预留,告诉SGA,你可以现在只用1408M
但如果想增加,可以再多用48M,达到1456M。而这个时候只要SGA_TARGET重新设置的值没有超过SGA_MAX_SIZE的值,就可以在不停库的情况下增加SGA大小,这样做是有好处的
6.关闭自动管理sga
把SGA_TARGET设置为0,即表示禁用10g的新特性——自动分配内存,这样我们可以对各个内存组件的值进行单独设置,对于特殊的应用场景,
有时候也是需要的
SQL> alter system set sga_target=0;
设置SGA_TARGET=0以后,已经分配的内存组件的值不会变化,如果不设置新值,那么依旧保持原来的值,除非单独设置,
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1456M
sga_target big integer 0
总结:
1.SGA_MAX_SIZE是静态参数,而SGA_TARGET可以动态修改
2.当先给SGA_MAX_SIZE设置了一个较大的值,重启数据库后,SGA_TARGET可以依然保持原有大小,相当于给SGA_TARGET先预留了一些内存,
预先设置好SGA可分配内存,等到数据库出现压力导致SGA内存不足,可以直接通过sga_target动态修改到这一上限而无需停库。
3.当给SGA_TARGET设置非零值时,表示采用内存组件内存由oracle动态调整,如shared pool,db buffer cache等,这些内存组件只会跟着
SGA的大小动态进行调整(增大或减小),与其他值无关。
4.当SGA_TARGET设置为零时,表示禁用内存组件由SGA自动管理,如果未做单独设置,那么保持原有值。此时可以根据具体场景需求,单独
为某个内存组件配置合理的内存大小。
5.在11g中,这个SGA_TARGET只能设置是小于等于SGA_MAX_SIZE的大小,设置比它小,oracle会自动帮你调整,设置比它大,会报错。
1.说明
sga_max_size是从9i以来就有的作为设置SGA大小的一个参数,而SGA_TARGET则是从10g才有的一个新参数,作为配合10g自动管理SGA而出现的
sga_target是10g的新特性,只要sga_target为非零值,那么内存组件就是采用动态分配原则,由Oracle自动调整各内存组件的大小。
2.参数查看:
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1456M
sga_target big integer 0 --自动管理关闭,每个值都是固定的。
SQL> select name,bytes/1024/1024 "size(MB)",resizeable from v$sgainfo;
NAME size(MB) RES
-------------------------------- ---------- ---
Fixed SGA Size 2.12534332 No
Redo Buffers 7.359375 No
Buffer Cache Size 544 Yes
Shared Pool Size 256 Yes
Large Pool Size 16 Yes
Java Pool Size 16 Yes
Streams Pool Size 16 Yes
Shared IO Pool Size 0 Yes
Granule Size 16 No --Granule Size 为16M
Maximum SGA Size 1449.48828 No --SGA_MAX_SIZE对应的值
Startup overhead in Shared Pool 84.60112 No
NAME size(MB) RES
-------------------------------- ---------- ---
Free SGA Memory Available 592
注意,resizeable值为NO的,都是不可动态调整的值,
而所有可动态调整的几个内存组件则正好等于SGA_TARGET的值:
2.12534332+7.359375+544+256+16+16+16+16+84.60112+592~1449.48828
我们也可以从v$sga_dynamic_components这个视图了解各内存组件的内存分配情况,和v$sgainfo内容基本是一致的,除了没有展示Gradual Size这一项
SQL> select component,current_size/1024/1024 "size(MB)" from v$sga_dynamic_components;
COMPONENT size(MB)
---------------------------------------------------------------- ----------
shared pool 256
large pool 16
java pool 16
streams pool 16
DEFAULT buffer cache 544
KEEP buffer cache 0
RECYCLE buffer cache 0
DEFAULT 2K buffer cache 0
DEFAULT 4K buffer cache 0
DEFAULT 8K buffer cache 0
DEFAULT 16K buffer cache 0
DEFAULT 32K buffer cache 0
Shared IO Pool 0
ASM Buffer Cache 0
14 rows selected
SGA = shared pool + large pool + java pool + streams pool + DEFAULT buffer cache = 256+16+16+16+544=848M
这个算出来的SGA值比SGA_TARGET的值少了4M,其实就是那个Gradual Size的值
SQL> select name,issys_modifiable from v$parameter where name like '%sga%';
NAME ISSYS_MOD
----------------------------------- ---------
sga_max_size FALSE
pre_page_sga FALSE
lock_sga FALSE
sga_target IMMEDIATE
ISSYS_MODIFIABLE列的值为FALSE的,就是不能动态修改的参数,需重启生效,为IMMEDIATE的,即可以动态修改
3.动态修改sga_target的值
SQL> alter system set sga_target=1000m;
System altered.
SQL> alter system set sga_target=2000m;
alter system set sga_target=2000m
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00823: Specified value of sga_target greater than sga_max_size
3.1 如果不带scope参数,默认为both,但要在内存中生效,必须满足SGA_TARGET<SGA_MAX_SIZE的条件,否则会报上述错误
报错解决步骤:
1)手动新建一个pfile
vi pfilepoc.ora
2)将原来的spfilepoc.ora里面的内容复制到pfilepoc.ora里面,修改里面错误的配置。
3)startup pfile='/u02/oracle/dbs/pfilepoc.ora';
4)重新创建spfile
create spfile from pfile='/u02/oracle/dbs/pfilepoc.ora';
5)再次重启
shutdown immediate
startup
3.2 如果设置大于sga_max_size---启动会报错
SQL> alter system set sga_target=2000m scope=spfile; --超过了sga_max_size的值1456M
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
--启动会报错
SQL> startup
ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 2016M
尝试手动修改pfile里面的memory_target的值
vi /u01/oracle/dbs/pfiletinadb.ora
*.memory_target=2522532352
遇到另外一个报错:
SQL> startup pfile='/u01/oracle/dbs/pfiletinadb.ora'
ORA-00845: MEMORY_TARGET not supported on this system
报错是由于/dev/shm过小导致的,而且/dev/shm是一个tmpfs的文件系统,该文件系统是基于内存的,大小是随着物理内存的大小动态改变的,
一般为物理内存的一半;tmpfs文件系统可以使用物理内容,也可以使用swap。
/dev/shm的值必须大于memory_max_target
[root@oratest ~]# df -Th /dev/shm
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 1.9G 861M 1.1G 45% /dev/shm
[root@oratest ~]# vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=2G 0 0
[root@oratest ~]# umount /dev/shm
[root@oratest ~]# mount /dev/shm
[root@oratest ~]# df -Th /dev/shm
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
SQL> startup pfile='/u01/oracle/dbs/pfiletinadb.ora'
SQL> show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
memory_max_target big integer 2000M
memory_target big integer 2000M
shared_memory_address integer 0
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 2000m
sga_target big integer 1504m
spfile中的内容:
*.memory_max_target=2097152000
*.memory_target=2097152000
*.sga_target=1577058304
3.3 如果设置sga_max_size比sga_target小
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1648M
sga_target big integer 1008M
SQL> alter system set sga_max_size=500m scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
启动也会报错:
SQL> startup
ORA-00823: Specified value of sga_target greater than sga_max_size
结论:在11g中,这个SGA_TARGET只能设置是小于等于SGA_MAX_SIZE的大小,设置比它小,oracle会自动帮你调整,设置比它大,会报错!
4.设置的值与显示不同的原因:
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1456M
sga_target big integer 1408M
可以看到,当调整了SGA_TARGET参数从0调整为1400M,这里还有个比较有意思的地方,这多出来的8M又是什么呢?
SQL> select 1400/16 "Granual Count" from dual;
Granual Count
-------------
87.5
SQL> select 88*16 "SGA_SIZE(MB)" from dual;
SGA_SIZE(MB)
------------
1408
刚才说了Granual Size的大小为16M,由于Granual必须完整地分配,因此会分配给SGA共88个Granual,即88*16=1408M,也就是多给了8M
5.对比下,开启自动管理sga后,内部的参数发生了哪些变化:
SQL> select component,current_size/1024/1024 "size(MB)" from v$sga_dynamic_components;
COMPONENT size(MB)
---------------------------------------------------------------- ----------
shared pool 256
large pool 16
java pool 16
streams pool 16
DEFAULT buffer cache 1088 --这个值变化了。
KEEP buffer cache 0
RECYCLE buffer cache 0
DEFAULT 2K buffer cache 0
DEFAULT 4K buffer cache 0
DEFAULT 8K buffer cache 0
DEFAULT 16K buffer cache 0
DEFAULT 32K buffer cache 0
Shared IO Pool 0
ASM Buffer Cache 0
14 rows selected
SQL> select name,bytes/1024/1024 "size(MB)",resizeable from v$sgainfo;
NAME size(MB) RESIZEABLE
-------------------------------- ---------- ----------
Fixed SGA Size 2.12534332 No
Redo Buffers 7.359375 No
Buffer Cache Size 1088 Yes
Shared Pool Size 256 Yes
Large Pool Size 16 Yes
Java Pool Size 16 Yes
Streams Pool Size 16 Yes
Shared IO Pool Size 0 Yes
Granule Size 16 No
Maximum SGA Size 1449.48828 No
Startup overhead in Shared Pool 93.4275817 No
Free SGA Memory Available 48 ---重要参数
12 rows selected
注意,48就是1456-1408得到的,相当于做了个预留,告诉SGA,你可以现在只用1408M
但如果想增加,可以再多用48M,达到1456M。而这个时候只要SGA_TARGET重新设置的值没有超过SGA_MAX_SIZE的值,就可以在不停库的情况下增加SGA大小,这样做是有好处的
6.关闭自动管理sga
把SGA_TARGET设置为0,即表示禁用10g的新特性——自动分配内存,这样我们可以对各个内存组件的值进行单独设置,对于特殊的应用场景,
有时候也是需要的
SQL> alter system set sga_target=0;
设置SGA_TARGET=0以后,已经分配的内存组件的值不会变化,如果不设置新值,那么依旧保持原来的值,除非单独设置,
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1456M
sga_target big integer 0
总结:
1.SGA_MAX_SIZE是静态参数,而SGA_TARGET可以动态修改
2.当先给SGA_MAX_SIZE设置了一个较大的值,重启数据库后,SGA_TARGET可以依然保持原有大小,相当于给SGA_TARGET先预留了一些内存,
预先设置好SGA可分配内存,等到数据库出现压力导致SGA内存不足,可以直接通过sga_target动态修改到这一上限而无需停库。
3.当给SGA_TARGET设置非零值时,表示采用内存组件内存由oracle动态调整,如shared pool,db buffer cache等,这些内存组件只会跟着
SGA的大小动态进行调整(增大或减小),与其他值无关。
4.当SGA_TARGET设置为零时,表示禁用内存组件由SGA自动管理,如果未做单独设置,那么保持原有值。此时可以根据具体场景需求,单独
为某个内存组件配置合理的内存大小。
5.在11g中,这个SGA_TARGET只能设置是小于等于SGA_MAX_SIZE的大小,设置比它小,oracle会自动帮你调整,设置比它大,会报错。
发表评论
-
ETL工具--kettle简介
2016-02-24 11:21 0oracle ETL工具---数据迁移 常用的有:OWB(o ... -
oracle 游标实例
2015-12-31 17:23 1230oracle游标 游标-----内存 ... -
10053事件分析
2015-12-25 17:37 8211)10053介绍: 10053 事件是oracle 提供的用 ... -
oracle绑定变量学习
2015-12-25 17:01 1625绑定变量(binding variable) ... -
oracle 绑定变量
2015-12-24 17:26 0关键词: 绑定变量(binding variable),共享池 ... -
oracle插入大量数据
2015-12-23 17:35 1444oracle插入大量数据 1.生 ... -
ORA-03113:end-of-file on communication channel
2015-12-23 14:32 1183测试上面的一个库 plsql报错:shared memory ... -
oracle分区表【转】
2015-12-23 14:20 469oracle分区表 1.表空间及 ... -
迁移数据文件到ASM【转】
2015-12-23 11:53 8051.迁移数据文件到ASM 1) ... -
adrci命令
2015-12-23 11:46 3121一、adrci说明 在oracle11g中,dump ... -
用户+角色+权限
2015-12-21 17:58 930角色与用户权限的学习 ... -
oracle database link
2015-12-21 17:08 914目前我的数据库里只有tinadb一个实例,要创建db link ... -
oracle回收站
2015-12-21 14:22 465oracle回收站 1.drop table books; ... -
使用nid修改sid和dbname
2015-12-21 15:29 819如非必要,不建议在生产库上对dbid进行修改 1、修改dbi ... -
rman模拟故障恢复实验
2015-12-18 16:08 1199补充1:restore database和recover da ... -
rman命令学习-tina(下)
2015-12-18 16:07 1198五、rman删除 delete命令 删除相关的 ... -
rman命令学习-tina(上)
2015-12-18 16:06 927RMAN学习-tina rman的功能非常强大,下面我们来一 ... -
oracle profile介绍
2015-12-16 17:34 658profile文件的介绍: Oracle系统中的profi ... -
oracle缩小表空间
2015-12-18 16:59 1797oracle缩小表空间: oracle常用的此类命令Alte ... -
oracle数据库的启动和关闭【转】
2015-12-16 15:02 1182数据库的启动和关闭 Or ...
相关推荐
### SGA学习笔记 #### 一、System Global Area (SGA) 概述 系统全局区域(System Global Area, SGA)是Oracle...通过合理设置SGA_MAX_SIZE和SGA_TARGET等参数,并启用ASMM,可以显著提高数据库的响应速度和稳定性。
然后,查询 SGA 相关参数,特别是 `sga_max_size` 和 `sga_target`: ``` Show parameter sga; ``` 2. **更改 SGA 设置**: - 若要更改 `sga_max_size`(最大可分配的 SGA 大小),执行以下命令: ``` alter...
通过合理设置SGA_MAX_SIZE、SGA_TARGET等参数,并根据业务需求调整各个池的大小,可以使Oracle数据库更好地适应不同的工作负载,从而提高整体性能。同时,建议定期监控SGA的使用情况,以便及时调整配置。
"Oracle 11g调整物理内存提示...我们还讨论了 Oracle 11g 中的内存管理机制,包括 MEMORY_TARGET、MEMORY_MAX_TARGET 和 SGA_TARGET 三个参数的作用。通过正确地设置这些参数,可以提高 Oracle 数据库的性能和稳定性。
在10g及以上的版本中,设置SGA_MAX_SIZE=SGA_TARGET,以及在11g版本中确保MEMORY_TARGET和MEMORY_MAX_TARGET未设置,这样才能确保数据库启动时不使用DISM。 文章还提供了一个案例,描述了在某省BOSS系统中发生的...
- 当`MEMORY_MAX_TARGET`和`MEMORY_TARGET`都被设置时,如果`MEMORY_MAX_TARGET`的值小于`MEMORY_TARGET`,则`MEMORY_MAX_TARGET`将自动调整为与`MEMORY_TARGET`相等。 - 如果不希望Oracle自动管理SGA和PGA的大小,...
AMM主要通过两个参数来控制:`MEMORY_TARGET` 和 `MEMORY_MAX_TARGET`。 ### 了解`MEMORY_TARGET` `MEMORY_TARGET` 参数用于设置Oracle实例可以使用的最大内存总量。它包括共享池、数据缓冲区缓存、重做日志缓冲区...
监控SGA和PGA的使用情况,如通过性能视图(V$视图)收集数据,可以帮助DBA了解当前内存使用状况,并据此调整参数,如SGA_TARGET和SGA_MAX_SIZE控制SGA总大小,PGA_AGGREGATE_TARGET则用于设置PGA的总大小。 此外,...
但需要注意,如果未设置SGA_MAX_SIZE或设置值小于SGA_TARGET,SGA_MAX_SIZE将默认等于SGA_TARGET。同时,SGA_TARGET的值不能超过SGA_MAX_SIZE,以防止内存过度分配。 PGA是每个服务进程的私有内存区域,包含了服务...
SGA_MAX_SIZE和SGA_TARGET是两个重要的参数,SGA_MAX_SIZE指定了SGA可以使用的最大内存大小,而SGA_TARGET指定了SGA可以使用的最大内存大小,并可以自动调节各个区域的大小,使之达到系统性能最佳状态的最合理大小。...
数据库参数配置中,SGA_TARGET 和 SGA_MAX_SIZE 分别设置为 32G 和 32G, PGA_AGGREGATE_TARGET 设置为 16G。 4. 网络配置 网络配置中,每个节点都配置了两个网卡,分别是 ETH0 和 ETH1,网速为 1000Mb/s 和 100Mb...
ALTER SYSTEM SET MEMORY_MAX_TARGET = nM SCOPE = SPFILE; ``` - 其中,`n` 的值应在上一步骤中确定。 - 注意:`SCOPE = SPFILE` 表示修改的是 spfile 文件,这样在下次启动数据库时会生效。 2. **重启数据库*...
例如,通过调整SGA_TARGET和SGA_MAX_SIZE参数控制SGA整体大小,通过PGA_AGGREGATE_TARGET设定PGA总量。 4. **监控和诊断**:Oracle提供了一系列工具和视图来监控内存使用,如V$SGA、V$PGA_TARGET_ADVICE、ASH...
其中提到的关键参数有 DB_BLOCK_SIZE、SGA_MAX_SIZE、SGA_TARGET、SHARED_POOL_SIZE、DB_CACHE_SIZE、STREAM_POOL_SIZE 和 LARGE_POOL_SIZE。正确理解这些参数的作用及它们之间的相互影响对于优化数据库性能至关重要...
在示例中,`sga_target`和`sga_max_size`是控制SGA总大小的参数。`sga_target`用于自动管理SGA各个组件的大小,而`sga_max_size`限制了SGA的总大小。如果`sga_target`设置为0,意味着自动管理功能未启用,SGA大小由...
它可以动态调整`buffer cache`、`shared pool`、`large pool`、`java pool`和`streams pool`等参数的大小,但不能让这些组件的总大小超过`SGA_MAX_SIZE`的值。如果未指定`SGA_MAX_SIZE`,则Oracle会根据各组件的指定...
- `SGA_MAX_SIZE = 2GB`:设置SGA的最大大小为2GB。 - `SGA_TARGET = 0`:禁用自动SGA管理。 - `SHARED_POOL_SIZE = 120MB`:设置共享池大小为120MB。 - `DB_CACHE_SIZE = 896MB`:设置数据库缓存大小为896MB。 ...