OracleDBA_Oracle性能优化的主导办法概述(方法论)

2014-12-18 Created By BaoXinjian

Oracle 1一、摘要


Oracle 性能优化的中坚方式概述

  • 1)设立合理之属性优化目标。
  • 2)测量并记下时性。
  • 3)确定当前Oracle性能瓶颈(Oracle等什么、哪些SQL语句是欠待事件的分)。
  • 4)把等待事件记入跟踪文件。
  • 5)确定当前之OS瓶颈。
  • 6)优化所用的分(应用程序、数据库、I/O、争用、OS等)。
  • 7)跟踪并尽反控制过程。
  • 8)测量并记下时性
  • 9)重复步骤3暨7,直到满足优化目标

 

Oracle 2二、分析


Step1.设置合理之习性优化目标

主要:关于设置目标的极重点之某些是它们要是可量化和可达成的。

办法:目标要是目前性能与所待性的底陈形式的言辞。只待填写下列语句被的空格即可。

        花费了(时/分/秒),但求它们以
(时/分/秒)内实施。

        使用了(资源量), 
但它们不克采用超过。

 

Step2.
测量并记下时性能

重点:

(1).需要以峰值活动时间得到当前系统性能快照

(2).关键是若以出现性能问题之时刻段内采集信息

(3).必须在合理的日子段及收集,一般以峰值期间以几独期限15分钟之快照

方法:执行STATSPACK

(1). 建立性能快照表空间

sqlplus sys as sysdba

create tablespace perfstat datafile '/u02/oradata/dbnms/perfstat.dbf' size 500M extent management local;

(2). 安装STATSPACK

 @$ORACLE_HOME/rdbms/admin/spcreate.sql;

(3).
获取性能数据,可以生成多个快照

 sqlplus perfstat

 execute statspack.snap;

(4). 生成性快照的表格

 sqlplus perfstat

 select min(snap_id) snapid_min, max(snap_id) snapid_max from stats$snapshot;

 @$ORACLE_HOME/rdbms/admin/spreport;

(5).
该报告被发出至于性的首要消息,如前方5号之等候事件、cache大小、各种内存结构的命中率、每秒及每工作逻辑、物理读写多少块数、性能最差之sql语句等

 

Step3.规定当前Oracle性能瓶颈

重点:

打Oracle
等待接口v$system_event、v$session_event和v$session_wait中取待事件,进而找有影响性的目标与sql语句

方法:

(1).
利用v$system_event视图执行下的查询查看数据库被某些常见的等待事件:

select * from v$system_event
where event in ('buffer busy waits',
                'db file sequential read',
                'db file scattered read',
                'enqueue',
                'free buffer waits',
                'latch free',
                'log file parallel write',
                'log file sync');

(2).
接着,利用下对v$session_event和v$session视图进行的查询,研究有着针对性地方显示的情有贡献的守候事件之对话:

select se.sid,s.username,se.event,se.total_waits,se.time_waited,se.average_wait
from v$session s,v$session_event se
where s.sid = se.sid
and se.event not like 'SQL*Net%'
and s.status = 'ACTIVE'
and s.username is not null;

(3).
使用下查询找到与所连接的对话有关的此时此刻等待事件。这些信是动态的,为了查看一个对话的待太多的风波是呀,需要频繁实施之询问。

select sw.sid,s.username,sw.event,sw.wait_time,sw.state,sw.seconds_in_wait SEC_IN_WAIT
from v$session s,v$session_wait sw
where s.sid = sw.sid
and sw.event not like 'SQL*Net%'
and s.username is not null
order by sw.wait_time desc;

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

select sid,event,p1text,p1,p2text,p2,p3text,p3
from v$session_wait
where sid between &1 and &2
and event not like '%SQL%'
and event not like '%rdbms%';

(5).
利用P1、P2的音,找来待事件的相关的段

select owner,segment_name,segment_type,tablespace_name
from dba_extents
where file_id = &fileid_in
and &blockid_in between block_id and block_id + blocks - 1;

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

select sid, getsqltxt(sql_hash_value,sql_address)
from v$session
where sid = &sid_in;

(7). getsqltxt函数

create or replace
function GetSQLtxt (hashaddr_in in v$sqltext.hash_value%type,
       addr_in in v$sqltext.address%type)
return varchar2
is
 temp_sqltxt varchar2(32767);
 cursor sqlpiece_cur
 is
  select piece,sql_text
  from v$sqltext
  where hash_value = hashaddr_in
  and address = addr_in
  order by piece;
begin
 for sqlpiece_rec in sqlpiece_cur
 loop
  temp_sqltxt := temp_sqltxt || sqlpiece_rec.sql_text;
 end loop;
 return temp_sqltxt;
end GetSQLtxt;

(8).
至此已找到影响性的对象同sql语句,可以发指向地优化

 

Step4.
将等待事件记入跟踪文件

重点:

使以跟系统上的等候事件时,由于某种原因遇到了烦,则可将这些等待事件记入一个跟踪文件。

方法:

(1). 对于当前对话:

alter session set timed_statistics=true;

alter session set max_dump_file_size=unlimited;

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

行应用程序,然后于USER_DUMP_DEST指出的目中找到跟踪文件。

翻开文件中盖词WAIT开始之富有执行。

(2). 对于其它的对话,
确定会话的历程ID(SPID),下面的询问识别出名称以A开始的装有用户之对话进程ID:

select S.Username, P.Spid from V$SESSION S, V$PROCESS P
where S.PADDR = P.ADDR and S.Username like 'A%';

(3). 以 sysdba 进入sqlplus执行

alter session set timed_statistics=true;

alter session set max_dump_file_size=unlimited;

oradebug setospid <SPID>

oradebug unlimit

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

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

在USER_DUMP_DEST
的值指出的目中动用SPID查看跟踪文件

查看文件被为词WAIT开始之具备执行。

 

Step5.
确定当前OS瓶颈

(1). Windows NT上之监督

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

(2). UNIX上的督查

使用通用性的家伙,包括sar、iostat、cpustat、mpstat、netstat、top、osview等。

I. CPU使用状况

sar -u 5 1000

%sys和%wio的数值应小于百分之10届15

II. 设备使用状况

sar -d 5 1000

每当%busy超过60%常,最佳设备利用率开始降低;在具备足够磁盘高速缓存的系上,认为avserv为100毫秒的值大大。

III. 虚拟内存使用状况

vmstat -S 5 1000

推行队列(r)应该明了的平均小于(2*CPU数目)

 

Step6.优化所急需的成份(应用程序、数据库、I/O、争用、OS等)

 

Step7.跟并推行反控制过程

 

Step8.测量并记下时性能

 

Step9.双重步骤3顶7,直到满足优化目标

 

Thanks and Regards

转载
一江水-http://www.cnblogs.com/rootq/archive/2008/09/03/1282690.html

Oracle 3

相关文章