Oracle性能优化基本方法详解

Oracle性能优化基本方法包括一下几个步骤,包括:

  1)设立合理的Oracle性能优化目标。

  2)测量并记录当前的Oracle性能。

  3)确定当前Oracle性能瓶颈(Oracle等待什么、哪些SQL语句是该等待事件的成分)。

  4)把等待事件记入跟踪文件。

  5)确定当前的OS瓶颈。

  6)优化所需的成分(应用程序、数据库教程、I/O、争用、OS等)。

  7)跟踪并实施更改控制过程。

  8)测量并记录当前性能

  9)重复步骤3到7,直到满足优化目标

  下面来一一详述。

  1.设立合理的Oracle性能优化目标

  重点:关于设立目标的最重要的一点是它们必须是可量化和可达到的。

  方法:目标必须是当前性能和所需性能的的陈述形式的语句。

  2.测量并记录当前Oracle性能重点:

  1)需要在峰值活动时间获得当前系统性能快照

  2)关键是要在出现性能问题的时间段内采集信息

  3)必须在合理的时间段上采集,一般在峰值期间照几个为期15分钟的快照

  3.确定当前Oracle性能瓶颈重点:从Oracle 等待接口v$system_event、v$session_event和v$session_wait中获得等待事件,进而找出影响性能的对象和sql语句。方法如下:

  1)首先,利用v$system_event视图执行下面的查询查看数据库中某些常见的等待事件:

  1.select * from v$system_event

  2.

  3.where event in ('buffer busy waits',

  4.

  5.'db file sequential read',

  6.

  7.'db file scattered read',

  8.

  9.'enqueue',

  10.

  11.'free buffer waits',

  12.

  13.'latch free',

  14.

  15.'log file parallel write',

  16.

  17.'log file sync');

  18.

  2)接着,利用下面对v$session_event和v$session视图进行的查询,研究具有对上面显示的内容有贡献的等待事件的会话:

  1.select se.sid,s.username,se.event,se.total_waits,se.time_waited,se.average_wait

  2.

  3.from v$session s,v$session_event se

  4.

  5.where s.sid = se.sid

  6.

  7.and se.event not like 'SQL*Net%'

  8.

  9.and s.status = 'ACTIVE'

  10.

  11.and s.username is not null;

  12.3)使用下面查询找到与所连接的会话有关的当前等待事件。这些信息是动态的,为了查看一个会话的等待最多的事件是什么,需要多次执行此查询。

  1.select sw.sid,s.username,sw.event,sw.wait_time,sw.state,sw.seconds_in_wait SEC_IN_WAIT

  2.

  3.from v$session s,v$session_wait sw

  4.

  5.where s.sid = sw.sid

  6.

  7.and sw.event not like 'SQL*Net%'

  8.

  9.and s.username is not null

  10.

  11.order by sw.wait_time desc;

  12.

  4)查询会话等待事件的详细信息

  1.select sid,event,p1text,p1,p2text,p2,p3text,p3

  2.

  3.from v$session_wait

  4.

  5.where sid between &1 and &2

  6.

  7.and event not like '%SQL%'

  8.

  9.and event not like '%rdbms%';

  10.

  5)利用P1、P2的信息,找出等待事件的相关的段

  1.select owner,segment_name,segment_type,tablespace_name

  2.

  3.from dba_extents

  4.

  5.where file_id = &fileid_in

  6.

  7.and &blockid_in between block_id and block_id + blocks - 1;8.

  6)获得操作该段的sql语句:

  1.select sid, getsqltxt(sql_hash_value,sql_address)

  2.

  3.from v$session

  4.

  5.where sid = &sid_in;

  6.

  7)getsqltxt函数

  8)至此已经找到影响性能的对象和sql语句,可以有针对性地优化

  4.把等待事件记入跟踪文件

  重点:如果在跟踪系统上的等待事件时,由于某种原因遇到了麻烦,则可以将这些等待事件记入一个跟踪文件。方法如下:

  1)对于当前会话:

  1.alter session set timed_statistics=true;

  2.

  3.alter session set max_dump_file_size=unlimited;

  4.

  5.alter session set events '10046 trace name context forever, level 12';

  6.

  2)执行应用程序,然后在USER_DUMP_DEST指出的目录中找到跟踪文件。

  3)查看文件中以词WAIT开始的所有行。

  4)对于其它的会话

  5)确定会话的进程ID(SPID)。下面的查询识别出名称以A开始的所有用户的会话进程ID:

  1.select S.Username, P.Spid from V$SESSION S, V$PROCESS P

  2.

  3.where S.PADDR = P.ADDR and S.Username like 'A%';

  4.

  6)以sysdba进入sqlplus执行

  1.alter session set timed_statistics=true;

  2.

  3.alter session set max_dump_file_size=unlimited;

  4.

  5.oradebug setospid

  6.

  7.oradebug unlimit

  8.

  9.oradebug event 10046 trace name context forever, level X /* Where X = (1,4,8,12) */

  10.

  7)跟踪某个时间间隔得会话应用程序。

  8)在USER_DUMP_DEST 的值指出的目录中利用SPID查看跟踪文件

  9)查看文件中以词WAIT开始的所有行。

  5.确定当前OS瓶颈1)Windows NT上的监控

  使用控制面板-〉管理工具-〉性能即可

  2)UNIX上的监控

  使用通用性的工具,包括sar、iostat、cpustat、mps教程tat、netstat、top、osview等。

  6.Oracle性能优化所需的成分(应用程序、数据库、I/O、争用、OS等)。

  7.跟踪并实施更改控制过程。

  8.测量并记录当前Oracle性能

  9.重复步骤3到7,直到满足优化目标

