oracle性能調(diào)優(yōu)匯總_第1頁(yè)
oracle性能調(diào)優(yōu)匯總_第2頁(yè)
oracle性能調(diào)優(yōu)匯總_第3頁(yè)
oracle性能調(diào)優(yōu)匯總_第4頁(yè)
oracle性能調(diào)優(yōu)匯總_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——oracle性能調(diào)優(yōu)匯總性能調(diào)優(yōu)

方法:

一、檢查日志是否有錯(cuò)誤二、檢查參數(shù)是否設(shè)置正確

三、檢查系統(tǒng)IO、CPU、內(nèi)存等利用率,查看哪些占用較高四、檢查哪些SQL語(yǔ)句大量占用IO或CPU

權(quán)衡性能與安全的方面:一、多個(gè)控制文件

二、一個(gè)日志文件組中有多個(gè)日志文件三、頻繁的執(zhí)行檢查點(diǎn)四、備份數(shù)據(jù)文件五、頻繁的歸檔六、塊檢查

七、同時(shí)執(zhí)行操作與統(tǒng)計(jì)

性能調(diào)優(yōu)工具:

查看ALTER.LOG中的信息:

1、用/ORA-能查找文件中的錯(cuò)誤信息

2、要想讓ALTER.LOG文件中產(chǎn)生檢查點(diǎn)開始與終止信息,得修改參數(shù)LOG_CHECKPOINTS_TO_ALERT,將之修改為TRUE。默認(rèn)為FALSE。

SQL>ALTERSYSTEMSETLOG_CHECKPOINTS_TO_ALERT=TRUESCOPE=BOTH;

在用戶UDUMP目錄下的文件中產(chǎn)生監(jiān)控用戶執(zhí)行信息:

方法1、監(jiān)控自己的操作。在自己的session中設(shè)置參數(shù),這樣就能在用戶udump目錄下生成執(zhí)行的SQL語(yǔ)句信息

SQL>ALTERSESSIONSETSQL_TRACE=TRUE;

在pl/sql或者sqlplus中,開啟一個(gè)sql_window。(1)先運(yùn)行:altersessionsetsql_trace=true;(2)再運(yùn)行你那個(gè)返回結(jié)果不正確的SQL

(3)再運(yùn)行:altersessionsetsql_trace=false;

(4)馬上登陸到機(jī)器上,到$ORACLE_BASE/admin/sid/udump目錄下。(5)找到剛生成的.trc文件(假設(shè)文件名是xxx.trc),執(zhí)行命令轉(zhuǎn)儲(chǔ)跟蹤文件:tkprofxxx.trcaa.txt。

查看aa.txt文件。這個(gè)文件里面有執(zhí)行計(jì)劃。看看執(zhí)行計(jì)劃每一步返回的結(jié)果集記錄數(shù)是不是正確。

方法2、SYS用戶監(jiān)控別的用戶執(zhí)行狀況

方法3、對(duì)所有SESSION進(jìn)行監(jiān)控

SQL>ALTERSESSIONSETSQL_TRACE=TURE;

安裝STATSPACK

一、創(chuàng)立表空間,最少100M

二、安裝

在安裝時(shí)默認(rèn)創(chuàng)立了一個(gè)用戶PERFSTAT,所以密碼也可以輸入這個(gè)

選擇要將快照存放于哪個(gè)表空間

使用STATSPACK

手動(dòng)執(zhí)行生成一次快照,間隔一般為10幾分鐘為益,中間不要有停機(jī)。

產(chǎn)生報(bào)表,產(chǎn)生的報(bào)表存放于當(dāng)前目錄下。

基于全局視圖

1、v$sysstat此表中記錄了數(shù)據(jù)庫(kù)啟動(dòng)以來(lái)各項(xiàng)指標(biāo)2、v$sgastat此表中記錄了SGA及子部件中的相關(guān)信息

3、v$system_event此表中記錄了系統(tǒng)中的事件信息,與v$event_name表關(guān)聯(lián)

基于session視圖

其他動(dòng)態(tài)性能視圖

以X$開頭的表為v$的基表。

V$fixed_table表中存儲(chǔ)了所有動(dòng)態(tài)性能表信息動(dòng)態(tài)性能視圖:

參數(shù)與事件有關(guān):

