
作为一个DBA,监控各种内存的命中率是其职责之一。
案例分析
步骤1:查询与缓存命中率相关的3个参数,其代码如下:
SQL> col name for a40
SQL> select statistic#, name,value
2 from v$sysstat
3 where name in ('physical reads','db block gets','consistent gets');
STATISTIC# NAME VALUE
---------- ---------------------------------------- -------------
159 db block gets 89999
163 consistent gets 743277
172 physical reads 21243
步骤2:利用公式计算缓存命中率,其代码如下:
SQL> select a.value + b.value - c.value "logical_reads", c.value "phys_reads",
2 100*((a.value + b.value) -c.value)/(a.value + b.value) " buffer hit ratI/O"
3 from v$sysstat a, v$sysstat b, v$sysstat c
4 where a.statistic#=159 and b.statistic#=163 and c.statistic#=172;
logical_reads phys_reads buffer hit ratI/O
------------- ---------- -----------------
812105 21246 97.450534
步骤3:进行查询,结束后观察3个参数的变化,其代码如下:
SQL> select * from hr.employees;
已选择 107 行。
SQL> select a.value + b.value - c.value "logical_reads", c.value "phys_reads",
2 100*((a.value + b.value) -c.value)/(a.value + b.value) " buffer hit ratI/O"
3 from v$sysstat a, v$sysstat b, v$sysstat c
4 where a.statistic#=63 and b.statistic#=67 and c.statistic#=72;
logical_reads phys_reads buffer hit ratI/O
------------- ---------- -----------------
1165458361 0 100
步骤4:第二次执行该查询,观察参数变化,其代码如下:
SQL> select * from hr.employees;
已选择 107 行。
SQL> select a.value + b.value - c.value "logical_reads", c.value "phys_reads",
2 100*((a.value + b.value) -c.value)/(a.value + b.value) " buffer hit ratI/O"
3 from v$sysstat a, v$sysstat b, v$sysstat c
4 where a.statistic#=63 and b.statistic#=67 and c.statistic#=72;
logical_reads phys_reads buffer hit ratI/O
------------- ---------- -----------------
1165458361 0 100
可以看到,物理读次数没有发生变化,这是因为第三次执行该查询,所有数据都在内存中,不需要从外存中读取数据,即不需要物理读,因此物理读次数没变化,而逻辑度增加了多次,所以命中率又有所提高。
理论上反复执行该语句,命中率可以达到100%。
步骤5:作为一个DBA,监控各种内存的命中率是其职责之一。根据经验,要想保持Oracle服务器具有较高的性能,数据库块缓存的命中率应该大于90%,共享池库缓存命中率应该大于99%,共享池中字典缓存命中率应该大于85%。
共享池中库缓存应大于0.99,其代码如下:
SQL> select sum(pins-reloads)/sum(pins) from v$librarycache;
SUM(PINS-RELOADS)/SUM(PINS)
---------------------------
.994198223
共享池中字典缓存应大于0.85,其代码如下:
SQL> select sum(gets-getmisses-usage-fixed)/sum(gets) from v$rowcache;
SUM(GETS-GETMISSES-USAGE-FIXED)/SUM(GETS)
-----------------------------------------
.955618225
参考书籍
《Oracle数据库系统管理与运维-微课视频版》
ISBN:9787302566106
作者:张立杰 主编 陈恒 陶永鹏 副主编
定价:69.9元

本书从Oracle数据库系统、管理以及运维的角度深入浅出地加以介绍,对于Oracle初学者以及Oracle相关从业人员都是适用的。本书的所有例题以及实验都是在最新的Oracle 19c版本下运行实验的。
全书共15个章节,包括Oracle系统、管理以及运维相关知识,内容包括oracle体系结构、数据库实例、存储结构、数据字典与动态性能视图、Oracle监控、数据库备份、数据库恢复、闪回技术以及数据库优化等;包括20个完整的项目案例。书中案例侧重应用性、趣味性强、分布合理、通俗易懂,使读者能够快速掌握Oracle系统、管理以及运维方面的的基础知识、方法、工具以及技巧。
张立杰
张立杰,硕士,副教授。研究方向为数据库、大数据。在各级学术期刊上发表论文10余篇,其中EI检索论文3篇,SCI检索论文1篇,计算机中文核心论文2篇。主持并完成省级项目3项;大连外国语大学校级教改项目4项、科研项目1项、校级开放课程一门。主编相关教材3部。从事Oracle专业教学十多年,为企事业员工,校企合作组织进行多次Oracle培训与讲座;受聘于Oracle Academy进行全球教师培训。
本书附有教学视频、课件、教学大纲、电子教案、教学日历、习题答案、案例源码等配套资源,可以作为大学计算机及相关专业的教材,也可以作为Oracle技术的培训教材。
活动方式:
【1】扫描下方抽奖二维码。
【2】若中奖,请于两天内填写地址,过期无效;奖品将在中奖后一周内统一安排寄送



扫码优惠购书
精彩推荐
Oracle数据库系统 | SQL语句跟踪与优化实例 Oracle数据库系统 | SQL语句执行计划 Oracle数据库系统 | 性能优化概述 Oracle数据库系统 | Oracle并发与一致性 Oracle数据库系统 | Oracle备份实例 Oracle数据库系统管理与运维 | 数据库进程 Oracle数据库系统管理与运维 | Oracle体系结构 鸿蒙开发实例|构建轻量级智能穿戴设备用户界面 CCF CSP-J/S第一轮认证必考知识点:回溯算法 CCF CSP-J/S第一轮认证必考知识点:二值图像的最大连通块 CCF CSP-J/S第一轮认证必考知识点:哥德巴赫猜想 CCF CSP-J/S第一轮认证考纲详解 Python 韩信点兵思政案例(含优惠码) 机器学习案例︱人脸识别和人脸检测(附视频) Python ︱爬取天气预报信息(附视频) 《机器学习》实验指导书(附实验参考+代码) Python爬虫综合实战 │ 创建云起书院爬虫(附代码) Python爬虫实战 │ Email提醒(附代码) Python深度学习 │一文掌握卷积神经网络






