文档章节

ORALCE---优化

柳白子
 柳白子
发布于 2016/12/26 16:19
字数 1647
阅读 10
收藏 0

优化的分类:(实例优化+库的优化=数据库优化)

一、实例的优化

二、库的优化

三、sql的优化

数据库性能问题,95%由用户所写的sql引起,其他由库引起。

优化步骤:

1、定位问题

1>通过v$ 动态试图

2>通过oem性能菜单

3>通过awr出一个报表

4>oracle内部的一些sql报表

5>oracle内部的addm工具

6>外部工具spoolgnignt

7>自己写一些脚本,定位数据库的一些问题

2、优化

1>程序设计阶段去优化----程序上线之前对数据库进行优化,代价最低,效果最好

指定表空间的大小,表空间的对象可以放到不同的磁盘空间,列的主外键。是否需要设置为自动增长。数据文件放到写性能比较好的磁盘,日志文件也放到写性能比较好的磁盘,控制文件放到读写性能比较好的磁盘

2>程序上线时进行优化

创建索引,创建分区表

3>系统上线以后进行优化 ---基本处理的都是这一阶段,代价高,效果不一定很好

网络的优化,数据库的内存不合理

3、如何优化

从上到下的优化,首先优化应用程序---实例(SGA|PGA)---系统---优化硬件(内存)

4、谁来优化---优化是大调整,需要多部门参与

应用程序有问题------程序开发人员-----DBA告诉他怎么改,问题在哪里

swap设置不合理----系统工程师的参与-----需要达到什么要求,必须告诉系统工程师

数据文件,日志文件的迁移----存储工程师-----将数据库从一个地方迁移到另一个地方

数据库有迁移,必须告诉架构工程师,如果数据库用的DG,或者RAC,也必须告诉网络工程师,怎样设计带宽比较合适。

5、如何去优化

1>一次只优化一个地方,找到问题最严重的地方去优化(如消耗资源最多,执行时间最长)

6、优化步骤

1>准确定位问题---高级DBA才能达到的级别,中级和初级基本凭运气

2>制定处理问题的解决方案

3>实施制定方案,到数据库中执行优化

4>验证优化是否达到效果

5>优化完成后生成一个基线(即快照,当前数据库的性能状况)

 

AWR------AUTO WORKLOAD REPOSITORY 自动负载资源库,记录了数据库的性能状况

10G----保留7天,ARW报表每天晚上10-2点去收集数据库的变化信息,星期六,星期天全天收集

11G-----awr报表信息默认保留8天

SQL> show parameter timed_statistics;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
timed_statistics		     boolean	 TRUE   //true表示打开统计信息
SQL> show parameter statistics_level;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
statistics_level		     string	 TYPICAL   //如果值为basic表示关闭统计信息,typical表示收集自上次收集以来改变的统计信息,all表示所有的统计信息都要收集
SQL> show parameter job;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes		     integer	 1000
SQL> 

SQL> show parameter aq;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes 		     integer	 1                //为0的话,表示关闭统计信息


SQL> desc dba_hist_snapshot; //快照的信息,根据每晚统计的信息来打的快照,一般一个小时会打一个快照

dbms_workload_repository  //通过调用包,记录数据库每个小时的运行状态

在数据库最忙的时候做快照一般15min-30min做一次快照,才能真正体现出数据库的性能

 


SQL> exec  dbms_workload_repository.create_snapshot;  //手动建快照

PL/SQL procedure successfully completed.

SQL> select snap_id from dba_hist_snapshot ;  //查询我们建的快照

exec  dbms_workload_repository.drop__snapshot_range(103,199) ; //删除快照
exec dbms_workload_repository.modify__snapshot_settings(15*24*60,15);//快照15分钟做一次,默认保留15天
exec dbms_workload_repository.modify__snapshot_settings(8*24*60,60);//改回快照默认值,60分钟一次,保留8天

SQL> select baseline_id,baseline_name from dba_hist_baseline;  //查看数据库的基线

BASELINE_ID BASELINE_NAME
----------- ----------------------------------------------------------------
      0 SYSTEM_MOVING_WINDOW

exec dbms_worload_repository.create_baseline(start_sanp_id=>167,end_snap_id=>172,baseline_name=>'b1')   //手动创建基线