Statistics_level有三個(gè)值all\\typical(默認(rèn))\\basic??梢酝ㄟ^(guò)altersession\\altersysteset…來(lái)修改

Timed_statistics值為true/false,可以通過(guò)altersession\\altersysteset…來(lái)修改,最好開啟,跟statistics_level有關(guān),假使statistics_level設(shè)置為all或typical,則此值為true。假使statistics_level設(shè)置為basic,則為false。

Timed_os_statistics跟statistics_level有關(guān),假使statistics_level設(shè)置為all,則此值為5秒。假使statistics_level設(shè)置為basic或typical,則為0秒

Db_cache_advice值為on/off/ready,可以通過(guò)altersysteset…來(lái)修改。跟statistics_level有關(guān),假使statistics_level設(shè)置為all或typical,則此值為on。假使statistics_level設(shè)置為basic,則為off。

數(shù)據(jù)庫(kù)配置與IO

降低IO的方法:

一、將不同的數(shù)據(jù)文件放在不同的磁盤上(如表或索引,由于索引與表是同時(shí)讀取的,簡(jiǎn)單引起競(jìng)爭(zhēng))

二、將數(shù)據(jù)文件與REDO文件分開存放,REDO文件盡量放在IO快的硬盤上。三、減少與數(shù)據(jù)庫(kù)無(wú)關(guān)的磁盤IO

重要視圖:v$filestat顯示了對(duì)數(shù)據(jù)文件規(guī)律讀寫、單塊或多塊IO事件

表空間管理:

System表空間不能存放用戶數(shù)據(jù),應(yīng)當(dāng)用loacllymanaged管理表空間表與索引要分開存放在不同的磁盤上

創(chuàng)立獨(dú)立的undo表空間,不用數(shù)據(jù)庫(kù)本身的undo表空間。創(chuàng)立獨(dú)立的臨時(shí)表空間,不用數(shù)據(jù)庫(kù)本身的臨時(shí)表空間大的對(duì)像應(yīng)當(dāng)單獨(dú)創(chuàng)立表空間用于存放

為了加大全表掃描IO吞吐量,可以設(shè)置db_file_multiblock_read_count參數(shù)。讓他一次可以讀取多個(gè)塊,默認(rèn)為一次讀取一塊(一塊默認(rèn)為8K)。這個(gè)參數(shù)與操作系統(tǒng)有關(guān),例:假使此值設(shè)置為8,則一次可以讀取64K,假使操作系統(tǒng)一次讀取128K,則此是可行的,假使操作系統(tǒng)一次不能讀取64K,則不可行。一般操作系統(tǒng)一次IO可以達(dá)1M,假使此參數(shù)設(shè)置過(guò)大,數(shù)據(jù)庫(kù)會(huì)自動(dòng)降低此參數(shù)值。此參數(shù)可以在SESSION或SYSTEM設(shè)置。

初始化參數(shù)db_file_multiblock_read_count影響Oracle在執(zhí)行全表掃描時(shí)一次讀取的block的數(shù)量.

db_file_multiblock_read_count的設(shè)置要受OS最大IO能力影響,也就是說(shuō),假使你系統(tǒng)的硬件IO能力有限,

即使設(shè)置再大的db_file_multiblock_read_count也是沒(méi)有用的。

理論上,最大db_file_multiblock_read_count和系統(tǒng)IO能力應(yīng)當(dāng)有如下關(guān)系:

Max(db_file_multiblock_read_count)=MaxOsIOsize/db_block_size

當(dāng)然這個(gè)Max(db_file_multiblock_read_count)還要受Oracle的限制,目前Oracle所支持的最大db_file_multiblock_read_count值為128.

重要視圖:

V$session_longops查詢一些長(zhǎng)時(shí)間全表掃描的執(zhí)行信息(大于6秒鐘)監(jiān)控?cái)?shù)據(jù)庫(kù)中的全表掃描:

Shorttables小于4塊Longtables大于4塊

查詢執(zhí)行比較長(zhǎng)的全表掃描:

可以通過(guò)如下語(yǔ)句向v$session_longops中添加記錄,以便監(jiān)控:

檢查點(diǎn)-分全檢查點(diǎn)與間接檢查點(diǎn)

全檢查點(diǎn)-CKPT更新控制文件與數(shù)據(jù)文件頭,DBWN就將臟數(shù)據(jù)一次性寫入數(shù)據(jù)文件。全檢查點(diǎn)又分:

