Oracle数据库调试和优化详解

简介:

此文主要是关于Oracle数据库调试和优化方面的相关内容的介绍,还有涉及到Oracle数据库中命里率的相关问题的解答,其中包括不同的算法之间性能的比对。以下就是相关内容的介绍。

关于Oracle中各个命中率的计算以及相关的调优

1)Library Cache的命中率:

计算公式:

1. Library Cache Hit Ratio = sum(pinhits) / sum(pins)

2. SQL>SELECT SUM(pinhits)/sum(pins) FROM V$LIBRARYCACHE;

通常在98%以上,否则,需要要考虑加大共享池,绑定变量,修改cursor_sharing等参数。

2)计算共享池内存使用率:

1. SQL>SELECT (1 - ROUND(BYTES / 
(&TSP_IN_M * 1024 * 1024), 2)) * 100 
|| '%' FROM V$SGASTAT WHERE NAME = 
'free memory' AND POOL = 'shared pool';

其中: &TSP_IN_M是你的总的共享池的SIZE(M),共享池内存使用率,应该稳定在75%-90%间,太小浪费内存,太大则内存不足。

查询空闲的共享池内存:

1. SQL>SELECT * FROM V$SGASTAT WHERE NAME = 
'free memory' AND POOL = 'shared pool';

3)db buffer cache命中率:

计算公式:


1.Hit ratio = 1 - [physical reads/(block gets + consistent gets)]



2.SQL>SELECT NAME, PHYSICAL_READS, DB_BLOCK_GETS, CONSISTENT_GETS,
1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS))

"Hit Ratio" FROM V$BUFFER_POOL_STATISTICS WHERE NAME='DEFAULT';

通常应在90%以上,否则,需要调整,加大DB_CACHE_SIZE,另外一种计算命中率的方法(摘自ORACLE官方文档<>):命中率的计算公式为:数据库性能优化>

1. Hit Ratio = 1 - ((physical reads - physical reads 
direct - physical reads direct (lob)) / 
(db block gets + consistent gets - physical 
reads direct - physical reads direct (lob))

分别代入上一查询中的结果值,就得出了Buffer cache的命中率

1.SQL>SELECT NAME, VALUE FROM V$SYSSTAT WHERE NAME 
IN('session logical reads', 'physical reads', 
'physical reads direct', 'physical reads direct 
(lob)', 'db block gets', 'consistent gets');

4)数据缓冲区命中率:

1. SQL> select value from v$sysstat where name =
'physical reads'; SQL> select value from v$sysstat where name 
='physical reads direct'; SQL> select value from v$sysstat 
where name ='physical reads direct (lob)'; SQL> 
select value from v$sysstat where name ='consistent gets'; 
SQL> select value from v$sysstat where name = 'db block gets';

这里命中率的计算应该是令

1. x = physical reads direct + physical reads direct (lob)

命中率

1. =100 - ( physical reads - x) / (consistent gets + db block gets - x)*100

通常如果发现命中率低于90%,则应该调整应用可可以考虑是否增大数据缓冲区

5)共享池的命中率:

1. SQL> select sum(pinhits-reloads)/sum(pins)*100 "hit radio" from v$librarycache;

假如共享池的命中率低于95%,就要考虑调整应用(通常是没使用bind var )或者增加内存

6)计算在内存中排序的比率:


1.SQL>SELECT * FROM v$sysstat t WHERE NAME='sorts (memory)';


—查询内存排序数

1.SQL>SELECT * FROM v$sysstat t WHERE NAME='sorts (disk)';

—查询磁盘排序数

1. --caculate sort in memory ratio SQL>SELECT 
round(&sort_in_memory/
(&sort_in_memory+&sort_in_disk),4)*100||'%' FROM dual;

此比率越大越好,太小整要考虑调整,加大PGA

7)PGA的命中率:

计算公式:BP x 100 / (BP + EBP)


BP: bytes processed

EBP: extra bytes read/written


1.SQL>SELECT * FROM V$PGASTAT WHERE NAME='cache hit percentage';

或者从OEM的图形界面中查看,我们可以查看一个视图以获取Oracle的建议值:

1.SQL>SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) 
target_mb, ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc, 
ESTD_OVERALLOC_COUNT FROM V$PGA_TARGET_ADVICE; The output 
of this query might look like the following: TARGET_MB 
CACHE_HIT_PERC ESTD_OVERALLOC_COUNT 63 23 367 125 24 30 
250 30 3 375 39 0 500 58 0 600 59 0 700 59 0 800 60 0 900 60 0


在此例中:PGA至少要分配375M,我个人认为PGA命中率不应该低于50%,以下的SQL统计sql语句执行在三种模式的次数:

1.optimal memory size, one-pass memory size, multi-pass memory size:


2.SQL>SELECT name profile, cnt, decode
(total, 0, 0, round(cnt*100/total,4)) percentage FROM 
(SELECT name, value cnt, (sum(value) over ()) 
total FROM V$SYSSTAT WHERE name like 'workarea exec%');


本文来自云栖社区合作伙伴“DBGEEK”

目录
相关文章
|
5天前
|
Oracle 关系型数据库 网络安全
崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB
文章是作者小草对崖山异构数据库迁移利器 YMP 的初体验分享,包括背景、YMP 简介、体验环境说明、YMP 部署(含安装前准备、安装、卸载、启动与停止)、数据迁移及遇到的问题与解决过程。重点介绍了 YMP 功能、部署的诸多细节和数据迁移流程,还提到了安装和迁移中遇到的问题及解决办法。
|
17天前
|
关系型数据库 数据库 数据安全/隐私保护
云数据库实战:基于阿里云RDS的Python应用开发与优化
在互联网时代,数据驱动的应用已成为企业竞争力的核心。阿里云RDS为开发者提供稳定高效的数据库托管服务,支持多种数据库引擎,具备自动化管理、高可用性和弹性扩展等优势。本文通过Python应用案例,从零开始搭建基于阿里云RDS的数据库应用,详细演示连接、CRUD操作及性能优化与安全管理实践,帮助读者快速上手并提升应用性能。
|
2月前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
2月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
68 11
|
3月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
106 11
|
2月前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
521 0
|
3月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
188 11
|
4月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
4月前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
4月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。

热门文章

最新文章

推荐镜像

更多