Oracle 10g SGA 的自动化管理

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

--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的大小   。下面是一个查询并提供了输出结果。 */

    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 ,但是你依然可以决定这些参数的值。这些

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

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

   

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

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

   

       SQL> show parameter sga_target

       NAME                                 TYPE        VALUE

       ------------------------------------ ----------- --------

       sga_target                           big integer 0

      

       /*

      

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

        SQL> alter system set sga_target=216m;

       System altered.

       /*

      

      

    3.完成切换

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

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

        k101.__db_cache_size=25165824

       k101.__java_pool_size=50331648

       k101.__large_pool_size=8388608

       k101.__shared_pool_size=83886080

      

       /*

      

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

      

       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 后,可以修改查询语句使用新创建的带有下划线的参数变量作为查询条件。

   

   

       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体系结构)

OFDM(正交频分复用)是一种高效的多载波通信技术,它将高速数据流拆分为多个低速子流,并通过多个并行的低带宽子载波传输。这种技术具有高频谱效率、强抗多径衰落能力和灵活的带宽分配优势。 OFDM系统利用大量正交子载波传输数据,子载波间的正交性可有效避免码间干扰(ISI)。其数学达为多个离散子载波信号的线性组合,调制和解调过程通过FFT(快速傅立叶变换)和IFFT(逆快速傅立叶变换)实现。其关键流程包括:数据符号映射到子载波、IFFT转换为时域信号、添加循环前缀以减少ISI、信道传输、接收端FFT恢复子载波数据和解调原始数据。 Matlab是一种广泛应用于科研、工程和数据分析的高级编程语言和交互式环境。在OFDM系统设计中,首先需掌握Matlab基础,包括编程语法、函数库和工具箱。接着,根据OFDM原理构建系统模型,实现IFFT/FFT变换、循环前缀处理和信道建模等关键算法,并通过改变参数(如信噪比、调制方式)评估系统性能。最后,利用Matlab的绘图功能展示仿真结果,如误码率(BER)曲线等。 无线通信中主要考虑加性高斯白噪声(AWGN),其在频带上均匀分布且统计独立。通过仿真OFDM系统,可在不同信噪比下测量并绘制BER曲线。分析重点包括:不同调制方式(如BPSK、QPSK)对BER的影响、循环前缀长度选择对性能的影响以及信道估计误差对BER的影响。 OFDM技术广泛应用于多个领域,如数字音频广播(DAB)、地面数字电视广播(DVB-T)、无线局域网(WLAN)以及4G/LTE和5G移动通信,是这些通信标准中的核心技术之一。 深入研究基于Matlab的OFDM系统设计与仿真,有助于加深对OFDM技术的理解,并提升解决实际通信问题的能力。仿真得到的关键性能指标(如BER曲线)对评估系统可靠性至关重要。未来可进一步探索复杂信道条件下的OFDM性能及系统优化,以适应不同应用场景
51单片机是电子工程领域常用的入门级微控制器,广泛应用于小型电子设备,例如电子时钟。本项目将介绍如何利用51单片机设计一款简单的电子时钟,并通过Keil软件进行程序开发,同时借助Proteus仿真工具进行电路模拟,帮助初学者掌握51单片机的基础应用。 51单片机基于Intel 8051内核,集成了CPU、RAM、ROM、定时器/计数器和I/O端口等功能模块,具有易于编程和性价比高的优势。在电子时钟项目中,主要利用其定时器实现时间的精确计算。Keil μVision是51单片机的常用开发环境,支持C语言和汇编语言编程。开发时,需编写代码以控制单片机显示和更新时间,包括初始化时钟硬件、设置定时器中断、编写中断服务程序以及与LCD显示屏交互等步骤。关键环节如下:一是初始化,配置时钟源(如外部晶振)设定工作频率;二是定时器设置,选择合适模式(如模式1或模式2),设置计数初值以获得所需时间分辨率;三是中断服务,编写定时器中断服务程序,定时器溢出时更新时间并触发中断;四是显示控制,通过I/O端口驱动LCD显示屏显示当前时间。 Proteus是一款虚拟原型设计软件,可用于模拟硬件电路,帮助开发者在编程前验证电路设计。在Proteus中,可搭建51单片机、LCD模块、晶振及电阻、电容等元件,形成电子时钟电路模型。运行仿真后,可观察程序在实际电路中的运行情况,及时发现并解决问题。 实际项目中,51单片机电子时钟还涉及以下知识点:一是时钟信号产生,定时器通过计数外部时钟脉冲实现时间累计,可通过调整晶振频率和定时器初始值设置不同时间间隔;二是LCD接口,需理解LCD的命令和数据传输协议,以及如何控制背光、显示模式、行列地址等;三是中断系统,了解中断概念、中断向量及程序中中断的启用和禁用方法;四是数码管显示,若使用数码管而非LCD,需了解其显示原理及段选、位选的驱动方式。 本项目融合了单片机基础、
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值