• Oracle 内存参数调优设置


    Oracle 数据库系统中起到调节作用的参数叫初始化参数,数据库管理员根据实际情况需要适当调整这些 初始化参数以优化Oracle系统。

     

      1 主要系统参数调优介绍

      

     

      2 系统内存参数的分配

     

      2.1 Oracle 实例= 内存结构 + 进程结构

      内存结构 = SGA + PGA

      SGA(系统全局区): 用户存储数据库信息的内存区,该区域为数据库进程所共享。它包含服务器的数据和控制信息,主要包含高速数据缓冲区、共享池、重做日志缓存区、Java池,大型池等内存结构。

      SGA的设置,理论上SGA的大小应该占OS的内存的 1/3-1/2左右。

      SGA + PGA + OS使用的内存 < 总的物理内存

     

      查看当前系统SGA的信息

    select name,bytes/1024/1024 as "Size(M)"
    from v$sgainfo;

      根据查询信息显示当前还有148M可用的SGA内存,系统当前的内存配置并不是最优的,我们在实际使用过程中根据情况可以重新分配内存。

     

      2.2 SGA的设置原则

      SGA = (db_block_buffers * db_block_size) + (shared_pool_size + large_pool_size + java_pool_size + log_buffers)

     

      (1)缓冲区高速缓存(database_buffer_cache):主要存储由磁盘数据文件写入的数据

      大小:db_block_buffers * db_block_size

    分配原则:缓冲区高速缓存的调整,用户进程所存取的所有数据都是经过缓冲区高速缓存来存取,所以该部分的命中率,对性能至关重要。缓冲区高速缓存的使用情况记录在动态性能表v$sysstat中,可通过查询该表来了解其活动情况,以决定如何调整。

      select name,value from v$sysstat where name in ('dbblock gets','consistent gets','physical reads'); 
         dbblock gets和consistent gets的值是请求数据缓冲区中读的总次数。physical reads的值是请求数据时引起从盘中读文件的次数。从缓冲区高速缓存中读的可能性的高低称为缓冲区的命中率,计算公式:

      Hit Ratio=1-(physical reds/(dbblock gets+consistent gets)) ,

    select 1-(phys.value/(cur.value + con.value)) "HIT RATIO"
    from    v$sysstat cur, v$sysstat con, v$sysstat phys
    where  cur.name = 'db block gets' 
           and con.name = 'consistent gets' 
         and phys.name = 'physical reads';

    如果Hit Ratio<60%~70%,则应增大db_block_buffers的参数值。db_block_buffers可以调整分配给缓冲区高速缓存的内存量,即db_block_buffers可设置分配缓冲区高速缓存的数据块的个数。缓冲区高速缓存的总字节数=db_block_buffers的值*db_block_size的值。db_block_size 的值表示数据块大小的字节数,可查询 v$parameter 表:

    select name,value
    from v$parameter
    where name='db_block_size';

    在修改了上述数据库的初始化参数以后,必须先关闭数据库,在重新启动数据库后才能使新的设置起作用。

     

      (2)共享池(shared_pool_size)

    分配原则:在shared pool中,主要包含两个cache,即Library Cache和Data Dictionary Cache,但是不能对它们进行单独调整,只能通过调整shared_pool_size来进行。

    Library Cache用于存放共享SQL语句和PL/SQL语句,采用LRU(Least Recently Used)算法进行管理,Oracle可以用已经cache在其中的SQL语句,而不需要re-parsing,我们可以通过下面的SQL语句来查询Library Cache的命中率(Hit Ratio):

    select GETHITRATIO
    from v$librarycache
    where namespace ='SQL AREA';

      如果得到的结果小于90%,那么说明命中率不高,需要增大Library Cache了。

     

    Data Dictionary Cache的调整,数据字典缓冲区包含了有关数据库的结构、用户、实体信息。数据字典的命中率,对系统性能影响极大。数据字典缓冲区的使用情况记录在动态性能表v$librarycache中,可通过查询该表来了解其活动情况,以决定如何调整。
    select sum(gets),sum(getmisses)

    from v$rowcache; 

    gets列是对相应项请求次数的统计,getmisses 列是引起缓冲区出错的数据的请求次数。对于频繁访问的数据字典缓冲区,sum(getmisses)/sum(gets)<10%。若大于此百分数,则应考虑增加数据字典缓冲区的容量,即需调整初始化参数shared_pool_size来重新调整分配给共享池的内存量。

      

      (3) 大池(large_pool_size ): 主要用于数据库备份管理器RAM

      原则: 根据实际情况

     

      (4) Java池(java_pool_size): 主要用于Java语言开发

      原则: 根据实际情况

     

      (5) 日志缓冲区(log_buffers): 存储数据修改信息

      原则:根据实际情况

     

      2.3 PGA 程序全局区

      PGA包含单个服务器进程或者单个后台进程的数据和控制信息, 与几个进程共享的SGA正好相反,是一个只被一个进程使用的区域,PGA在创建进程时分配终止进程时回收。

      (1) sort_area_size 用户排序所占的内存

      (2) hash_area_size 用户散列联接, 位图索引

     

      这两个参数在非MTS模式下都是属于PGA,是为每个session单独分配的,在我们的服务器上除了OS + SGA一定要考虑这两部分大小的设置

      OS + SGA + 并发执行的进程数*(sort_area_size + hash_area_size) < 0.7 * OS的总物理内存

     

      3 实例配置

      (1) 物理内存大小

      (2) 操作系统及其他应用程序需要的内存

      (3) 数据库系统使用的是文件设备还是裸设备

      (4) 有多少并发连接

      (5) 应用是OLTP还是OLAP类型

     

      基本分配原则,db_block_buffers尽可能的大, shared_pool_size适度, log_buffer通常几百KB到1M就可以了。 

      1G内存,1个CPU, db_block_size 为8192B

      SGA = 1024 * 0.5 =512   -- 最大一般为OS 内存的一半左右,不超过60%

      (1) databse buffer cache:512 * 40% = 205M     db_block_buffer应设为:52352(409*1024*1024/8192)  -- 一般为sga_max_size的40%

      (2) shared_pool_size: 563* 40% = 205M  -- 一般为sga_max_size的40%

      (3) log_buffer: 128K (128K*CPU个数)

      (4) java_pool_size: 4M

      (5) large_pool_size: 4M

      (6) sort_area_size: 根据实际情况 65K - 2M

      (7) sort_area_retained_size: 根据实际情况

  • 相关阅读:
    线程常用方法 interrupt
    守护线程
    线程常用方法 join
    windows 端口被占用
    线程常用方法 run、start
    使用ILMerge将应用程序合并成一个exe
    process打开程序
    c# 动态生成程序集dll
    使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(四)
    使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(二)
  • 原文地址:https://www.cnblogs.com/lcword/p/12483407.html
Copyright © 2020-2023  润新知