Complete-一次性將數(shù)據(jù)寫入數(shù)據(jù)文件。用命令altersystemcheckpoint;Tablespace-只將相關(guān)的表空間的數(shù)據(jù)寫入數(shù)據(jù)文件

間接檢查點(diǎn)-CKPT更新控制文件與數(shù)據(jù)文件頭,分次將數(shù)據(jù)漸漸的寫入數(shù)據(jù)文件(默認(rèn))

為了提高IO,盡量將數(shù)據(jù)放在REDO文件中,少發(fā)生檢查點(diǎn)少寫數(shù)據(jù)文件。但放置太多假使數(shù)據(jù)庫(kù)重啟后恢復(fù)時(shí)間會(huì)很長(zhǎng),可以通過(guò)fast_start_mttr_target設(shè)置恢復(fù)時(shí)間,如600秒。數(shù)據(jù)庫(kù)就會(huì)自動(dòng)調(diào)整其他參數(shù)以滿足恢復(fù)時(shí)間為10分鐘。

歸檔文件應(yīng)當(dāng)放在其他磁盤上,REDO組中的文件應(yīng)當(dāng)分開放在不同的磁盤上,為了提高歸檔寫速度,可以設(shè)置多個(gè)歸檔進(jìn)程。內(nèi)存調(diào)優(yōu)

Librarycache保存SQL命令(主要調(diào)試對(duì)象)

Datadictionarycache保存數(shù)據(jù)字典(相對(duì)固定,主要調(diào)試對(duì)象)

通過(guò)showparametersga能查看到sga中各部件的大小,通過(guò)v$sysstat能查看到各部件中的詳細(xì)組成及大小。

一條SQL存入LIBRARYCACHE時(shí),他會(huì)自動(dòng)判斷這條SQL與以前解析過(guò)的SQL是否一樣,一樣就調(diào)用以前解析過(guò)的SQL去執(zhí)行并返回結(jié)果(軟解析),假使不一樣,他就會(huì)去將這條SQL進(jìn)行解析,檢查這條SQL的權(quán)限,語(yǔ)法等,生成讓數(shù)據(jù)庫(kù)能懂的執(zhí)行代碼,并返回執(zhí)行結(jié)果(硬解析)。

判斷是否一樣的條件:

一、新輸入的SQL與LIBCTIONARYCACHE中的SQL是否一樣

二、將新輸入的SQL生成HASH值,與這前的SQL的HASH值進(jìn)行比較以判斷是否一樣三、假使HASH值一樣,這時(shí)數(shù)據(jù)庫(kù)再?gòu)念^一一比較SQL語(yǔ)句中的各字母,包括空格、大小寫、解釋,如下三條就不同:

數(shù)據(jù)庫(kù)認(rèn)為常量不一樣也不是同一SQL,如:

可以用CURSOR_SHARING參數(shù)設(shè)置匹配條件:EXACT確切(默認(rèn))SIMILAR類似FORCE強(qiáng)制

四、假使有兩個(gè)用戶,而兩個(gè)用戶下有一個(gè)一致的表,這時(shí)即時(shí)SQL語(yǔ)句一致,但所有者不一樣,這樣這兩個(gè)SQL也不一樣。

五、當(dāng)SQL中綁定了變量,不管輸入的值是否一樣,這SQL是一樣的。所以猛烈要求使用綁定變量。

實(shí)例一-修改參數(shù):

一、查看數(shù)據(jù)庫(kù)中已經(jīng)硬解析了多少次

二、修改參數(shù)

三、修改后就使如下兩條SQL只用軟解析而不用硬解析:

實(shí)例二-綁定變量

一、用存儲(chǔ)過(guò)程插入數(shù)據(jù)使用綁定變量

不使用綁定變量

二、執(zhí)行存儲(chǔ)過(guò)程并查看執(zhí)行時(shí)間,以對(duì)比使用綁定變量與未使用綁定變量的執(zhí)行時(shí)間:

可以看出訪用綁定變量的時(shí)間遠(yuǎn)小于未使用綁定變量的時(shí)間

―――――――――――――――――――――――――――――――――――――――調(diào)試librarycache本卷須知:一是要使用綁定變量,

