前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 10g SGA 的自动化管理

Oracle 10g SGA 的自动化管理

作者头像
Leshami
发布2022-03-08 17:52:09
6930
发布2022-03-08 17:52:09
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界

--==============================

--Oracle 10g SGA 的自动化管理

--==============================

/*

在SGA中每一个单独的组件究竟需要多少内存呢?在Oracle 10g 中可以自动化管理大多数SGA参数。

一、什么是SGA

简言之,系统全局区(SGA)仅仅是在Oracle实例启动时的共享内存结构,提供了实例和控制它行为的一些信息。下面

的表中给出了关于SGA一些特定组件的概要,控制内存大小分配的可变参数,以及这些特定的组件将影响Oracle server

哪些范围,并给出了一个简短的描述。从这个简短的列表中我们可以发现,在没有彻底地理解我们的应用程序后台的工

作状况下,以我们能力去推断并给这些组件中每一个设定内存的大小并不总是最优的选择,因为有大量的选项可供选择。

我们并不希望发生浪费可用内存的情况。

二、SGA组件

--组件列表使用原使文档,未翻译

SGA COMPONENT

SIZE CONTROLED BY

AREAS OF INFLUENCE

SIMPLE DESCRIPTONS

Shared Pool

SHARED_POOL_SIZE

Library Cache · Shared SQL areas · Private SQL areas · PL/SQL procedures and packages · Various control structures

Oracle needs to allocate & deallocate memory as SQL or procedural code is executed based on the individual needs of users' sessions and in accordance to the LRU algorithm.

Dictionary Cache · Row cache · Library cache

Highly accessed memory structures that provide information on object structures to SQL statements being parsed.

Java Pool

JAVA_POOL_SIZE

· Run state · Methods · Classes · Session code · Data in JVM

Memory available for the Java memory manager to use for all things Java.

Streams Pool

STREAMS_POOL_SIZE

· Stream activity

New to Oracle 10g, memory available for stream processing.

Redo Log Buffer

LOG_BUFFER

· Redo entries

Holds changes made to data and allows for the reconstruction of data in the case of failure.

Database Buffer Cache

DB_2K_CACHE_SIZE DB_4K_CACHE_SIZE DB_8K_CACHE_SIZE DB_16K_CACHE_SIZE DB_32K_CACHE_SIZE DB_KEEP_CACHE_SIZE DB_RECYCLE_CACHE_SIZE

· Write list · LRU list

Holds copies of data requested by SQL and reduces requests to disk by having data in memory. You may have many different buffer caches that help segregate on usage patterns.

Large Pool

LARGE_POOL_SIZE

· Shared server · Oracle XA · I/O server processes · Backup & restore

For large memory allocations.

你可以通过初始化参数查看并控制SGA的大小 。下面是一个查询并提供了输出结果。 */

代码语言:javascript
复制
 select name, value
 from v$parameter
 where name in ('shared_pool_size', 'java_pool_size', 'streams_pool_size',
  'log_buffer', 'db_cache_size', 'db_2k_cache_size', 'db_4k_cache_size',
  'db_8k_cache_size', 'db_16k_cache_size', 'db_32k_cache_size',
  'db_keep_cache_size', 'db_recycle_cache_size', 'large_pool_size');
 NAME VALUE
 ------------------------- ---------
 shared_pool_size 83886080
 large_pool_size 8388608
 java_pool_size 50331648
 streams_pool_size 54525952
 db_cache_size 25165824
 db_2k_cache_size 0
 db_4k_cache_size 0
 db_8k_cache_size 0
 db_16k_cache_size 0
 db_32k_cache_size 0
 db_keep_cache_size 0
 db_recycle_cache_size 0
 log_buffer 262144
 13 rows selected.
