`

oracle内存调整相关

 
阅读更多

db_cache_size与sga_target关系

db_cache_size设置buffer cache的大小与DB_BLOCK_SIZE相关

当sga_target设置非零时,如果没有设置默认为零(由oracle调整),如果设置,表示用户指定的最小值。

如果sga_target没有设置,默认值为48m或者4MB * number of CPUs * granule size,以较大者为主。

sga_target设置所有sga组件的大小包括如下

Buffer cache (DB_CACHE_SIZE)
* Shared pool (SHARED_POOL_SIZE)
* Large pool (LARGE_POOL_SIZE)
* Java pool (JAVA_POOL_SIZE)
* Streams pool (STREAMS_POOL_SIZE)

如果这些值未设置,由oracle分配,如下池不由自动内存管理控制

* Log buffer
* Other buffer caches, such as KEEP, RECYCLE, and other block sizes
* Fixed SGA and other internal allocations

计算buffer cache命令中率

SELECT NAME, VALUE
  FROM V$SYSSTAT
WHERE NAME IN ('db block gets from cache', 'consistent gets from cache', 'physical reads cache');


 

公式:

1 - (('physical reads cache') / ('consistent gets from cache' + 'db block gets from cache')
如果命中率小于90%应该考虑增加buffer cache

buffer cache按段来保存db_block并按大小分为keep pool和recycle pool
keep保存高频率访问的段,recycle设置可防止不必要的default buffer占用
alter table tablename storage(buffer_pool keep);
计算缓冲池的命中率
SELECT NAME, PHYSICAL_READS, DB_BLOCK_GETS, CONSISTENT_GETS,
      1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS)) "Hit Ratio"
  FROM V$BUFFER_POOL_STATISTICS;

查看对象在buffer cache中的段的大小
SELECT o.OBJECT_NAME, COUNT(*) NUMBER_OF_BLOCKS
     FROM DBA_OBJECTS o, V$BH bh
    WHERE o.DATA_OBJECT_ID = bh.OBJD
      AND o.OWNER         != 'SYS'
    GROUP BY o.OBJECT_NAME
    ORDER BY COUNT(*);

查找对象段的ID号
SELECT DATA_OBJECT_ID, OBJECT_TYPE
  FROM DBA_OBJECTS 
 WHERE OBJECT_NAME = UPPER('segment_name'); 
segment_name一般为数据库对象名。

查看oracle动态组件信息
select * from v$sga_dynamic_component;
share pool
包括library cach与directory cache
前者保存plsql块和sql语句
后者保存数据字典
alter parameter set cursor_sharing=similar;
设置游标共享可以重用相同sql语句
查询时最好用绑定变量方式,查询时对象标识使用schema.表对象格式,这些都会起到最大化使用share cache的目地
如果经常使用sequence可以使用alter sequence sequencename cache value;使用cache保存sequence
查看library cache的信息
SELECT NAMESPACE, PINS, PINHITS, RELOADS, INVALIDATIONS
  FROM V$LIBRARYCACHE
 ORDER BY NAMESPACE;
计算命中率
select sum(PINS),sum(PINHITS) from v$LIBRARYCACHE order by namespace;
计算公式:
sum(PINHITS)/sum(PINS);
share pool分析视图
V$SHARED_POOL_ADVICE
V$LIBRARY_CACHE_MEMORY
V$JAVA_POOL_ADVICE
V$JAVA_LIBRARY_CACHE_MEMORY
计算dircotry cache命中率
查看directory cache相关信息
SELECT parameter
     , sum(gets)
     , sum(getmisses)
     , 100*sum(gets - getmisses) / sum(gets)  pct_succ_gets
     , sum(modifications)                     updates
  FROM V$ROWCACHE
 WHERE gets > 0
 GROUP BY parameter;
命中率
SELECT (SUM(GETS - GETMISSES - FIXED)) / SUM(GETS) "ROW CACHE" FROM V$ROWCACHE;
large pool
用途:并行查询,恢复管理,共享服务(共享模式)
CURSOR_SPACE_FOR_TIME用户可以通过设置这个参数为True,使得Oracle使用更多的Shared SQL Area去保存SQL,从而提高反复执行SQL解析的速度
SESSION_CACHED_CURSORS,就是说的是一个session可以缓存多少个cursor,让后续相同的SQL语句不再打开游标,从而避免软解析的过程来提高性能
ALTER SESSION SET SESSION_CACHED_CURSORS = value;
DBMS_SHARED_POOL将常用对象放入share pool,忽略LRU
DBMS_SHARED_POOL.KEEP 常用游标,plsql,sequence
设置设置CURSOR_SHARING值(similar,force)提高相似语句查询性能

redo log buffer
LGWR写redo log在下列三种情况
log buffer三分之一
LGWR调用commit roolback时
DBWR调用LGWR时

批量提交可以提升log buffer性能
当加载大数量数据时使用nologing参数
默认值
MAX(0.5M, (128K * number of cpus))
PGA
保存排序操作,散列连接,位图合并,位图创建
默认大小为sga 20%由PGA_AGGREGATE_TARGET设置
OLTP PGA_AGGREGATE_TARGET= (total_mem* 80%) * 20%
DSS  PGA_AGGREGATE_TARGET= (total_mem* 80%) * 50%
total_mem为可用的操作系统内存
查看pga信息
SELECT * FROM V$PGASTAT;
pga命中率
SELECT NAME, CASE WHEN unit='bytes' THEN VALUE/1024/1024 ELSE VALUE END AS VALUE, unit
from v$pgastat
命中率[bytes processed]/([bytes processed] + [extra bytes read/written]) * 100
V$PROCESS查询每个oracle进程连接的实例
V$PROCESS_MEMORY查询每个类型
V$SQL_WORKAREA显示被SQL游标使用的工作区信息


分享到:
评论

相关推荐

    调整oracle内存及调整表空间大小方法

    ### 调整Oracle内存及调整表空间大小的方法 #### Oracle内存管理 Oracle数据库的内存管理对于确保数据库高效运行至关重要。内存配置不当可能导致性能下降甚至系统崩溃。在默认情况下,Oracle会根据系统的总内存自动...

    Oracle内存分配与调整--大牛冯春培的一篇文章

    ### Oracle内存分配与调整——详解冯春培的文章 #### 一、引言 在Oracle数据库管理系统中,内存管理是一项至关重要的任务。不合理的内存配置可能导致性能下降甚至系统故障。冯春培作为一位经验丰富的Oracle专家,...

    Oracle 内存分配与调整

    本文将深入探讨"Oracle内存分配与调整"这一关键主题,旨在帮助你提升Oracle系统的运行效率和响应速度。 Oracle内存结构主要分为两大部分:SGA(System Global Area)和PGA(Program Global Area)。SGA是数据库进程...

    oracle内存分配与调整.pdf

    oracle内存分配与调整.pdforacle内存分配与调整.pdf

    oracle 内存分配与调整 。pdf

    本文将深入探讨Oracle内存分配的相关知识点,以及如何进行调整以优化数据库性能。 Oracle内存主要分为两个主要部分:SGA(System Global Area)和PGA(Program Global Area)。SGA是数据库进程共享的一块内存区域,...

    ORACLE性能调整-调整内存分配.rar

    首先,我们来了解Oracle内存的基本架构,它主要由两大部分组成:PGA(Program Global Area)和SGA(System Global Area)。PGA是为每个服务器进程单独分配的内存区域,用于存储过程变量、游标、排序区等。而SGA则是...

    减少Oracle内存占用

    ### 减少Oracle内存占用 在Windows XP环境下运行Oracle 10g时,可能会遇到数据库占用内存过高的问题。这不仅会影响系统的稳定性,还可能导致其他应用程序因可用内存不足而受到影响。本文将详细介绍如何通过合理设置...

    ORACLE自动内存管理和存储调整

    本文将详细介绍 ORACLE 自动内存管理和存储调整的相关知识点。 一、自动内存管理 自动内存管理是 ORACLE 数据库中的一种功能,它可以根据系统的实际情况自动调整内存的使用,以提高数据库的性能和效率。自动内存...

    oracle数据库的内存调整

    Oracle 数据库内存调整是优化数据库性能的关键步骤,尤其是在大型企业级应用中,高效的内存管理能够显著提升数据库的响应速度和整体效率。Oracle 内存主要分为两大类:系统全局区(System Global Area, SGA)和进程...

    Oracle 10g的内存调整报告

    ### Oracle 10g的内存调整报告 #### 内存配置的重要性 Oracle 数据库的内存配置对于数据库的整体性能至关重要。不恰当的内存设置不仅会导致性能下降,还可能引发各种难以定位的问题。因此,在进行Oracle 10g的内存...

    oracle内存管理,深入浅出oracle内存管理,盖国强oracleppt

    4. **内存管理的变迁**:Oracle内存管理经历了从早期的静态分配到动态调整,再到自动共享内存管理(ASMM)和自动内存管理(AMM)的演变。AMM使得数据库能够自动管理SGA和PGA,简化了管理员的工作。 5. **Shared ...

    oracle内存全面分析

    ADDM是Oracle的自动诊断监视器,定期分析数据库性能,提出内存调整建议。 2. 实时监控 定期检查V$SESSION、V$PGA_MEMORY_ALLOCATIONS等视图,监控内存使用状态,及时发现异常。 总结,Oracle内存全面分析涉及SGA...

    oracle内存资源分配

    "Oracle内存资源分配"是数据库管理员必须掌握的关键技能,它涉及到Oracle数据库系统的Shared Global Area (SGA) 和Program Global Area (PGA) 的配置与调整。 首先,SGA是Oracle数据库运行时共享内存的主要区域,它...

    ORACLE 内存调整(SGA和PGA)

    SGA+PGA最好不要超过总内存的70%,内存详细调整方案,供学习。

    Oracle 内存全面分析 PDF文档

    这份名为"Oracle 内存全面分析"的PDF文档深入探讨了Oracle内存架构的各个方面,对于DBA(数据库管理员)和开发人员来说,理解这些知识至关重要。 Oracle内存主要由两大部分构成:System Global Area (SGA) 和 ...

    Oracle内存结构全面分析

    总之,Oracle内存结构的全面分析涵盖了SGA、PGA和UGA的各个组成部分,以及如何通过参数调整和管理策略优化内存使用,以实现最佳的数据库性能。了解这些内存结构及其交互方式对于解决性能问题和预防故障至关重要。

Global site tag (gtag.js) - Google Analytics