`
dengyll
  • 浏览: 93349 次
社区版块
存档分类
最新评论

Oracle 检查命中率的SQL

阅读更多

在数据库启动2小时后,可以通过以下SQL来测试数据库性能

 

1.  缓冲区命中率:

缓冲区命中率表示在不需要进行磁盘访问的情况下在内存结构中找到常用数据块的频率

 

select (1-(sum(decode(name, 'physical reads',value,0))/(sum(decode(name, 'db block gets',value,0)) 
         +sum(decode(name,'consistent gets',value,0))))) * 100 "Hit Ratio"
         from v$sysstat;

大于98%为最佳

 

2.数据字典缓存命中率:

数据字典缓存命中率显示了对数据字典和其他对象的内存读操作所占的百分比。

 

select (1-(sum(getmisses)/sum(gets))) * 100 "Hit Ratio" from v$rowcache;

大于98%为最佳


3.库缓存命中率:

库缓存命中率显示了对实际语句和PL/SQL对象的内存读操作所占的百分比。注意,很高的命中率并不总是一件好事。

 

select Sum(Pins)/(Sum(Pins) + Sum(Reloads)) * 100 "Hit Ratio" from V$LibraryCache;

大于98%为最佳

 

4.PGA内存排序命中率

自动PGA内存管理简化了分配PGA内存的方法。Oracle动态调整工作区PGA内存的大小(以SGA内存大小的20%为基础)。在自动PGA内存管理模式下运行时,所有会话的工作区大小都是自动的。实例中活动工作区可用的PGA内存总量自动由SORT_AREA_SIZE或PGA _ AGGREGATE_ TARGET(首选)初始化参数导出。PGA内存排序率的值应该大于98%。依据初始化参数PGA_AGGREGATE_TARGET(或者用于向后兼容的SORT _AREA _ SIZE)的值,用户排序可能在内存或者在指定的临时表空间中的磁盘上完成,如果这个初始化参数不是太高的话。

 

select a.value "Disk Sorts", b.value "Memory Sorts",round((100*b.value)/decode((a.value+b.value),0,1,(a.value+b.value)),2)"Pct Memory Sorts" from v$sysstat a, v$sysstat b where   a.name = 'sorts (disk)'and b.name = 'sorts (memory)';

 

5. 空闲的数据缓冲区的比例

 

从您首次启动Oracle数据库的那一天开始,用户们的查询就开始使用内存。空闲的记录数除以X$BH表中的记录总数(即所分配的数据块缓冲区的总数)就得到这个百分比。同时请注意,您必须以SYS的权限来运行该查询。此外,拥有众多的空闲缓冲区并不一定是就最佳环境。5%-10% 为最佳。当空闲比例高于25%时,数据缓冲区设置得太大了,可能会浪费资源。

 

select decode(state,0, 'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'),3, 'BEING USED', state) "BLOCK STATUS",count(*) from x$bh group by decode(state,0,'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'),3, 'BEING USED', state);

 

6. 最浪费内存的前10个语句占所有语句的比例


在没有调整的情况下,大多数系统中10个最常使用的SQL语句的访问量占了整个系统中内存读操作的50%以上。本节测量了最影响性能的代码对整个系统所造成危害的严重性,以百分比表示。

 

select sum(pct_bufgets) "Percent" from (select rank() over ( order by buffer_gets desc ) as rank_bufgets,to_char(100 * ratio_to_report(buffer_gets) over (),'999.99') pct_bufgets from v$sqlarea ) where rank_bufgets < 11;

小于5%为最佳。

 

7.调整滥用磁盘读操作的主要语句


我发现在没有作调整的情况下,在绝大多数的系统中,访问量占前25位的语句的磁盘读操作将占用整个系统所有磁盘和/或内存读操作的75%。

 

select disk_reads, substr(sql_text,1,4000) from v$sqlarea  order by disk_reads desc;


8.表和与它们相关联的索引应当放置在不同的物理磁盘上,以便减少文件I/O。


以上测试也可以通过AWR和STATSPACK来查看. 在分析结果中,我们首先要看的十项内容:
1. 首要的5个等待时间(定时事件)
2. 负载简档(Load profile)
3. 实例效率点击率(Instance efficiency hit ratios)
4. 等待时间(Wait events)
5. 闩锁等待(Latch waits)
6. 首要的SQL(Top SQL)
7. 实例活动(Instance activity)
8. 文件I/0和段统计数据(File I/0 and segement statistics)
9. 内存分配(Memory allocation)
10.缓冲区等待(Buffer waits)

分享到:
评论

相关推荐

    Oracle命中率 笔记整理结合实例

    Oracle 命中率计算和优化详解 Oracle 数据库中的命中率是指数据库在执行查询时,从缓存中命中数据的频率。命中率高说明数据库的缓存命中率高,能够减少磁盘 I/O,提高数据库的性能。下面将对 Oracle 中各个命中率的...

    Oracle数据库sql语句 跟踪器

    2. **性能指标**:显示每个SQL语句的执行时间、CPU使用率、I/O操作、缓冲区命中率等关键指标,帮助定位性能问题。 3. **等待事件分析**:分析SQL语句等待的事件类型,如 latch、buffer busy waits等,揭示可能导致...

    oracle性能监控sql 监控当前会话 执行的sql及io等信息

    可以使用以下SQL语句来监控每个用户的磁盘IO及IO命中率: ```sql select v$sess_io.*,(block_gets+consistent_gets) reads, ((block_gets+consistent_gets-physical_reads)/(block_gets+consistent_gets)) ratio ...

    数据高速缓存区命中率

    计算Buffer Cache的命中率可以通过以下SQL查询实现: ```sql SELECT 1 - ((physical.value + direct.value + lobs.value) / logical.value) AS BufferCacheHitRatio FROM V$SYSSTAT physical, V$SYSSTAT direct, V$...

    ORACLE SQL优化工具sqlhc

    通过运行这个脚本,你可以获得关于SQL执行计划、绑定变量、索引使用情况、缓存命中率等多方面的信息。它还能帮助识别慢查询,分析SQL执行时间,以及是否过度使用了CPU或I/O资源。 接下来是`sqldx.sql`,这个脚本...

    Oracle常用性能监控SQL语句

    - 此查询用于计算库缓存的命中率和未命中率,帮助评估库缓存的有效性。 通过以上SQL语句的详细介绍,我们可以看到Oracle数据库性能监控的重要性和复杂性。每一条SQL语句都针对特定的问题进行了设计,通过对这些SQL...

    Oracle SQL 调优健康检查脚本

    6. **性能指标**:在进行SQL调优时,常见的性能指标有执行时间、缓冲区命中率、硬解析次数、回滚段使用情况等。这些指标可以通过脚本分析,找出需要优化的SQL语句。 7. **优化策略**:根据脚本的输出,管理员可以...

    oracle如何查看很耗时的sql.txt

    这个查询重点关注缓存命中率低于80%的SQL语句,并按缓存命中率降序排列。通过这种方式,我们可以找到那些频繁从磁盘读取数据而非从缓存中读取的SQL语句。 #### 三、进一步分析和优化 一旦找到了耗时较长的SQL语句...

    oracle常用性能监控SQL语句

    - **用途**: 此SQL语句用于计算SGA缓冲命中率。 - **应用场景**: 缓冲命中率是衡量数据库性能的重要指标之一,高命中率意味着更多的数据可以从内存中读取,而低命中率则可能表明需要增加缓冲区大小或其他优化措施。 ...

    oracle常用监控SQL语句集合

    `SELECT * FROM v$sysstat`提供了系统统计信息,如缓冲区命中率、逻辑读次数等。`SELECT * FROM v$resource_limit`展示了资源限制的情况。 10. **回滚段监控**: `SELECT * FROM v$rollstat`显示回滚段的状态和...

    常用Oracle监控数据库性能的SQL

    8. `V$BUFFER_CACHE`: 查看缓冲区缓存的命中率和使用情况。 ```sql SELECT hits, misses, hit_ratio FROM v$buffer_cache; ``` 9. `V$PWFILE_STATUSES`: 检查初始化参数文件的状态。 ```sql SELECT * FROM v$...

    基于ORACLE数据库的SQL优化研究.pdf

    原则包括最小化磁盘访问,及时评价系统的查询功能和优化效果,平衡响应时间和吞吐量、数据库命中率和内存使用率。针对SQL语句的编程质量进行有效研究,是保证数据库性能提升的重要途径。 3. ORACLE数据库中SQL查询...

    oracle-dba常用sql脚本分类文档.doc

    通过`v$librarycache`视图,可以检查库缓存的使用情况,包括命中率和重新加载的频率,优化PL/SQL代码执行效率。 9. **数据库对象类别和大小**: `dba_object_size`视图提供所有数据库对象的类型、大小信息,有助...

    ORACLE PL-SQL超经典面试题

    18. **提高Buffer Cache命中率**:使用`V$DB_CACHE_ADVICE`视图评估并调整`DB_CACHE_SIZE`。 19. **解决ORA-01555**:这个错误通常表示回滚段不足,可通过增大回滚段大小或优化导致该错误的SQL语句。 20. **$...

    oracle性能查询汇总.sql

    oracle\性能查询汇总.sql 包含监控事例的等待 \回滚段的争用情况 \监控 SGA 的命中率等

    Oracle性能监控sql

    虽然原SQL片段中出现了编码问题,但意图是展示SGA共享池中的对象访问情况,包括直接和间接的命中率,这对于理解共享池的使用效率非常关键。 以上SQL语句涵盖了Oracle数据库性能监控的多个方面,从等待事件、I/O性能...

    Oracle数据库监控、性能检查小工具(OPCT)

    18.SGA字典缓冲区命中率 19.SGA共享缓冲区命中率 20.SGA重做日志缓冲区命中率 21.内存和硬盘排序比率 22.正在运行的SQL语句 23.字符集 24.MTS 25.碎片程度高的表 26.使用CPU多的用户 27.KILL用户会话 使用说明详细...

    监控oracle性能的常用sql集锦.doc

    6. **监控 SGA 的逻辑和物理读取命中率**:通过 `v$sysstat` 视图,我们可以计算缓冲区的命中率,这是评估 SGA 效率的重要指标。 ```sql select a.value + b.value "logical_reads", c.value "phys_reads", round...

    Oracle数据库日常维护诊断Sql

    - **v$pga_target_advice**: 提供有关PGA大小和缓存命中率的建议,帮助确定最佳的PGA内存设置。 ### 6. 监控共享池的使用情况 ```sql COL value FOR 999,999,999,999 HEADING "Shared Pool Size"; COL bytes FOR ...

    Oracle+SQL优化

    持续收集和分析数据库的性能指标,如CPU使用率、I/O延迟、缓冲区命中率等,可以帮助识别性能问题并及时进行调整。 总的来说,"Oracle+SQL优化"是一门深奥的学问,需要不断学习和实践。通过深入理解SQL的工作原理,...

Global site tag (gtag.js) - Google Analytics