顾美玲勾引管家|日韩黄色成人|国产精品theporn动漫|欧美日日日|国产精品探花在线

專業只做數據庫實訓和認證的品牌機構

微信公眾號新浪微博
免費咨詢電話:400-0909-964
當前位置: 網站首頁 > DBA實戰 > DBA課程 > DBA基礎課程:Oracle 性能優化的基本方法概述

DBA基礎課程:Oracle 性能優化的基本方法概述

文章來源: 更新時間:2016/6/24 13:43:19

在線老師點擊咨詢:

最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!

我要咨詢

dba基礎課程:Oracle 性能優化的基本方法概述 Oracle 性能優化的基本方法

概述

1)設立合理的性能優化目標。

2)測量并記錄當前性能。

3)確定當前Oracle性能瓶頸(Oracle等待什么、哪些SQL語句是該等待事件的成分)。

4)把等待事件記入跟蹤文件。

5)確定當前的OS瓶頸。

6)優化所需的成分(應用程序、數據庫、I/O、爭用、OS等)。

7)跟蹤并實施更改控制過程。

8)測量并記錄當前性能

9)重復步驟3到7,直到滿足優化目標

1.設立合理的性能優化目標

重點:關于設立目標的最重要的一點是它們必須是可量化和可達到的。

方法:目標必須是當前性能和所需性能的的陳述形式的語句。只需填寫下列語句中的空格即可。

花費了 (時/分/秒),但要求它在 (時/分/秒)內執行。

使用了 (資源量),但它不能使用超過 。

2. 測量并記錄當前性能

重點:

(1)需要在峰值活動時間獲得當前系統性能快照

(2)關鍵是要在出現性能問題的時間段內采集信息

(3)必須在合理的時間段上采集,一般在峰值期間照幾個為期15分鐘的快照

方法:執行STATSPACK

-- 建立性能快照表空間

sqlplus sys as sysdba

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

-- 安裝STATSPACK

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

-- 獲取性能數據,可以生成多個快照

sqlplus perfstat

execute statspack.snap;

-- 生成性能快照的報表

sqlplus perfstat

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

@$ORACLE_HOME/rdbms/admin/spreport;

-- 該報告中有關于性能的重要信息,如前5位的等待事件、cache大小、各種內存結構的命中率、每秒及每事務邏輯、物理讀寫數據塊數、性能最差的sql語句等

3. 確定當前Oracle性能瓶頸

重點:從Oracle 等待接口v$system_event、v$session_event和v$session_wait中獲得等待事件,進而找出影響性能的對象和sql語句

方法:

-- 首先,利用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');

-- 接著,利用下面對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;

-- 使用下面查詢找到與所連接的會話有關的當前等待事件。這些信息是動態的,為了查看一個會話的等待最多的事件是什么,需要多次執行此查詢。

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;

-- 查詢會話等待事件的詳細信息

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%';

-- 利用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;

-- 獲得操作該段的sql語句:

select sid, getsqltxt(sql_hash_value,sql_address)

from v$session

where sid = &sid_in;

-- 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;

-- 至此已經找到影響性能的對象和sql語句,可以有針對性地優化

4. 把等待事件記入跟蹤文件

重點:如果在跟蹤系統上的等待事件時,由于某種原因遇到了麻煩,則可以將這些等待事件記入一個跟蹤文件。

方法:

-- 對于當前會話:

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開始的所有行。

-- 對于其它的會話

-- 確定會話的進程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%';

-- 以 sysdba 進入sqlplus執行

alter session set timed_statistics=true;

alter session set max_dump_file_size=unlimited;

oradebug setospid

oradebug unlimit

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

-- 跟蹤某個時間間隔得會話應用程序。

-- 在USER_DUMP_DEST 的值指出的目錄中利用SPID查看跟蹤文件

-- 查看文件中以詞WAIT開始的所有行。

5. 確定當前OS瓶頸

(1)Windows NT上的監控

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

(2)UNIX上的監控

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

1) CPU使用情況

sar -u 5 1000

%sys和%wio的數值應該小于百分之10到15

2) 設備使用情況

sar -d 5 1000

在%busy超過60%時,最佳設備利用率開始降低;在具有足夠磁盤高速緩存的系統上,認為avserv為100毫秒的值非常高。

3) 虛擬內存使用情況

vmstat -S 5 1000

執行隊列(r)應該明確的平均小于(2*CPU數目)

6.優化所需的成分(應用程序、數據庫、I/O、爭用、OS等)。

7.跟蹤并實施更改控制過程。

8.測量并記錄當前性能

9.重復步驟3到7,直到滿足優化目標

本文地址:http://www.mudan321.com/dba/kecheng/12299660533.html 轉載請注明!


PostgreSQL入門到精通 100+ 個學習資料

Oracle培訓機構

金牌講師<>

冉乃綱-老師CUUG金牌講師
冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細了解老師]

免費咨詢上課流程 客服在線中

陳衛星-老師CUUG金牌講師
陳老師 CUUG金牌講師 精通Oracle管理、備份恢復、性能優化 11年Ora...[詳細了解老師]

免費咨詢上課流程 客服在線中

選學校如何選擇適合自己的學校

CUUG -CHINA UNIX USER GROUP,是國際UNIX組織UNIFORUM的中國代表,是國內悠久的專業UNIX培訓機構,被譽為中國UNIX 的搖籃。多年來,以提高教學質量為本,強調素質教育,積極引進、消化國外的新技術,有效的結合中國....[詳情]

一站式服務(從入學到就業一幫到底)

入學

學習

就業

實操

食宿
地址:北京市海淀區田村山南路35號院17號樓
課程咨詢: 400-0909-964
企業服務:137 1818 8639(陳經理)
部分信息來源于網絡,如有錯誤請聯系指正!
版權所有@北京神腦資訊技術有限公司 (CUUG,中國UNIX用戶協會) Copyright 2016 ALL Rights Reserved 京ICP備11008061號-1