时间: 2024-09-28 14:51:44

Oracle性能优化基本方法详解的相关文章

Android编程使用加速度传感器实现摇一摇功能及优化的方法详解

本文实例讲述了Android编程使用加速度传感器实现摇一摇功能及优化的方法.分享给大家供大家参考,具体如下: 目前很多应用已经实现了摇一摇功能,这里通过讲解该功能的原理及实现回顾一下加速度传感器的使用: 1.首先获得传感器管理器的实例 sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); 2.通过传感器管理器获得加速传感器 accelerateSensor = getSensorMana

oracle指定排序的方法详解_oracle

Oracle9i之前,中文是按照二进制编码进行排序的.在oracle9i中新增了按照拼音.部首.笔画排序功能.   1.设置NLS_SORT参数值    SCHINESE_RADICAL_M 按照部首(第一顺序).笔划(第二顺序)排序   SCHINESE_STROKE_M 按照笔划(第一顺序).部首(第二顺序)排序   SCHINESE_PINYIN_M 按照拼音排序    2.Session级别的设置,修改ORACLE字段的默认排序方式:   按拼音:alter session set nl

oracle数据库tns配置方法详解_oracle

TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器. TNS是Oracle Net的一部分,专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,必须配置TNS,当然在少数情况下,不用配置TNS也可以连接Oracle数据库,比如通过JDBC.如果通过TNS连接Oracle,那么客户端必须安装Oracle client

Mysql的基础使用之MariaDB安装方法详解_Mysql

我首次用mysql是在ubuntu上,现在用的是linux 中的Red Hat 分支的centOS 7 ,安装时发现通常用的都是MariaDB 来代替mysql,通过资料查询发现Mariadb是mysql的其中的一种分支,由mysql的创始人带领的团队所开发的mysql分支的一种版本,因为mysql受到被Oracle收购后的日渐封闭与缓慢的更新,众多Linux发行版逐渐抛弃了这个人气开源数据库,使MySQL在各大Linux发行版中的失势由于不满MySQL被Oracle收购后的日渐封闭与缓慢的更新

Oracle数据操作和控制语言详解_oracle

正在看的ORACLE教程是:Oracle数据操作和控制语言详解.SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL.其中用于定义数据的结构,比如 创建.修改或者删除数据库:DCL用于定义数据库用户的权限:在这篇文章中我将详细讲述这两种语言在Oracle中的使用方法.  DML语言 DML是SQL的一个子集,主要用于修改数据,下表列出了ORACLE支持的DML语句. 插入数据 INSERT语句常常用于向表中插入行,行中可以有特殊数据字段,或者可

《Oracle数据库性能优化方法论和最佳实践》——1.7 Oracle性能优化的神话和误区

1.7 Oracle性能优化的神话和误区 Oracle性能优化工作是Oracle数据库科学最为神秘莫测的领域,自然也就会流传着各种传言和八卦.本书最主要的目的就是真正使Oracle性能优化成为一门严谨的科学,使任何阅读并且理解本书内容的读者可以比较简单地完成Oracle性能优化工作,使自己在其他人面前成为"巫师"或"神秘的对象".1.7.1 艺术和科学 从百度.Google等网站搜索"性能优化艺术",会出现大量的条目,部分Oracle性能优化的图

Java的JSON处理器fastjson使用方法详解_java

fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发. 主要特点: • 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson) • 强大(支持普通JDK类包括任意Java Bean Class.Collection.Map.Date或enum) • 零依赖(没有依赖其它任何类库除了JDK) 示例代码: import com.alibaba.fastjson.JSON; Group group = new Group

《Oracle性能优化与诊断案例精选》导读

前言 Oracle性能优化与诊断案例精选数据驱动,成就未来最近两年来,很多朋友经常会问我,接下来会不会继续写书,会写一本什么样的书. 其实我也一直在思考,什么样的作品能够以最小的篇幅带来超越时间的价值,尽可能地帮助那些准备进入和刚刚进入这个领域的广大技术人员. 本书缘起2015年年底,我在成都和老熊聊天的时候,忽然有了一个想法,如果我能够将云和恩墨的专家团队聚集起来,让每个人都把自己最宝贵的经验方法.经典案例呈现出来,那累计超过100年的从业经验一定可以帮助很多人更深层次地了解数据库技术. 于是

使用yum查看工具lspci所在包并安装的方法(详解)_Linux

摘要:虚拟机安装时一般都采用最小化安装,默认没有lspci工具.一台测试虚拟网卡性能的虚拟机,需要lspci工具来查看网卡的类型.本文描述了在一个虚拟机中安装lspci工具的具体步骤. 由于要测试虚拟机上的不同的虚拟网卡驱动类型的传输效率,所以需要变化虚拟机的虚拟网卡类型,并且利用lspci工具验证是否加载成功. 虚拟机操作系统:CentOS6.0 i386. 启动虚拟机后,键入lspci,系统提示没有这个命令.于是想到先安装这个工具再测试.安装过程需要解决几个问题:安装源?lspci属于哪个包