二是增加Librarycache,當(dāng)然得看freememory有多大(此值應(yīng)當(dāng)不能太低)。select*fromv$sgastatwherename='freememory';三是將一些常用的SQL常駐librarycache中

四是要在librarycache中留出一執(zhí)行大事務(wù)的空間

五是避免使用PL/SQL語(yǔ)句讀取大的塊,也就是將一個(gè)大的SQL語(yǔ)句分成多個(gè)小的SQL語(yǔ)句六是不要將largepool放在librarycache中

重要視圖:v$librarycache

NAMESPACElibrarycache中的各組件名

GETS在librarycache中尋覓某條SQL的次數(shù)GETHITS在librarycache中找到某條SQL的次數(shù)

GETHITRATIO在librarycache中的查找命中率(盡量的高)PINS在librarycache中執(zhí)行某條SQL的次數(shù)

PINHITS在librarycache中成功執(zhí)行某條SQL的次數(shù)

PINHITRATIO在librarycache中成功執(zhí)行某條SQL的命中率(盡量的高)RELOADS在librarycache中去執(zhí)行時(shí)發(fā)現(xiàn)以前的SQL已經(jīng)被清除了,得重新去載入并解析(此值應(yīng)當(dāng)小于1,假使大于1可能是shardpoolcache過(guò)小,應(yīng)當(dāng)增大。當(dāng)然得看freememory)

INVALIDATIONS由于表進(jìn)行了修改,這時(shí)就要重新解析(此值盡量的接近0)

提高SQL命中率的方法:一、綁定變量

二、少用動(dòng)態(tài)SQL語(yǔ)句

三、盡量使用同一個(gè)用戶登錄

V$sql_shared_cursor查看SQL為何不能與已經(jīng)存在LIBRARYCACHE中的SQL共享檢查L(zhǎng)IBRARYCACHE是否過(guò)小:

查詢正在運(yùn)行的SQL:

查看運(yùn)行的SQL的完整信息:

總結(jié):假使發(fā)現(xiàn)命中率低、freememory低、reloads高等,就表示librarycache過(guò)低,應(yīng)當(dāng)調(diào)大shared_pool_size,由于librarycache不能單獨(dú)調(diào)大。

查看LIBRARYCACHE大小建議:

此視圖能估算出SHARED_POOL大小的不同系統(tǒng)的性能變化。查看SQL執(zhí)行計(jì)劃:

V$sql_plan表中的hash_value字段與v$sql表中的plan_hash_value字段進(jìn)行關(guān)聯(lián)。

保存池(共享池中的一部分)SHARED_POOL_RESERVED_SIZE:當(dāng)載入一個(gè)大的對(duì)象時(shí)(5K),雖然在librarycache的碎片中有能放下5K的空間,但沒(méi)有能連續(xù)的能放下5K的空間,這時(shí)就只能調(diào)用保存池(相當(dāng)于預(yù)留的一個(gè)空間)以提高性能,不然就會(huì)清除一些過(guò)時(shí)的SQL對(duì)象,再重新載入解析執(zhí)行。當(dāng)調(diào)用的完后又會(huì)將空間還給保存池以供下一次使用。保存池大約為共享池的5-10%,最大不能超過(guò)50%。可以通過(guò)修改SHARED_POOL_RESERVED_SIZE大小來(lái)實(shí)現(xiàn)修改保存池大小。

可以通過(guò)V$SHARED_POOL_RESERVED視圖查看保存池是否滿足大小。

假使REQUEST_FAILURES大于0或逐漸增大,可能就是保存池太小,應(yīng)當(dāng)增大保存池和共享池大小。

假使REQUEST_FAILURES等于0或不逐漸增大,并且保存池中的空閑空間常大于50%可能就是保存池太大,假使太大應(yīng)當(dāng)減小保存池。注:假使是自動(dòng)管理SGA,通過(guò)命令查看如下:SQL>showparametershared_pool;

NAMEYPEVALUE

shared_pool_reserved_sizebiginteger31876710shared_pool_sizebiginteger0

要想查看真實(shí)的shared_pool_size得從v$sga_dynamic_components表中查看。

修改shared_pool_size大小:

一、先要估算出librarycache現(xiàn)在占用大小

二、

將某些SQL固定在內(nèi)存中

一、先確定哪些SQL需要固定在內(nèi)存中

KEPT=NO表示該SQL不在內(nèi)存中二、執(zhí)行包

