1、数据缓冲区的调整
SGA区内存参数大小查询
select name,value from v$parameter where name in('db_block_buffers','db_block_size','shared_pool_size','sort_area_size');
select name,value from v$parameter where name in('db_cache_size','db_block_size','shared_pool_size','sort_area_size');

查询从内存读取数据和从磁盘无取数据的量
select name,value from v$sysstat where name in('db block gets','consistent gets','physical reads');
db block gets 表示从内存读数据
consistent gets表示读一致性数据
physical reads表示从磁盘读数据
最理想的情况是physical reads接近于0

查询数据字典v$latch_children可以检测数据缓冲区是否有空闲,得到的空闲冲突比例应该接近于0
select child#,sleeps/gets ratio from v$latch_children where name='cache buffers lru chain';

查询数据缓冲区的命中率,一般要求命中率在90%以上
select name,physical_reads,db_block_gets,consistent_gets,
1 - (physical_reads / (db_block_gets + consistent_gets))"HIT"
from v$buffer_pool_statistics;

2、共享池调整
查询共享池的使用情况
select * from v$sgastat where name='free memory';

查询共享池内存空闲率:
col value for 999,999,999,999 heading "shared pool size"
col bytes for 999,999,999,999 heading "free bytes"
select to_number(v$parameter.value) value,v$sgastat.bytes,
(v$sgastat.bytes/v$parameter.value)*100"percent free"
from v$sgastat,v$parameter
where v$sgastat.name='free memory'
and v$parameter.name='shared_pool_size'
and v$sgastat.pool='shared pool';

计算结果小于20%应该增大共享池的大小

显示已经运行过的部分SQL语句:
select sql_text from v$sqlarea
where rownum<=10 and
sql_text not like '%:%' and
parsing_user_id != 0;

查询共享池中sql语句代码以及运行该代码的用户信息:
select osuser,username,sql_text from v$session a,v$sqltext b
where a.sql_address = b.address;

确定缓存的sql语句的数目,以及它使用了多少的内存和每个sql语句平均消耗的内存:
select bytes,sql_count,bytes/sql_count
from(select count(*) sql_count from v$sqlarea),v$sgastat
where name='sql area';

查询库缓冲区的失败率:
select sum(pins)"Total Pins",sum(reloads)"Total Reloads",
sum(reloads)/sum(pins)*100 libcache
from v$librarycache;

Total Pins表示驻留内存次数
Total Reloads表示重新加载到内存的次数
libcache表示失败率
库缓冲区的失败率必须小于1%,如果该值大于1%则需要增加shared_pool_size的值

3、日志缓冲区的调整
查询日志缓冲区的成功与失败的次数:
select name,sum(gets),sum(misses)
from v$latch
where name like 'redo%' group by name;

gets表示成功取得日志缓冲区的次数;
misses表示在等待日志缓冲区时没有得到而再次等待,直到等待成功的次数

查询立即得到日志缓冲区的成功与失败的次数:
select b.name,gets,misses,immediate_gets,immediate_misses
from v$latch a,v$latchname b
where b.name in('redo allocation','redo copy')
and b.latch# = a.latch#;

失败率于立即失败率的计算方法:
select name,gets,misses,immediate_gets,immediate_misses,
decode(gets,0,0,misses/(gets+misses)*100) ratio1,
decode(immediate_gets+immediate_misses,0,0,
immediate_misses/(immediate_gets+immediate_misses)*100) ratio2
from v$latch where name in('redo allocation','redo copy');
计算结果应该小于1%如果,大于该值,应该增加log_buffer的大小

查询用户进程使用日志缓冲区的次数,当用户没有修改数据时,查询结果是0。
select name ,value from v$sysstat
where name = 'redo buffer alocation retries';

4、排序区调整

查询排序区的使用情况:
select name,value from v$sysstat * where name like '%sort%';
失败率=sorts(disks)/sorts(memory)*100%

失败率不得小于5%,否则就要增加sort_area_size的大小

5、磁盘I/O调整

查询数据文件的分配及磁盘读取状况:
select f.phyrds pyr,f.phyblkrd pbr,f.phywrts pyw,f.phyblkwrt pbw,
df.tablespace_name name,df.file_name"FILE_NAME"
from v$filestat f,dba_data_files df
where f.file#=df.file_id order by df.tablespace_name;

