日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
對Oracle性能調(diào)優(yōu)的基本方案

以下的文章主要是對Oracle 性能優(yōu)化基本方案的概述,Oracle 性能優(yōu)化基本方案在實(shí)際中的應(yīng)用比例還是占為多數(shù)的,如果你對這一技術(shù),心存好奇的話,以下的文章將會揭開它的神秘面紗。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、甌海ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的甌海網(wǎng)站制作公司

1)設(shè)立合理的Oracle 性能優(yōu)化目標(biāo)。

2)測量并記錄當(dāng)前性能。

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

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

5)確定當(dāng)前的OS瓶頸。

6)優(yōu)化所需的成分(應(yīng)用程序、數(shù)據(jù)庫、I/O、爭用、OS等)。

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

8)測量并記錄當(dāng)前性能

9)重復(fù)步驟3到7,直到滿足優(yōu)化目標(biāo)

1.設(shè)立合理的Oracle 性能優(yōu)化目標(biāo)

重點(diǎn):關(guān)于設(shè)立目標(biāo)的最重要的一點(diǎn)是它們必須是可量化和可達(dá)到的。

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

花費(fèi)了 (時(shí)/分/秒),但要求它在 (時(shí)/分/秒)內(nèi)執(zhí)行。

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

2. 測量并記錄當(dāng)前性能

重點(diǎn):

(1)需要在峰值活動時(shí)間獲得當(dāng)前系統(tǒng)性能快照

(2)關(guān)鍵是要在出現(xiàn)性能問題的時(shí)間段內(nèi)采集信息

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

方法:執(zhí)行STATSPACK

建立Oracle 性能快照表空間

 
 
 
  1. sqlplus sys as sysdba
  2. create tablespace perfstat datafile '/u02/oradata/dbnms/perfstat.dbf' size 500M extent management local;

安裝STATSPACK

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

獲取性能數(shù)據(jù),可以生成多個(gè)快照

 
 
 
  1. sqlplus perfstat
  2. execute statspack.snap;

生成性能快照的報(bào)表

 
 
 
  1. sqlplus perfstat
  2. select min(snap_id) snapid_min, max(snap_id) snapid_max from stats$snapshot;
  3. @$ORACLE_HOME/rdbms/admin/spreport;

該報(bào)告中有關(guān)于性能的重要信息,如前5位的等待事件、cache大小、各種內(nèi)存結(jié)構(gòu)的命中率、每秒及每事務(wù)邏輯、物理讀寫數(shù)據(jù)塊數(shù)、性能最差的sql語句等

3. 確定當(dāng)前Oracle性能瓶頸

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

方法:

首先,利用v$system_event視圖執(zhí)行下面的查詢查看數(shù)據(jù)庫中某些常見的等待事件:

 
 
 
  1. select * from v$system_event
  2. where event in ('buffer busy waits',
  3. 'db file sequential read',
  4. 'db file scattered read',
  5. 'enqueue',
  6. 'free buffer waits',
  7. 'latch free',
  8. 'log file parallel write',
  9. 'log file sync');

接著,利用下面對v$session_event和v$session視圖進(jìn)行的查詢,研究具有對上面顯示的內(nèi)容有貢獻(xiàn)的等待事件的會話:

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

使用下面查詢找到與所連接的會話有關(guān)的當(dāng)前等待事件。這些信息是動態(tài)的,為了查看一個(gè)會話的等待最多的事件是什么,需要多次執(zhí)行此查詢。

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

查詢會話等待事件的詳細(xì)信息

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

利用P1、P2的信息,找出等待事件的相關(guān)的段

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

獲得操作該段的sql語句:

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

getsqltxt函數(shù)

 
 
 
  1. create or replace
  2. function GetSQLtxt (hashaddr_in in v$sqltext.hash_value%type,
  3. addr_in in v$sqltext.address%type)
  4. return varchar2
  5. is
  6. temp_sqltxt varchar2(32767);
  7. cursor sqlpiece_cur
  8. is
  9. select piece,sql_text
  10. from v$sqltext
  11. where hash_value = hashaddr_in
  12. and address = addr_in
  13. order by piece;
  14. begin
  15. for sqlpiece_rec in sqlpiece_cur
  16. loop
  17. temp_sqltxt := temp_sqltxt || sqlpiece_rec.sql_text;
  18. end loop;
  19. return temp_sqltxt;
  20. end GetSQLtxt;

至此已經(jīng)找到影響Oracle 性能的對象和sql語句,可以有針對性地優(yōu)化

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

重點(diǎn):如果在跟蹤系統(tǒng)上的等待事件時(shí),由于某種原因遇到了麻煩,則可以將這些等待事件記入一個(gè)跟蹤文件。

方法:

對于當(dāng)前會話:

 
 
 
  1. alter session set timed_statistics=true;
  2. alter session set max_dump_file_size=unlimited;
  3. alter session set events '10046 trace name context forever, level 12';

執(zhí)行應(yīng)用程序,然后在USER_DUMP_DEST指出的目錄中找到跟蹤文件。

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

對于其它的會話

確定會話的進(jìn)程ID(SPID)。下面的查詢識別出名稱以A開始的所有用戶的會話進(jìn)程ID:

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

以 sysdba 進(jìn)入sqlplus執(zhí)行

 
 
 
  1. alter session set timed_statistics=true;
  2. alter session set max_dump_file_size=unlimited;
  3. oradebug setospid 
  4. oradebug unlimit
  5. oradebug event 10046 trace name context forever, level X /* Where X = (1,4,8,12) */

跟蹤某個(gè)時(shí)間間隔得會話應(yīng)用程序。

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

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

5. 確定當(dāng)前OS瓶頸

(1)Windows NT上的監(jiān)控

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

(2)UNIX上的監(jiān)控

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

1) CPU使用情況

sar -u 5 1000

%sys和%wio的數(shù)值應(yīng)該小于百分之10到15

2) 設(shè)備使用情況

sar -d 5 1000

在%busy超過60%時(shí),***設(shè)備利用率開始降低;在具有足夠磁盤高速緩存的系統(tǒng)上,認(rèn)為avserv為100毫秒的值非常高。

3) 虛擬內(nèi)存使用情況

vmstat -S 5 1000

執(zhí)行隊(duì)列(r)應(yīng)該明確的平均小于(2*CPU數(shù)目)

6.優(yōu)化所需的成分(應(yīng)用程序、數(shù)據(jù)庫、I/O、爭用、OS等)。

7.跟蹤并實(shí)施更改控制過程。

8.測量并記錄當(dāng)前Oracle 性能

9.重復(fù)步驟3到7,直到滿足優(yōu)化目標(biāo)


本文標(biāo)題:對Oracle性能調(diào)優(yōu)的基本方案
分享URL:http://m.5511xx.com/article/dpogois.html