怎么进行oracle SGA的参数设置

怎么进行oracle SGA的参数设置,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

oracle SGA之参数设置

SGA(system global area 系统全局区):用来存放操作的数据(Buffer Cache Size)、

库缓存(library cache)、数据字典(data dictionary cache)等控制信息的内存区域

SGA中的内存大多数是共享的。

SGA中至少存在以下三个组件:

■ The database buffer cache

■ The log buffer

■ The shared pool

以下是可选的组件:

■ A large pool

■ A Java pool

■ A Streams pool

The Shared Pool(共享池):

共享池是SGA中最复杂的组件,可以划分为几十个子结构。

其中一下几个组件比较重要

■ The library cache

■ The data dictionary cache

■ The PL/SQL area

■ The SQL query and PL/SQL function result caches

oracle 提供了多个初始化参数,来设置SGA中各个部分的内存大小

SQL> show parameter shared_pool_size;

NAME                                 TYPE        VALUE

———————————— ———– ——————————

shared_pool_size                     big integer 244M

控制共享池的大小,实例运行期间可以动态调整

SQL> show parameter java_pool_size; 

NAME                                 TYPE        VALUE

———————————— ———– ——————————

java_pool_size                       big integer 52M

 控制JAVA池的大小,实例运行期间可以动态调整

SQL> show parameter large_pool_size;

NAME                                 TYPE        VALUE

———————————— ———– ——————————

large_pool_size                      big integer 60M

 控制大池的大小,实例运行期间可以动态调整

SQL> show  parameter streams_pool_size;

NAME                                 TYPE        VALUE

———————————— ———– ——————————

streams_pool_size                    big integer 0

 控制流池的大小,实例运行期间可以动态调整

SQL> show parameter db_cache_size;

NAME                                 TYPE        VALUE

———————————— ———– ——————————

db_cache_size                        big integer 160M

控制数据缓冲区的大小,实例运行期间可以动态调整

SQL> show parameter log_buffer;

NAME                                 TYPE        VALUE

———————————— ———– ——————————

log_buffer                           integer     5603328

 控制日志缓冲区的大小,该参数在运行期间是不能修改的。

SQL> show parameter sga_target;

NAME                                 TYPE        VALUE

———————————— ———– ——————————

sga_target                           big integer 0

 与SGA的自动管理相关,如果值是零,需要DBA手动管理SGA

SQL> show parameter sga_max_size;

NAME                                 TYPE        VALUE

———————————— ———– ——————————

sga_max_size                         big integer 524M

 SGA可以使用的最大内存,sga_target的值不能超过sga_max_size,在为SGA中个部分组成

 分配内存时,SGA的总内存不能超过sga_max_size设置的值,否则会报错。sga_max_size

 在实例运行期间不能够动态调整,必须先修改初始化参数文件,然后重启实例。

 sga_max_size参数仅在实例运行期间有效,如果实例启动时发现SGA各部分组成的参数值

 总和大于sga_max_size,实例会忽略当前设置的sga_max_size值,并修改sga_max_size为

 当前SGA的最大值。

SQL> show parameter statistics_level;

NAME                                 TYPE        VALUE

———————————— ———– ——————————

statistics_level                     string      TYPICAL

 该值与SGA内存的自动管理相关,值为typical或者all的时候oracle会根据会更加收集到的

 相关统计信息作为参照,确定如何分配SGA中的各部分内存。

 oracle SGA中的各部分内存都是以粒度进行分配与回收。粒度的大小不能由DBA设定,取决

 与SGA的大小,系统平台的类型。

 在大多数平台下SGA<1G 粒度是4MB,SGA>1G 粒度是16MB。

 在win32平台下,SGA>1G,粒度是8MB。

 设置oracleSGA中各部分的值时,需要时oracle 粒度的整倍数,否则oracle会自动进行调整

SQL> select component,granule_size

  2  from v$sga_dynamic_components;

COMPONENT                                                        GRANULE_SIZE

—————————————————————- ————

shared pool                                                           4194304

large pool                                                            4194304

java pool                                                             4194304

streams pool                                                          4194304

DEFAULT buffer cache                                                  4194304

KEEP buffer cache                                                     4194304

RECYCLE buffer cache                                                  4194304

DEFAULT 2K buffer cache                                               4194304

DEFAULT 4K buffer cache                                               4194304

DEFAULT 8K buffer cache                                               4194304

DEFAULT 16K buffer cache                                              4194304

DEFAULT 32K buffer cache                                              4194304

Shared IO Pool                                                        4194304

ASM Buffer Cache                                                      4194304

14 rows selected

oracle SGA中各部分组成粒度值的查看。

SQL> select name,bytes from v$sgainfo;

NAME                                  BYTES

——————————– ———-

Fixed SGA Size                      1375820    存储数据库与实例的状态信息

Redo Buffers                        5795840

Buffer Cache Size                 167772160

Shared Pool Size                  255852544

data dictionary cache                   62914560

Java Pool Size                     54525952

Streams Pool Size                         0

Shared IO Pool Size                       0

Granule Size                        4194304

Maximum SGA Size                  548237312

Startup overhead in Shared Pool    58720256

Free SGA Memory Available                 0

SGA中各部分内存分配情况查看。

SQL> select * from v$sga;

NAME                      VALUE

——————– ———-

Fixed Size              1375820

Variable Size         373293492 包括共享池,大池,java池,流池几个组成部分。

Database Buffers      167772160  数据缓冲区(Buffer Cache Size)

Redo Buffers            5795840

SGA中各部分内存分配情况查看。

SGA中各个部分所使用的内存只能供自己使用,相互之间无法共享。如果Java Pool分配了

1G的内存,但是当前数据库并没有运用流特性,分配给流池的空间也不能被SGA中的其他

组件使用。所以使用alter system set 设置SGA中各部分组成的内存的时候,需要谨慎

设置以免导致系统内存的浪费,性能损耗。

SQL> show parameter shared_pool_size; 

NAME                                 TYPE        VALUE

———————————— ———– ——————————

shared_pool_size                     big integer 244M

SQL> alter system set shared_pool_size=230m;

System altered

SQL> show parameter shared_pool_size;

NAME                                 TYPE        VALUE

———————————— ———– ——————————

shared_pool_size                     big integer 232M    

oracle自动根据粒度调整为粒度(此处是4MB)进行调整。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/200091.html

(0)
上一篇 2021年11月20日
下一篇 2021年11月20日

相关推荐

发表回复

登录后才能评论