exec dbms_worload_repository.drop_baseline  //删数基线

数据库运行状态的报表:

运行脚本

sql>>@  /opt/u01/oracle/11g/rdbms/admin/awrrpt.sql

>输入类型:html/text

>输入查看那几天的:【今天输1】

>输入要查看开始快照:

>输入要查看结束快照:

>输入报表的名字,绝对路径:

报表中查看的内容:

load profile ---加载资源文件

逻辑读:表示每一秒钟读取的数据,如果值比较大,表示在内存中都能读到数据

物理读:值越小越好,表示用户在DCL,DQL操作在磁盘文件中读取

物理写:值很大表示DML操作很多

分析:硬分析和软分析的总和

硬分析:值越小越好

rollbacks:用户执行的错误操作比较多

instance efficiency percentages:

buffer nowait:理想值为 100%,说明内存中没有出现等待,如果不是100%,说明databuffercache 设置过小,或者是databuffercache的链路出现问题,dbwr进程过少,或者dbwr进程足够,但是磁盘I/O性能不够

buffer hit:表示databuffer cache 命中比较高,逻辑读。值越高越好,值小于95%,就需要调整databuffer cache的大小,或者将数据块keep到内存中。

library hit :库缓冲区,共享的sql,plsql执行计划,需要到到90%以上,如果未达到,1、sharpool设置有问题,2.再不就是用户的语句没有绑定变量,每次都使用的硬分析

execute to parse :执行to分析,执行和分析的百分比,要求在80%左右

分析占用CPU的大小,这个值越小越好

redo nowait:必须达到100%,日志缓冲区设置过小,或者日志缓冲区的链路过少,磁盘I/O出现性能瓶颈

in-memory sort :使用内存排序,最好达到100%,如果没有达到100%需要调整PGA中的排序区

soft parse:软分析的值最好达到95%,如果没有达到就会使用硬分析

latch hit:内存锁 100% ,用户在执行DML操作时出现了锁定冲突,或则死锁,需要DBA处理

non_parse cpu: cpu 的占用,没有占用最好

TOP 5 timed foreground events //出现的最严重的5个性能问题,数据库性能没问题也会出现top5,如果性能出现了问题,一定会出现在top5中

DB CPU :占用数据库cpu

log file sync: 日志链路出了问题

undo segment extension:

shared Pool statistics: 

Memory usage :95%-70%之间

 

建议向导,可以解决

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2、

 

 

 

© 著作权归作者所有

柳白子
粉丝 8
博文 118
码字总数 137799
作品 0
成都
私信 提问
php操作Oralce

Oralce与Mysql在操作上有很大区别,比如: Oralce字段使用关键字时需要加引号写到SQL中,如:user,order,size等。 Oralce没有limit而需要用numrow记录序号,如提取第三条后四数据:numrow>...

ttlxihuan
2017/10/15
0
0
oracle11g client+plsql客户端远程连接配置

1.从官网http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 选择instantclient-basic-nt-11.2.0.4.0.zip下载。 2.在E盘创建文件夹比如oracleclient,将......

liu13430
2015/03/26
943
0
Oracle 10g 报 ORA-00313 错误的解决

最近由于清理系统,优化软件把 oralce 的日志文件误删除了,结果启动的时候 Oracle 报 ORA-00313 和 ORA-00312 错误。 在“运行”中执行命令:sqlplusw /nolog SQL> conn / as sysdba 已连接...

鉴客
2011/10/04
394
0
ORA-01033 解决方法

一、问题症状: 数据库连接不上,sqlplus不是内部或外部命令 二、问题原因: 1、没有正确地安装oralce的客户端 2、oralce安装后注册到系统中的目录路径在PATH变量中丢失了 3.oracle相关文件损...

TreasureWe
2015/10/14
175
0
请教一下,Record中的getLong如何兼容Mysql、Oracle

@JFinal 你好,想跟你请教个问题: Record中的getLong如何兼容Mysql、Oracle,因为数值字段在Mysql中使用getLong正确,但在Oralce中如果使用getLong会报错:java.math.BigDecimal cannot be ...

-亮子-
2012/12/29
414
2

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.4K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
41
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部