注:假使要固定最好在數(shù)據(jù)庫(kù)一啟動(dòng)時(shí)就固定,由于內(nèi)存中還沒(méi)有存在的包等,有空余空間。

sys.dbms_shared_pool.keep(address||','||hashvalue,'C');固定SQLsys.dbms_shared_pool.unkeep(address||','||hashvalue,'C');取消固定SQL

清除內(nèi)存中的對(duì)像,但固定的不會(huì)被清除。查找大的數(shù)據(jù)塊:

假使查到可以將該SQL改寫成小的數(shù)據(jù)塊以提高執(zhí)行速度。常用視圖:

―――――――――――――――――――――――――――――――――――――――調(diào)整DataDictionaryCache:

Gets:讀取次數(shù)

Getmisses:讀取失敗次數(shù)(該參數(shù)越小越好或盡量不增加,但假使數(shù)據(jù)庫(kù)剛啟動(dòng)不久則該參數(shù)可能較大,如285,由于剛啟動(dòng)好多數(shù)據(jù)本就不存在)

查詢執(zhí)行狀況:

假使不夠就可以調(diào)整SHARED_POOL_SIZE大小。altersystemsetshared_pool_size=50Mscope=spfile;

―――――――――――――――――――――――――――――――――――――――調(diào)整LargePool-大對(duì)像使用(I/O服務(wù)進(jìn)程,如DBWR_IO_SLAVES,備份與恢復(fù),共享模式,并行查詢),用的時(shí)候在SGA中分派,用完就清除。調(diào)整參數(shù)LARGE_POOL_SIZE

LARGE_POOL尋常用于共享服務(wù)器(MTS),并行計(jì)算或者RMAN備份恢復(fù)中。設(shè)置其大小的參數(shù)為:LARGE_POOL_SIZE

假使不設(shè)置MTS,LARGE_POOL尋常在RMAN、OPQ會(huì)使用到,LARGE_POOL_SIZE設(shè)置在10M50M應(yīng)當(dāng)差不多了。

假使RMAN備份恢復(fù)中,分派了多通道,可以考慮參考給出的公式。LARGE_POOL_SIZE=number_of_allocated_channels*(16MB+(4*size_of_tape_buffer))。

假使設(shè)置MTS,則由于UGA放到large_pool_size的起因,這個(gè)時(shí)候依據(jù)session最大數(shù)量和sort_ares_size等參數(shù)設(shè)置,必需增大large_pool_size的設(shè)置,可以考慮為session*(sort_area_size+2M)。這里要提醒一點(diǎn),不是必需使用MTS,我們都不主張使用MTS,特別同時(shí)在線用戶數(shù)小于500的狀況下。

―――――――――――――――――――――――――――――――――――――――調(diào)整BUFFERCACHE原理:

Server進(jìn)程讀磁盤數(shù)據(jù)到內(nèi)存LRU鏈表對(duì)列中去,DBWn進(jìn)程將內(nèi)存CHECKPOINTQUEUE對(duì)列中的臟數(shù)據(jù)寫入磁盤。LRU鏈表控制訪問(wèn)次數(shù)的排列,訪問(wèn)次數(shù)多的排在前面,次數(shù)少的或沒(méi)有被訪問(wèn)的放在后面直到清除。CHECKPOINTQUEUE臟數(shù)據(jù)排序,等待寫入磁盤。Buffercache中塊的四種狀態(tài):

Pinned:有多個(gè)塊,但只有一個(gè)塊能寫,其他塊等待

Clean:buffercache中的內(nèi)容與磁盤上的一致,也沒(méi)有被使用Free/unused:從來(lái)沒(méi)有使用過(guò)的快

Dirty:沒(méi)有被使用,但內(nèi)容與磁盤上的不一致,調(diào)用DBWn進(jìn)程寫到磁盤上,后才能淘汰?臟數(shù)據(jù)塊(dirtybuffer):buffercache中的內(nèi)存數(shù)據(jù)塊的內(nèi)容被修改,從而導(dǎo)致與數(shù)據(jù)文件中的數(shù)據(jù)塊的內(nèi)容不一致。?空閑數(shù)據(jù)塊(freebuffer):buffercache中的內(nèi)存數(shù)據(jù)塊為空。?清白數(shù)據(jù)塊(cleanbuffer):buffer的內(nèi)容與數(shù)據(jù)文件中的一致。?釘住的數(shù)據(jù)塊(pinbuffer):當(dāng)前正在更新的內(nèi)存數(shù)據(jù)塊。