/*

三、使用Oracle自动化SGA的管理

使用Oracle 自动共享内存优化,通过设定一个新的SGA_TARGET 参数,即仅仅是告诉Oralce实例SGA目标大小是多少,

Oracle将自动管理一系列SGA的组件。Oracle在你所选的组件中将集中管理,动态分配你设定的SGA_TARGET值。即不再

需要人为的为SHARED_POOL_SIZE, JAVA_POOL_SIZE, LARGE_POOL_SIZE, 或DB_CACHE_SIZE 设定值,Oracle将会自动对

其分配合适的大小。一旦你为SGA_TARGET设定了你所需要的值,上述的这些值将呈现为,并且新的参数将被创建并指派

为 __SHARED_POOL_SIZE, __JAVA_POOL_SIZE, LARGE_POOL_SIZE, and __DB_CACHE_SIZE.在这些区域,Oracle将根据系

统和内存所需的工作负荷,基于内部统计信息来分配更多的内存。Oracle将不再管理DB_KEEP_CACHE_SIZE,

DB_RECYCLE_CACHE_SIZE, DBnK_CACHE_SIZE, 或the STREAMS_POOL_SIZE ,但是你依然可以决定这些参数的值。这些

设置仅仅能通过使用SPFILE,Oracle将动态的使得这些行为再次产生。注意,SGA_TARGET值的大小是所有组成SGA组件的

大小之和。当指定一个SGA_TARGET值时,不仅仅是参数控制,应该考虑所有的这些组件将不再被控制。

四、设置Oracle SGA 自动控制功能

1.查看你的系统是否已经使用了SGA自动控制

代码语言:javascript
复制
 */
 SQL> show parameter sga_target
 NAME TYPE VALUE
 ------------------------------------ ----------- --------
 sga_target big integer 0
 /*

2.修改SGA自动控制的大小

代码语言:javascript
复制
*/
 SQL> alter system set sga_target=216m;
 System altered.
  /*

3.完成切换

当切换到自动共享内存优化后,一个有趣的事情是你的SPFILE 将发生变化,并且有下列参数被定义,不论你的实例名

是什么,注意k101是我的实例名。

代码语言:javascript
复制
*/
 k101.__db_cache_size=25165824
 k101.__java_pool_size=50331648
 k101.__large_pool_size=8388608
 k101.__shared_pool_size=83886080
 /*

除此之外,你可以使用前面使用过的SQL语句去查看SGA的这些设置,现在他们有一个零值。

代码语言:javascript
复制
*/
 select name, value
 from v$parameter
 where name in ('shared_pool_size', 'java_pool_size', 'streams_pool_size',
  'log_buffer', 'db_cache_size', 'db_2k_cache_size', 'db_4k_cache_size',
  'db_8k_cache_size', 'db_16k_cache_size', 'db_32k_cache_size',
  'db_keep_cache_size', 'db_recycle_cache_size', 'large_pool_size');
 NAME VALUE
 ------------------------- ---------
 shared_pool_size 0
 large_pool_size 0
 java_pool_size 0
 streams_pool_size 0
 db_cache_size 0
 db_2k_cache_size 0
 db_4k_cache_size 0
 db_8k_cache_size 0
 db_16k_cache_size 0
 db_32k_cache_size 0
 db_keep_cache_size 0
 db_recycle_cache_size 0
 log_buffer 262144
 13 rows selected.

--当设定了SGA_TARGET 后,可以修改查询语句使用新创建的带有下划线的参数变量作为查询条件。

代码语言:javascript
复制
 select name, value
 from v$parameter
 where name in ('__shared_pool_size', '__java_pool_size',
  'streams_pool_size', 'log_buffer', '__db_cache_size', 'db_2k_cache_size',
  'db_4k_cache_size', 'db_8k_cache_size', 'db_16k_cache_size',
  'db_32k_cache_size', 'db_keep_cache_size', 'db_recycle_cache_size',
  '__large_pool_size');
 NAME VALUE
 ------------------------- ---------
 __shared_pool_size 67108864
 __large_pool_size 4194304
 __java_pool_size 8388608
 streams_pool_size 0
 __db_cache_size 142606336
 db_2k_cache_size 0
 db_4k_cache_size 0
 db_8k_cache_size 0
 db_16k_cache_size 0
 db_32k_cache_size 0
 db_keep_cache_size 0
 db_recycle_cache_size 0
 log_buffer 262144
 /*

切换到自动共享内存优化非常容易,仅仅是设定一个初始化参数。基于负载的情况下,这个管理方式该是确定的,尽管有不同的建议

这些数量应当被如何分配。我更乐于使用他们作为一个单独的组件。没有理由不去规避风险来使用自动共享内存优化。当然,我会先

在测试的环境中来使用它。我也建议在使用自动共享内存优化之前,做一个初始化参数快照然后比较使用动共享内存优化。这样也很

容易切换回去,仅仅是重新设置SGA_TARGET,然后再单独设置各个组件到原来的值即可。 */

五、原文出处:

September 2, 2004 Automate the Sizing of your SGA in Oracle 10g By James Koopmann http://www.databasejournal.com/features/oracle/article.php/10893_3400301_1/Automate-the-Sizing-of-your-SGA-in-Oracle-10g.htm */ /*

六、更多:

SQL/PLSQL 基础

Oralce 10g 使用DBCA创建数据库

使用Uniread实现SQLplus翻页功能

Linux (RHEL 5.4)下安装Oracle 10g R2

VmWare6.5.2下安装RHEL 5.4(配置Oracle安装环境)

Oracle相关

Oracle实例和Oracle数据库(Oracle体系结构)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档