或者:
select substr(a.file#,1,2)"File#",a.status,
a.bytes,b.phyrds,b.phywrts,substr(a.name,1,50)"File Name"
from v$datafile a,v$filestat b where a.file#=b.file#;

其中PYR、PYW、PHYRDS、PHYWRTS分别表示物理磁盘读写的数据量。调整的目标是是各个表空间的物理读写在各个磁盘间的平衡

6、CPU调整
查询数据库中每个用户的命中率:
select username,consistent_gets,block_gets,physical_reads,
100*(consistent_gets + block_gets - physical_reads)/(consistent_gets + block_gets) hiratio
from v$session,v$sess_io
where v$session.sid = v$sess_io.sid and (consistent_gets + block_gets) > 0
and username is not null;

命中率应该超过90%

7、调整数据库快存cache
select state,count(*) from x$bh group by state;

查询出来的数据中,前一条表示使用的,后一条表示空闲的,两个数据加起来就是数据缓冲区的大小

创建基表时,可以使用参数cache将该表放在内存区域,这样全表扫描的结果会自动存储与most recently used区域,而不象普通表一样被存储于LRU区域
create table test(id number(2)) tablespace test cache;
该参数cache表示该表被驻留内存,可以又用户在创建表是指定,系统默认是nocache,要了解哪些表具有cache查询方法如下:
select table_name,cache,tablespace_name from user_tables;

alter table test nocache;
alter table test cache;

如果增加了cache功能,查询的时候可以使用/* + cache */ 指出使用cache查询

select /* + cache(test) */ id from test;

select /* + full(emp) nocache(test) */ id from test;

查询sql语句使用内存的情况:
select disk_reads,buffer_gets,sql_text from v$sqlarea
where disk_reads >1000 order by disk_reads desc;

对于查询到使用内存过大的语句,采取以下方法修改:
(1)增加full选项,强制全表扫描
select /* + full(表) + */ 列 from 表;
(2)增加index选项,强制使用索引
select /* + index(表名,索引名) 列 from 表;
(3)增加ordered关键字,在多表联合查询时,强制驱动表进行查询
select /* + ordered */ 列 from 表1,表2;
(4)增加all_rows,按照基于成本(cost_based)优化方法进行查询。
select /* + all_rows */ 列 from 表;

(5)增加parallel选项,在多cpu中使用并行查询方式,有效发挥多cpu的作用
select /* + full(表) parallel(表,2) */ 列 from 表;

oracle 调优 资料相关推荐

  1. Oracle调优综述

    在过去的十年中, Oracle 已经成为世界上最专业的数据库之一.对于 IT 专家来说,就是要确保利用 Oracle 的强大特性来提高他们公司的生产力.最有效的方法之一是通过 Oracle 调优.它有 ...

  2. Oracle调优总结--1(经典实践 重要)

    Problem Description: 1.每个表的结构及主键索引情况 2.每个表的count(*)记录是多少 3.对于创建索引的列,索引的类型是什么?count(distinct indexcol ...

  3. oracle调优总结 本文转自:http://blog.csdn.net/wonth/article/details/1670366

    /*==========================================================================  *Author: MartriWang@gm ...

  4. Oracle调优总结

    /*==========================================================================  *Author: MartriWang@gm ...

  5. oracle调优 oracle培训

    oracle调优总结如下: 一.谁来调优 数据库管理员 应用架构师 应用设计师 应用开发人员 OS系统管理员 存储系统管理员 二.DBA在调优中做什么 1)应用调优(DBA和开发人员合作) SQL s ...

  6. oracle调优概述

    昨天听了博森瑞老师 老邱的公开课,oracle主机调优,收益匪浅. oracle调优不单单是oracle自己的问题,和其它方面都息息相关,包括以下5个方面: 1) 主机调优 2) 网络调优 3) 数据 ...

  7. ORACLE调优深入理解AWR报告

    什么是AWR? 一堆历史性能数据,放在sysaux表空间上,AWR和sysaux都是10g出现的,是oracle调优的关键特性. 默认快照间隔1小时:10g保存7天:11g保存8天: 可以通过DBMS ...

  8. Oracle调优之看懂Oracle执行计划

    1.文章写作前言简介 之前曾经拜读过<收获,不止sql调优>一书,此书是国内DBA写的一本很不错的调优类型的书,是一些很不错的调优经验的分享.虽然读了一遍,做了下读书笔记,觉得很有所收获, ...

  9. oracle调优(1)

    oracle优化办法 : sql语句调优 查询调优 index 索引调优 数据存储调优 分区表 修改init.ora文件(物理调优) 数据库实例 内存参数存放位置 共享池大小等等 今天主要来探讨一下s ...

最新文章

  1. div+css 技巧摘录
  2. 英语发音规则---Z字母
  3. FPGA基础之LUT详解
  4. flash遨游缓存问题
  5. Vue学习笔记(1)(认识Vue、基础语法)
  6. [NLP] TextCNN模型原理和实现
  7. sqoop建表_Sqoop基础教程
  8. 空格在科技类文章中对阅读体验的影响
  9. 磁带非但没被淘汰,容量还比硬盘大了???
  10. web开发必看:你的网站支持https吗?
  11. 全网视频下载器网页版-AllTubeDownload
  12. Axure教程 原型设计工具Axure RP新手入门教程(一):基础
  13. win10 uwp 打电话
  14. 背景差法目标识别python_运动目标检测(4)—背景差分法
  15. 十大算法--支持向量机
  16. cufflinks之cuffmerge,cuffdiff
  17. Registration system
  18. 去哪儿霸面题目——泪
  19. 汉诺塔问题(+递推公式)
  20. Manjaro - 环境配置及软件安装卸载记录

热门文章

  1. skywalking分布式链路追踪
  2. SAP MM 根据采购订单反查采购申请
  3. 你见过实体店从开张到倒闭用时最短的时间有多短?
  4. 【算法设计与分析】动态规划:最优二叉搜索树
  5. 国产NOR FLASH应用领域明细
  6. git用户名和密码保存文件_git保存用户名和密码
  7. 冰岛人 (25 分)
  8. 道路模型--linear-parabolic model
  9. sql中农历阳历之间的转换问题
  10. 迁安学院计算机应用技术QQ群,迁安学院10年11年招生计划.doc