DB_BLOCK_CHECKSUM=TRUN塊校驗(yàn),防止數(shù)據(jù)損壞。全增加1-2%的負(fù)載。Buffercache下有幾個(gè)子cache(default、keep、recycle、nkbuffercache)。他們的大小各不相關(guān),由以下三個(gè)參數(shù)分別指定

什么是大表?就是指有一定限制的塊個(gè)數(shù),11G中限制為20個(gè)塊的表為大表,此值可設(shè)定。

CACHETABLES

對(duì)一些大表進(jìn)行全表掃描時(shí),會(huì)將塊放在對(duì)列最終,很快就會(huì)被淘汰出局,但對(duì)于一些小表進(jìn)行全表掃描時(shí)也會(huì)這樣,但有些小表又往往要使用,不希望被淘汰出局,這時(shí)就可以將要全表掃描的小表固定起來(lái)不讓淘汰出局(指一定時(shí)間不會(huì)被淘汰,假使長(zhǎng)時(shí)間不訪問(wèn)也會(huì)被淘汰出局),使讀入的塊放在對(duì)列前面。

原則:不要在CACHE中放太多的表,以免使得內(nèi)存不夠盡量將表固定在keeppool中

在創(chuàng)立表時(shí)固定到內(nèi)存中-在最終加cache語(yǔ)句:

創(chuàng)立表后在修改:

注:要取消內(nèi)存中的表就在加nocache:SQL>ALTERTABLEemployeeNOCACHE;在hint中創(chuàng)立表到內(nèi)存中:

FREELIST:

假使有多個(gè)進(jìn)程對(duì)表進(jìn)行操作,那么可能對(duì)FREELIST進(jìn)行爭(zhēng)用并提醒“bufferbusywaits〞。這時(shí)就要以創(chuàng)立多個(gè)FREELIST,原則是對(duì)一個(gè)表有多少個(gè)進(jìn)程進(jìn)行操作就創(chuàng)立多少個(gè)FREELIST。單CPU創(chuàng)立多個(gè)FREELIST效果不大。推薦使用自動(dòng)管理方式-ASSM空間自動(dòng)管理(BITMAPS方式)。

查看FREELIST爭(zhēng)用狀況:

查看v$system_event表中的bufferbusywaits事件與v$waitstat表中的segmentheader事件就能確定是否有freelist爭(zhēng)用狀況。

此SQL能查詢是在爭(zhēng)用哪個(gè)表

注:創(chuàng)立ASSM管理方式-在創(chuàng)立表空間時(shí)指定:

這樣上面這個(gè)表就是使用了ASSM自動(dòng)管理方式管理。

指定多個(gè)DBWn:

假使buffercache中的臟數(shù)據(jù)過(guò)多,而又不能及時(shí)寫入數(shù)據(jù)文件,這時(shí)可能造成等待。為了解決這問(wèn)題可以指定多個(gè)DBWn進(jìn)程進(jìn)行寫操作。什么時(shí)候要增加DBWn進(jìn)程?

查看FREEBUFFERWAITS事件,假使較多就可能是DBWn進(jìn)程太少寫不過(guò)來(lái)。SQL>ALTERSYSTEMSETDB_WRITER_PROCESSES=5;多CPU和系統(tǒng)支持異步IO操作比較有用。

注:操作系統(tǒng)大多支持異步IO功能

異步IO:就是進(jìn)行發(fā)出一個(gè)讀指令,過(guò)一會(huì)在去取要的結(jié)果就可以了。(推薦)同步IO:就是進(jìn)程發(fā)出一個(gè)讀指令,直到結(jié)果返回。

為了實(shí)現(xiàn)異步IO,所以在安裝數(shù)據(jù)庫(kù)時(shí)必需安裝以下兩個(gè)文件:

開啟異步IO:

假使系統(tǒng)不支持異步IO,這時(shí)就不能用指定多個(gè)DBWn進(jìn)程的方式來(lái)提高讀寫速度,只能用以下方式實(shí)現(xiàn):

一個(gè)DBWn進(jìn)程與多個(gè)IOSLAVES進(jìn)程模擬異步IO。

獎(jiǎng)dbwr_io_slaves設(shè)置為多個(gè)時(shí)就啟動(dòng)了模擬IO。

動(dòng)態(tài)調(diào)整SGA

V$brffer_pool此視圖能查看到SGA調(diào)整之前與調(diào)整之后的各值

調(diào)整SGA各池大?。?/p>

調(diào)整REDOLOGBUFFER:

當(dāng)多個(gè)用戶都執(zhí)行DML或DDL操作時(shí),由于LGWR進(jìn)程只有一個(gè),可能造成不能及時(shí)的將修改記錄寫入REDOLOG日志文件,這時(shí)就有可能造成用戶進(jìn)程等待,所有有必要調(diào)整REDOLOGBUFFER大小。

當(dāng)LGWR進(jìn)程將修改記錄信息寫入完1、2、3時(shí)再重頭寫1時(shí),這時(shí)假使ARC0進(jìn)程寫放太慢,這時(shí)也要等待ARC0將信息寫重做日志后LGWR才能寫入REDOLOG,這時(shí)就可以增加REDOLOG日志組個(gè)數(shù)或日志組大小或增加ARC0進(jìn)程數(shù)(LOG_ARCHIVE_MAX_PROCESSES)。查看切換等待:

LGWR何時(shí)執(zhí)行?

用戶COMMIT時(shí)、三秒鐘、REDOLOGBUFFER三分之一時(shí)、1M時(shí)(所以不用配置太大,以免浪費(fèi),一般就1-2M或幾百K)。

REDOLOGBUFFER大小一般為512K或128*CPU數(shù).SQL>ALTERSYSTEMSETLOG_BUFFER=512K;

注:查看CPU個(gè)數(shù):

SQL>SHOWPARAMETERCPU;

如何查看是否REDOLOGBUFFER不足:方法一、V$sysstat:

Redoentries:向REDOLOGBUFFER中放了多少條REDO信息。

Redobufferallocationretries:在REDOLOGBUFFER不足的狀況下,嘗試了多少次去尋覓空余空間。

Redobufferallocationretries/Redoentries=%應(yīng)當(dāng)小于1%

方法二、發(fā)現(xiàn)不能向REDOLOGBUFFER中放信息時(shí)就會(huì)在v$session_wait中出現(xiàn)logbufferspaceevent事件。所以應(yīng)當(dāng)不出現(xiàn)logbufferspaceevent事件為最好。

調(diào)整:

方法一、增加REDOLOGBUFFER池大小方法二、假使LGWR等待:

A、增加日志組個(gè)數(shù)或日志組大小

B、增加ARCn進(jìn)程個(gè)數(shù)方法三、減少產(chǎn)成REDO信息

A、如批量導(dǎo)入可以不用產(chǎn)成REDO信息

B、在創(chuàng)立表或索引時(shí)指定NOLOGING不產(chǎn)生REDO信息

調(diào)整排序操作如下會(huì)用到排序:

Sort-based(sort、groub-by、orderby)

Hash-join

Bitmapoperators

Workarea:工作區(qū),在PGA內(nèi)存中單獨(dú)劃分了一個(gè)區(qū)域用于排序。工作區(qū)分三種狀況:

1、optimal全部輸入排序的數(shù)據(jù)都在內(nèi)存工作區(qū)中完成(理想狀況)

2、one-pass輸入排序的數(shù)據(jù)在內(nèi)存中放不下在磁盤中放一部分,做一次磁盤掃描。3、multi-pass輸入排序的數(shù)據(jù)在內(nèi)存中放不下在磁盤中放大部分,做屢屢磁盤掃描(最差)。PGA中各個(gè)用戶工作區(qū)大小是默認(rèn)為自動(dòng)管理,管理員只關(guān)心總的工作區(qū)大小就可以,不用關(guān)心各個(gè)用戶連接上來(lái)的工作區(qū)大小,但假使確實(shí)用戶連接過(guò)多,要使用的工作區(qū)過(guò)大,也可能超過(guò)管理員設(shè)置的總工作區(qū)大小。

在PGA中,用戶連接上來(lái)一個(gè)就會(huì)在PGA中分派一塊內(nèi)存(工作區(qū)),斷開后就會(huì)清除該工作區(qū)。

SQL>ALTERSYSTEM

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論