Oracle調(diào)優(yōu)總結(jié)收藏_第1頁
Oracle調(diào)優(yōu)總結(jié)收藏_第2頁
Oracle調(diào)優(yōu)總結(jié)收藏_第3頁
Oracle調(diào)優(yōu)總結(jié)收藏_第4頁
Oracle調(diào)優(yōu)總結(jié)收藏_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.:.;Oracle調(diào)優(yōu)總結(jié)收藏轉(zhuǎn) HYPERLINK blog.19lou/batchmon.php?action=viewspace&op=up&itemid=2172252&uid=10338179 上一篇 / HYPERLINK blog.19lou/batchmon.php?action=viewspace&op=next&itemid=2172252&uid=10338179 下一篇 2021-02-25 16:06:23 / 個(gè)人分類: HYPERLINK blog.19lou/10338179/spacelist-blog-itemtypeid-215 Oracle HYPER

2、LINK blog.19lou/10338179/viewspace-2172252 l xspace-tracks#xspace-tracks 查看( 339 ) / HYPERLINK blog.19lou/10338179/viewspace-2172252 l xspace-itemreply#xspace-itemreply 評(píng)論( 1 ) / HYPERLINK blog.19lou/10338179/viewspace-2172252 l xspace-itemform#xspace-itemform 評(píng)分( 0 / 0 ) Problem Description:1.每個(gè)表的構(gòu)

3、造及主鍵索引情況2.每個(gè)表的count(*)記錄是多少3.對(duì)于創(chuàng)建索引的列,索引的類型是什么?count(distinct indexcol)的值是多少?4.最后一次對(duì)表進(jìn)展分析是在什么時(shí)間,分析后,能否又對(duì)相關(guān)表做過大的操作5.索引最后一次rebuild,是在什么時(shí)間,以后對(duì)表的操作類型又是什么情況?索引中浪費(fèi)的空間是多少?6.這些表的存儲(chǔ)情況,表的存儲(chǔ)參數(shù),表空間的類型,存儲(chǔ)參數(shù)等7.執(zhí)行該SQL語句時(shí),系統(tǒng)等候的資源是什么? Trace SQL語句的執(zhí)行過程8.另一臺(tái)執(zhí)行類似SQL速度很快的機(jī)器上的相關(guān)表的如上信息是什么? 一:SQL tuning 類1:列舉幾種表銜接方式 hash j

4、oin/merge join/nest loop(cluster join)/index join2:不借助第三方工具,怎樣查看sql的執(zhí)行方案set autotrace onset autotrace traceonlyexplain plan set statement_id = &item_id for &sql; select * from table(dbms_xplan.display); HYPERLINK download-west.oracle/ download-west.oracle/ . /b10752/ex_plan.htm3:如何運(yùn)用CBO,CBO與RULE的區(qū)別

5、在optimizer_mode=choose時(shí),假設(shè)表有統(tǒng)計(jì)信息分區(qū)表外,優(yōu)化器將選擇CBO,否那么選RBO。 RBO遵照簡單的分級(jí)方法學(xué),運(yùn)用15種級(jí)別要點(diǎn),當(dāng)接納到查詢,優(yōu)化器將評(píng)價(jià)運(yùn)用到的要點(diǎn)數(shù)目,然后選擇最正確級(jí)別最少的數(shù)量的執(zhí)行途徑來運(yùn)轉(zhuǎn)查詢。CBO嘗試找到最低本錢的訪問數(shù)據(jù)的方法,為了最大的吞吐量或最快的初始呼應(yīng)時(shí)間,計(jì)算運(yùn)用不同的執(zhí)行方案的本錢,并選擇本錢最低的一個(gè),關(guān)于表的數(shù)據(jù)內(nèi)容的統(tǒng)計(jì)被用于確定執(zhí)行方案。4:如何定位重要(耗費(fèi)資源多)的SQL select sql_text from v$sql where disk_reads 1000 or (executions 0 a

6、nd buffer_gets/executions 30000);5:如何跟蹤某個(gè)session的SQL exec dbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1); exec dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,);6:SQL調(diào)整最關(guān)注的是什么 查看該SQL的respo

7、nse time(db block gets/consistent gets/physical reads/sorts (disk)7:說說他對(duì)索引的認(rèn)識(shí)索引的構(gòu)造、對(duì)dml影響、為什么提高查詢性能 b-tree index/bitmap index/function index/patitional index(local/global) 索引通常能提高select/update/delete的性能,會(huì)降低insert的速度, 8:運(yùn)用索引查詢一定能提高查詢的性能嗎?為什么 索引就是為了提高查詢性能而存在的,假設(shè)在查詢中索引沒有提高性能,只能說是用錯(cuò)了索引,或者講是場所不同9:綁定變量是什么

8、?綁定變量有什么優(yōu)缺陷? 綁定變量是相對(duì)文本變量來講的,所謂文本變量是指在SQL直接書寫查詢條件,這樣的SQL在不同條件下需求反復(fù)解析,綁定變量是指運(yùn)用變量來替代直接書寫條件,查詢bind value在運(yùn)轉(zhuǎn)時(shí)傳送,然后綁定執(zhí)行。 優(yōu)點(diǎn)是減少硬解析,降低CPU的爭用,節(jié)省shared_pool缺陷是不能運(yùn)用histogram,sql優(yōu)化比較困難10:如何穩(wěn)定(固定)執(zhí)行方案 query_rewrite_enabled = true star_transformation_enabled = true optimizer_features_enable = 9.2.0創(chuàng)建并運(yùn)用stored out

9、line HYPERLINK download-west.oracle/ download-west.oracle/ . /outlines.htm#26854 這個(gè)貼子: HYPERLINK /viewthread.php?tid=27598 /viewthread.php?tid=27598 11:和排序相關(guān)的內(nèi)存在8i和9i分別怎樣調(diào)整,暫時(shí)表空間的作用是什么 8i中sort_area_size/sort_area_retained_size決議了排序所需求的內(nèi)存 假設(shè)排序操作不能在sort_area_size中完成,就會(huì)用到temp表空間 9i中假設(shè)

10、workarea_size_policy=auto時(shí), 排序在pga內(nèi)進(jìn)展,通常pga_aggregate_target的1/20可以用來進(jìn)展disk sort; 假設(shè)workarea_size_policy=manual時(shí),排序需求的內(nèi)存由sort_area_size決議 在執(zhí)行order by/group by/distinct/union/create index/index rebuild/minus等操作時(shí), 假設(shè)在pga或sort_area_size中不能完成,排序?qū)⒃跁簳r(shí)表空間進(jìn)展disk sort, 暫時(shí)表空間主要作用就是完成系統(tǒng)中的disk sort.12:存在表T(a,b,

11、c,d),要根據(jù)字段c排序后取第2130條記錄顯示,請(qǐng)給出sql create table t(a number(,b number(,c number(,d number(); / begin for i in 1 . 300 loop insert into t values(mod(i,2),i/2,dbms_random.value(1,300),i/4); end loop; end; / select * from (select c.*,rownum as rn from (select * from t order by c desc) c) where rn between

12、21 and 30; / select * from (select * from test order by c desc) x where rownum 30 minus select * from (select * from test order by c desc) y where rownum 20 order by 3 desc 相比之 minus性能較差二:數(shù)據(jù)庫根本概念類1:pctused and pctfree 表示什么含義有什么作用 pctused與pctfree控制數(shù)據(jù)塊能否出如今freelist中,pctfree控制數(shù)據(jù)塊中保管用于update的空間,當(dāng)數(shù)據(jù)塊中的fr

13、ee space小于pctfree設(shè)置的空間時(shí),該數(shù)據(jù)塊從freelist中去掉,當(dāng)塊由于dml操作free space大于pct_used設(shè)置的空間時(shí),該數(shù)據(jù)庫塊將被添加在freelist鏈表中。-PCTFREE存儲(chǔ)參數(shù) PCTFREE存儲(chǔ)參數(shù)通知ORACLE什么時(shí)候應(yīng)該將數(shù)據(jù)塊從對(duì)象的空閑列表中移出。ORACLE的默許參數(shù)是PCTFREE=10;也就是說,一旦一個(gè)INSERT操作使得數(shù)據(jù)塊的90%被運(yùn)用,這個(gè)數(shù)據(jù)塊就從空閑列表(free list)中移出。 -PCTUSED存儲(chǔ)參數(shù) PCTUSED存儲(chǔ)參數(shù)通知ORACLE什么時(shí)候?qū)⒁郧皾M的數(shù)據(jù)塊加到空閑列表中。當(dāng)記錄從數(shù)據(jù)表中刪除時(shí),數(shù)據(jù)庫

14、的數(shù)據(jù)塊就有空間接受新的記錄,但只需當(dāng)填充的空間降到PCTUSED值以下時(shí),該數(shù)據(jù)塊才被銜接到空閑列表中,才可以往其中插入數(shù)據(jù)。PCTUSED的默許值是PCTUSED=40。 -存儲(chǔ)參數(shù)規(guī)那么小結(jié) 1PCTUSED較高意味著相對(duì)較滿的數(shù)據(jù)塊會(huì)被放置到空閑列表中,從而有效的反復(fù)運(yùn)用數(shù)據(jù)塊的空間,但會(huì)導(dǎo)致I/O耗費(fèi)。PCTUSED低意味著在一個(gè)數(shù)據(jù)塊快空的時(shí)候才被放置到空閑列表中,數(shù)據(jù)塊一次能接受很多的記錄,因此可以減少I/O耗費(fèi),提高性能。 2PCTFREE的值較大意味著數(shù)據(jù)塊沒有被利用多少就從空閑列表中斷開銜接,不利于數(shù)據(jù)塊的充分運(yùn)用。PCTFREE過小的結(jié)果是,在更新時(shí)能夠會(huì)出現(xiàn)數(shù)據(jù)記錄遷移

15、(Migration)的情況。(注:數(shù)據(jù)記錄遷移(Migration)是指記錄在是UPDATE操作擴(kuò)展了一個(gè)VARCHAR2類型的列或BLOB列后,PCTFREE參數(shù)所指定的空間不夠擴(kuò)展,從而記錄被ORACLE強(qiáng)迫遷移到新的數(shù)據(jù)塊,發(fā)生這種情況將較嚴(yán)重的影響ORACLE的性能,出現(xiàn)更新緩慢)。 3在批量的插入、刪除或者更新操作之前,先刪除該表上的索引,在操作終了之后在重新建立,這樣有助于提高批量操作的整體速度,并且保證B樹索引在操作之后有良好的性能。 -表的pctfree和pctused兩個(gè)參數(shù)進(jìn)展估算的方法 對(duì)于不同的運(yùn)用系統(tǒng),表的pctfree 和pctused兩個(gè)參數(shù)有不同的設(shè)計(jì)原那么,

16、以下是根據(jù)特定的運(yùn)用系統(tǒng)進(jìn)展估算的例子,從中可以掌握根本的估算方法。表的存儲(chǔ)參數(shù)調(diào)整,普通情況,設(shè)置為pctfree 5 pctused 85即可缺省為pctfree 10 pctused 401.對(duì)于Pctfree參數(shù)除了可以按字段及字段長度估算平均行長外,下面的方面可以根據(jù)已有數(shù)據(jù)分析出平均行長和每塊行數(shù)例:analyze table 病人信息 compute statistics for table for all indexes for all indexed columns;Select Num_Rows,Blocks,Round(Num_Rows / Blocks) Avg_Row

17、s_Block, Avg_Row_Len From User_Tables Where Table_Name = 病人信息 NUM_ROWS BLOCKS AVG_ROWS_BLOCK AVG_ROW_LEN 857291 14161 61 117 對(duì)于普通8192的塊,實(shí)踐可用空間為8100左右.假設(shè)以前該表的pctfree為15,改為5后,pctfree減少10,就可以再存入約7行.一樣的1萬4千塊就可以多存放約10萬行數(shù)據(jù),這10萬行數(shù)據(jù),假設(shè)按每塊60行算,就可以少占用約1700塊(約13M的空間)假設(shè)全表掃描該表的話,少讀1700塊數(shù)據(jù),少106次IO操作(按缺省db_file_mu

18、ltiblock_read_count=16計(jì)算)少占13M的內(nèi)存另外,需求思索的兩個(gè)要素1。更新操作時(shí),數(shù)據(jù)增長量大不大,例如:主要是把形狀字段由1改為3,還是把摘要由空改為一段文字2。并發(fā)事務(wù)的多少,由于一個(gè)事務(wù)信息在塊中要占用約24Byte,假設(shè)有10個(gè)并發(fā)事務(wù)的話,至少額外思索240Byte的空閑空間。2.對(duì)于Pctused參數(shù)主要思索刪除后插入數(shù)據(jù)的情況多不多,以及平均行長大小例如:病人費(fèi)用記錄,醫(yī)保假設(shè)存在校正操作的話,是先產(chǎn)生預(yù)交結(jié)算數(shù)據(jù),正式結(jié)算時(shí),刪除這些數(shù)據(jù)再重新生成所以,病人預(yù)交記錄,Pctused不能設(shè)置太高,否那么重用那些低于Pctused的塊,只能插入少量數(shù)據(jù)行,添

19、加了IO操作analyze table 病人預(yù)交記錄 compute statistics for table for all indexes for all indexed columns;Select Num_Rows,Blocks,Round(Num_Rows / Blocks) Avg_Rows_Block, Avg_Row_Len From User_Tables Where Table_Name = 病人預(yù)交記錄 NUM_ROWS BLOCKS AVG_ROWS_BLOCK AVG_ROW_LEN 181758 2147 85 83 假設(shè)設(shè)置pctfree 5 pctused 85

20、,那么當(dāng)刪除一些行使塊的已用空間低于85%時(shí),塊會(huì)被重用,但是由于要預(yù)留5%的空閑空間,所以,對(duì)于已用空間剛剛低于85%的塊,重用空間就只需10%,對(duì)于8K的塊,可用810Byte,平均行長83,可以再放入9行,所以這個(gè)參數(shù)也是可以的。但是,假設(shè)是病人費(fèi)用記錄,平均行長229,這樣設(shè)置,只能放下3行,這個(gè)參數(shù)就不太適宜了 NUM_ROWS BLOCKS AVG_ROWS_BLOCK AVG_ROW_LEN 925133 38278 24 229 根據(jù)分析,病人費(fèi)用記錄的數(shù)據(jù)更新量不大,但是并發(fā)操作比較大,最好把Pctfree設(shè)置高一點(diǎn)所以,可以設(shè)置為pctfree 10 pctused 75重

21、用的塊至少可以放5行,約1-2張單據(jù),甚至pctused 70也是可以的。假設(shè)一個(gè)塊的數(shù)據(jù)行數(shù)太多,能夠呵斥熱塊爭用,但是相對(duì)于減少存儲(chǔ),減少IO,減少內(nèi)存占用帶來的益處來說,熱塊不是特別突出的情況下可以不思索。PCTFREE=(Average Row Size-Initial Row Size)*100/Average Row SizePCTUSED=(100-PCTFREE) -Average Row Size * 100/Availabe Data SpaceOracle的其中一個(gè)優(yōu)點(diǎn)時(shí)它可以管理每個(gè)表空間中的自在空間。Oracle擔(dān)任處置表和索引的空間管理,這樣就可以讓我們無需懂得Or

22、acle的表和索引的內(nèi)部運(yùn)作。不過,對(duì)于有閱歷的Oracle調(diào)優(yōu)專家來說,他需求懂得Oracle是如何管理表的extent和空閑的數(shù)據(jù)塊。對(duì)于調(diào)整擁有高的insert或者update的系統(tǒng)來說,這是非常重要的。要知曉對(duì)象的調(diào)整,他需求懂得freelists和freelist組的行為,它們和pctfree及pctused參數(shù)的值有關(guān)。這些知識(shí)對(duì)于企業(yè)資源方案ERP的運(yùn)用是特別重要的,由于在這些運(yùn)用中,不正確的表設(shè)置通常是DML語句執(zhí)行慢的緣由。對(duì)于初學(xué)者來說,最常見的錯(cuò)誤是以為默許的Oracle參數(shù)對(duì)于一切的對(duì)象都是最正確的。除非磁盤的耗費(fèi)不是一個(gè)問題,否那么在設(shè)置表的pctfree和pctus

23、ed參數(shù)時(shí),就必需思索平均的行長和數(shù)據(jù)庫的塊大小,這樣空的塊才會(huì)被有效地放到freelists中。當(dāng)這些設(shè)置不正確時(shí),那些得到的freelists也是dead塊,由于它們沒有足夠的空間來存儲(chǔ)一行,這樣將會(huì)導(dǎo)致明顯的處置延遲。Freelists對(duì)于有效地重新運(yùn)用Oracle表空間中的空間是很重要的,它和pctfree及pctused這兩個(gè)存儲(chǔ)參數(shù)的設(shè)置直接相關(guān)。假設(shè)將pctused設(shè)置為一個(gè)高的值,這時(shí)數(shù)據(jù)庫就會(huì)盡快地重新運(yùn)用塊。不過,高性能和有效地重新運(yùn)用表的塊是對(duì)立的。在調(diào)整Oracle的表格和索引時(shí),需求仔細(xì)思索終究需求高性能還是有效的空間重用,并且據(jù)此來設(shè)置表的參數(shù)。以下我們來看一下這些

24、freelists是如何影響Oracle的性能的。當(dāng)有一個(gè)懇求需求插入一行到表格中時(shí),Oracle就會(huì)到freelist中尋覓一個(gè)有足夠的空間來包容一行的塊。他也許知道,freelist串是放在表格或者索引的第一個(gè)塊中,這個(gè)塊也被稱為段頭segment header。pctfree和pctused 參數(shù)的獨(dú)一目的就是為了控制塊如何在freelists中進(jìn)出。雖然freelist link和 unlink是簡單的Oracle功能,不過設(shè)置freelist link (pctused) 和unlink (pctfree) 對(duì)Oracle的性能確實(shí)有影響。由DBA的根本知識(shí)知道,pctfree參數(shù)是

25、控制freelist un-links的即將塊由freelists中移除。設(shè)置pctfree=10 意味著每個(gè)塊都保管10%的空間用作行擴(kuò)展。pctused參數(shù)是控制freelist re-links的。設(shè)置pctused=40意味著只需在塊的運(yùn)用低于40%時(shí)才會(huì)回到表格的freelists中。許多新手對(duì)于一個(gè)塊重新回到freelists后的處置都有些誤解。其實(shí),一旦由于一個(gè)刪除的操作而令塊被重新參與到freelist中,它將會(huì)不斷保管在freelist中即使空間的運(yùn)用超越了60%,只需在到達(dá)pctfree時(shí)才會(huì)將數(shù)據(jù)塊由freelist中移走。表格和索引存儲(chǔ)參數(shù)設(shè)置的要求總結(jié)以下的一些規(guī)那么

26、是用來設(shè)置freelists, freelist groups, pctfree和pctused存儲(chǔ)參數(shù)的。他也知道,pctused和pctfree的值是可以很容易地經(jīng)過alter table命令修正的,一個(gè)好的DBA應(yīng)該知道如何設(shè)置這些參數(shù)的最正確值。有效地運(yùn)用空間和高性能之間是有矛盾的,而表格的存儲(chǔ)參數(shù)就是控制這個(gè)方面的矛盾:. 對(duì)于需求有效地重新運(yùn)用空間,可以設(shè)置一個(gè)高的pctused值,不過副作用是需求額外的I/O。一個(gè)高的pctused值意味著相對(duì)滿的塊都會(huì)放到freelist中。因此,這些塊在再次滿之前只可以接受幾行記錄,從而導(dǎo)致更多的I/O。. 追求高性能的話,可以將pctuse

27、d設(shè)置為一個(gè)低的值,這意味著Oracle不會(huì)將數(shù)據(jù)塊放到freelists中直到它幾乎是空的。那么塊將可以在滿之前接納更多的行,因此可以減少插入操作的I/O。要記住Oracle擴(kuò)展新塊的性能要比重新運(yùn)用現(xiàn)有的塊高。對(duì)于Oracle來說,擴(kuò)展一個(gè)表比管理freelists耗費(fèi)更少的資源。讓我們來回想一下設(shè)置對(duì)象存儲(chǔ)參數(shù)的一些常見規(guī)那么:經(jīng)常將pctused設(shè)置為可以接納一條新行。對(duì)于不能接受一行的free blocks對(duì)于我們來說是沒有用的。假設(shè)這樣做,將會(huì)令Oracle的性能變慢,由于Oracle將在擴(kuò)展表來得到一個(gè)空的塊之前,企圖讀取5個(gè)dead 的free block。表格中chained

28、 rows的出現(xiàn)意味著pctfree太低或者是db_block_size太少。在很多情況下,RAW和LONG RAW列都很宏大,以致超越了Oracle的最大塊的大小,這時(shí)chained rows是不可以防止的。假設(shè)一個(gè)表有同時(shí)插入的SQL語句,那么它需求有同時(shí)刪除的語句。運(yùn)轉(zhuǎn)單一個(gè)一個(gè)去除的任務(wù)將會(huì)把全部的空閑塊放到一個(gè)freelist中,而沒有其它包含有任何空閑塊的freelists出現(xiàn)。freelist參數(shù)應(yīng)該設(shè)置為表格同時(shí)更新的最大值。例如,假設(shè)在任何時(shí)候,某個(gè)表最多有20個(gè)用戶執(zhí)行插入的操作,那么該表的參數(shù)應(yīng)該設(shè)置為freelists=20。應(yīng)記住的是freelist groups參數(shù)

29、的值只是對(duì)于Oracle Parallel Server和Real Application Clusters才是有用的。對(duì)于這類Oracle,freelist groups應(yīng)該設(shè)置為訪問該表格的Oracle Parallel Server實(shí)例的數(shù)目。 -2:簡單描畫table / segment / extent / block之間的關(guān)系 table創(chuàng)建時(shí),默許創(chuàng)建了一個(gè)data segment,每個(gè)data segment含有min extents指定的extents數(shù),每個(gè)extent據(jù)據(jù)表空間的存儲(chǔ)參數(shù)分配一定數(shù)量的blocks3:描畫tablespace和datafile之間的關(guān)系一個(gè)

30、tablespace可以有一個(gè)或多個(gè)datafile,每個(gè)datafile只能在一個(gè)tablespace內(nèi),table中的數(shù)據(jù),經(jīng)過hash算法分布在tablespace中的各個(gè)datafile中,tablespace是邏輯上的概念,datafile那么在物理上儲(chǔ)存了數(shù)據(jù)庫的種種對(duì)象。4:本地管理表空間和字典管理表空間的特點(diǎn),ASSM有什么特點(diǎn) 本地管理表空間Locally Managed Tablespace簡稱LMT 8i以后出現(xiàn)的一種新的表空間的管理方式,經(jīng)過位圖來管理表空間的空間運(yùn)用。 字典管理表空間Dictionary-Managed Tablespace簡稱DMT 8i以前包括以后

31、都還可以運(yùn)用的一種表空間管理方式,經(jīng)過數(shù)據(jù)字典管理表空間的空間運(yùn)用。 動(dòng)段空間管理ASSM, 它初次出如今Oracle920里有了ASSM,鏈接列表freelist被位圖所取代,它是一個(gè)二進(jìn)制的數(shù)組, 可以迅速有效地管理存儲(chǔ)擴(kuò)展和剩余區(qū)塊free block,因此可以改善分段存儲(chǔ)本質(zhì), ASSM表空間上創(chuàng)建的段還有另外一個(gè)稱謂叫Bitmap Managed SegmentsBMB 段。5:回滾段的作用是什么事務(wù)回滾:當(dāng)事務(wù)修正表中數(shù)據(jù)的時(shí)候,該數(shù)據(jù)修正前的值即前影像會(huì)存放在回滾段中, 當(dāng)用戶回滾事務(wù)ROLLBACK時(shí),ORACLE將會(huì)利用回滾段中的數(shù)據(jù)前影像來將修正的數(shù)據(jù)恢復(fù)到原來的值。 事務(wù)

32、恢復(fù):當(dāng)事務(wù)正在處置的時(shí)候,例程失敗,回滾段的信息保管在undo表空間中, ORACLE將在下次翻開數(shù)據(jù)庫時(shí)利用回滾來恢復(fù)未提交的數(shù)據(jù)。 讀一致性:當(dāng)一個(gè)會(huì)話正在修正數(shù)據(jù)時(shí),其他的會(huì)話將看不到該會(huì)話未提交的修正。 當(dāng)一個(gè)語句正在執(zhí)行時(shí),該語句將看不到從該語句開場執(zhí)行后的未提交的修正語句級(jí)讀一致性 當(dāng)ORACLE執(zhí)行SELECT語句時(shí),ORACLE按照當(dāng)前的系統(tǒng)改動(dòng)號(hào)SYSTEM CHANGE NUMBER-SCN 來保證任何前于當(dāng)前SCN的未提交的改動(dòng)不被該語句處置??梢韵胂螅寒?dāng)一個(gè)長時(shí)間的查詢正在執(zhí)行時(shí), 假設(shè)其他會(huì)話改動(dòng)了該查詢要查詢的某個(gè)數(shù)據(jù)塊,ORACLE將利用回滾段的數(shù)據(jù)前影像來構(gòu)造

33、一個(gè)讀一致性視圖。 HYPERLINK . E%B5%C4%D7%F7%D3%C36:日志的作用是什么 記錄數(shù)據(jù)庫事務(wù),最大限制地保證數(shù)據(jù)的一致性與平安性 重做日志文件:含對(duì)數(shù)據(jù)庫所做的更改記錄,這樣萬一出現(xiàn)缺點(diǎn)可以啟用數(shù)據(jù)恢復(fù),一個(gè)數(shù)據(jù)庫至少需求兩個(gè)重做日志文件 歸檔日志文件:是重做日志文件的脫機(jī)副本,這些副本能夠?qū)τ趶慕橘|(zhì)失敗中進(jìn)展恢復(fù)很必要。 HYPERLINK /viewthread /viewthread. . hlight=%C8%D5%D6%BE7:SGA主要有那些部分,主要作用是什么 SGA:db_cache/shared_pool/larg

34、e_pool/java_pooldb_cache: 數(shù)據(jù)庫緩存Block Buffer對(duì)于Oracle數(shù)據(jù)庫的運(yùn)轉(zhuǎn)和性能起著非常關(guān)鍵的作用, 它占據(jù)Oracle數(shù)據(jù)庫SGA系統(tǒng)共享內(nèi)存區(qū)的主要部分。Oracle數(shù)據(jù)庫經(jīng)過運(yùn)用LRU 算法,將最近訪問的數(shù)據(jù)塊存放到緩存中,從而優(yōu)化對(duì)磁盤數(shù)據(jù)的訪問.shared_pool: 共享池的大小對(duì)于Oracle 性能來說都是很重要的。 共享池中保管數(shù)據(jù)字典高速緩沖和完全解析或編譯的的PL/SQL 塊和SQL 語句及控制構(gòu)造large_pool: 運(yùn)用MTS配置時(shí),由于要在SGA中分配UGA來堅(jiān)持用戶的會(huì)話,就是用Large_pool來堅(jiān)持這個(gè)會(huì)話內(nèi)存 運(yùn)用

35、RMAN做備份的時(shí)候,要運(yùn)用Large_pool這個(gè)內(nèi)存構(gòu)造來做磁盤I/O緩存器java_pool: 為java procedure預(yù)備的內(nèi)存區(qū)域,假設(shè)沒有運(yùn)用java proc,java_pool不是必需的 8racle系統(tǒng)進(jìn)程主要有哪些,作用是什么 數(shù)據(jù)寫進(jìn)程(dbwr):擔(dān)任將更改的數(shù)據(jù)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文件 日志寫進(jìn)程(lgwr):將重做日志緩沖區(qū)中的更改寫入在線重做日志文件 系統(tǒng)監(jiān)控(smon) :檢查數(shù)據(jù)庫的一致性如有必要還會(huì)在數(shù)據(jù)庫翻開時(shí)啟動(dòng)數(shù)據(jù)庫的恢復(fù) 進(jìn)程監(jiān)控(pmon) :擔(dān)任在一個(gè)Oracle 進(jìn)程失敗時(shí)清理資源 檢查點(diǎn)進(jìn)程(chpt):擔(dān)任在每當(dāng)緩沖區(qū)高速緩

36、存中的更改永久地記錄在數(shù)據(jù)庫中時(shí),更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫形狀信息。 歸檔進(jìn)程(arcn) :在每次日志切換時(shí)把已滿的日志組進(jìn)展備份或歸檔 作業(yè)調(diào)度器(cjq) :擔(dān)任將調(diào)度與執(zhí)行系統(tǒng)中已定義好的job,完成一些預(yù)定義的任務(wù).恢復(fù)進(jìn)程(reco) :保證分布式事務(wù)的一致性,在分布式事務(wù)中,要么同時(shí)commit,要么同時(shí)rollback;三:備份恢復(fù)類1:備份如何分類邏輯備份:exp/imp物理備份: RMAN備份 full backup/incremental backup(累積/差別) 熱備份:alter tablespace begin/end backup; 冷備份:脫機(jī)備份(d

37、atabase shutdown) 2:歸檔是什么含義關(guān)于歸檔日志:Oracle要將填滿的在線日志文件組歸檔時(shí),那么要建立歸檔日志archived redo log。其對(duì)數(shù)據(jù)庫備份和恢復(fù)有以下用途: 數(shù)據(jù)庫后備以及在線和歸檔日志文件,在操作系統(tǒng)和磁盤缺點(diǎn)中可保證全部提交的事物可被恢復(fù)。 在數(shù)據(jù)庫翻開和正常系統(tǒng)運(yùn)用下,假設(shè)歸檔日志是永久保管,在線后備可以進(jìn)展和運(yùn)用。 數(shù)據(jù)庫可運(yùn)轉(zhuǎn)在兩種不同方式下: NOARCHIVELOG方式或ARCHIVELOG 方式數(shù)據(jù)庫在NOARCHIVELOG方式下運(yùn)用時(shí),不能進(jìn)展在線日志的歸檔,假設(shè)數(shù)據(jù)庫在ARCHIVELOG方式下運(yùn)轉(zhuǎn),可實(shí)施在線日志的歸檔。 3:假

38、設(shè)一個(gè)表在2004-08-04 10:30:00 被drop,在有完善的歸檔和備份的情況下,如何恢復(fù)? 手工拷貝回一切備份的數(shù)據(jù)文件 sqlstartup mount; sqlalter database recover automatic until time 2004-08-04:10:30:00;sqlalter database open resetlogs; 4:rman是什么,有何特點(diǎn)?RMAN(Recovery Manager)是DBA的一個(gè)重要工具,用于備份、復(fù)原和恢復(fù)oracle數(shù)據(jù)庫,RMAN 可以用來備份和恢復(fù)數(shù)據(jù)庫文件、歸檔日志、控制文件、系統(tǒng)參數(shù)文件,也可以用來執(zhí)行完

39、全或不完全的數(shù)據(jù)庫恢復(fù)。RMAN有三種不同的用戶接口: COMMAND LINE方式、GUI 方式集成在OEM 中的備份管理器、API 方式用于集成到第三方的備份軟件中。具有如下特點(diǎn):1功能類似物理備份,但比物理備份強(qiáng)大N倍;2可以緊縮空塊;3可以在塊程度上實(shí)現(xiàn)增量;4可以把備份的輸出打包成備份集,也可以按固定大小分割備份集;5備份與恢復(fù)的過程可以自動(dòng)管理;6可以運(yùn)用腳本存在Recovery catalog 中7可以做壞塊監(jiān)測5:standby的特點(diǎn)備用數(shù)據(jù)庫standby database:ORACLE推出的一種高可用性(HIGH AVAILABLE)數(shù)據(jù)庫方案,在主節(jié)點(diǎn)與備用節(jié)點(diǎn)間經(jīng)過日志

40、同步來保證數(shù)據(jù)的同步,備用節(jié)點(diǎn)作為主節(jié)點(diǎn)的備份可以實(shí)現(xiàn)快速切換與災(zāi)難性恢復(fù),從920開場,還開場支持物理與邏輯備用效力器。 9i中的三種數(shù)據(jù)維護(hù)方式分別是: 1)、MAXIMIZE PROTECTION :最大數(shù)據(jù)維護(hù)與無數(shù)據(jù)分歧,LGWR將同時(shí)傳送到備用節(jié)點(diǎn), 在主節(jié)點(diǎn)事務(wù)確認(rèn)之前,備用節(jié)點(diǎn)也必需完全收到日志數(shù)據(jù)。假設(shè)網(wǎng)絡(luò)不好,引起LGWR不能傳送數(shù)據(jù),將引起嚴(yán)重的性能問題,導(dǎo)致主節(jié)點(diǎn)DOWN機(jī)。 2)、MAXIMIZE AVAILABILITY :無數(shù)據(jù)喪失方式,允許數(shù)據(jù)分歧,允許異步傳送。 正常情況下運(yùn)轉(zhuǎn)在最大維護(hù)方式,在主節(jié)點(diǎn)與備用節(jié)點(diǎn)的網(wǎng)絡(luò)斷開或銜接不正常時(shí),自動(dòng)切換到最大性能方式,

41、 主節(jié)點(diǎn)的操作還是可以繼續(xù)的。在網(wǎng)絡(luò)不好的情況下有較大的性能影響。 3)、MAXIMIZE PERFORMANCE:這種方式該當(dāng)可以說是從8i承繼過來的備用效力器方式,異步傳送, 無數(shù)據(jù)同步檢查,能夠喪失數(shù)據(jù),但是能獲得主節(jié)點(diǎn)的最大性能。9i在配置DATA GUARD的時(shí)候默許就是MAXIMIZE PERFORMANCE6:對(duì)于一個(gè)要求恢復(fù)時(shí)間比較短的系統(tǒng)(數(shù)據(jù)庫50G,每天歸檔5G),他如何設(shè)計(jì)備份戰(zhàn)略 rman/每月一號(hào) level 0 每周末/周三 level 1 其它每天level 2 四:系統(tǒng)管理類1:對(duì)于一個(gè)存在系統(tǒng)性能的系統(tǒng),說出他的診斷處置思緒1 做statspack搜集系統(tǒng)相

42、關(guān)信息 了解系統(tǒng)大致情況/確定能否存在參數(shù)設(shè)置不適宜的地方/查看top 5 event/查看top sql等2 查v$system_event/v$session_event/v$session_wait 從v$system_event開場,確定需求什么資源(db file sequential read)等 深化研討v$session_event,確定等待事件涉及的會(huì)話 從v$session_wait確定詳細(xì)的資源爭用情況(p1-p3的值:file_id/block_id/blocks等)3 經(jīng)過v$sql/v$sqltext/v$sqlarea表確定disk_reads、(buffer_g

43、ets/executions)值較大的SQL2:列舉幾種診斷IO、CPU、性能情況的方法 top/vmstat statspack sql_trace/tkprof 查v$system_event/v$session_event/v$session_wait 查v$sqlarea(disk_reads或buffer_gets/executions較大的SQL)3:對(duì)statspack有何認(rèn)識(shí)StapSpack是Oracle公司提供的一個(gè)搜集數(shù)據(jù)庫運(yùn)轉(zhuǎn)性能目的的軟件包,該軟件包從8i起,在9i、10g都有顯著的加強(qiáng)該軟件包的輔助表存儲(chǔ)相關(guān)參數(shù)與搜集的性能目的的表由最初的25個(gè)增長到43個(gè)搜集級(jí)別

44、參數(shù)由原來的3個(gè)0、5、10添加到5個(gè)0、5、6、7、10經(jīng)過分析搜集的性能目的,數(shù)據(jù)庫管理員可以詳細(xì)地了解數(shù)據(jù)庫目前的運(yùn)轉(zhuǎn)情況,對(duì)數(shù)據(jù)庫實(shí)例、等待事件、SQL等進(jìn)展優(yōu)化調(diào)整利用statspack搜集的snapshot,可以統(tǒng)計(jì)制造數(shù)據(jù)庫的各種性能目的的統(tǒng)計(jì)趨勢(shì)圖表。4:假設(shè)系統(tǒng)如今需求在一個(gè)很大的表上創(chuàng)建一個(gè)索引,他會(huì)思索那些要素,如何做以盡量減小對(duì)運(yùn)用的影響在系統(tǒng)比較空閑時(shí)nologging選項(xiàng)假設(shè)有dataguard那么不可以運(yùn)用nologging大的sort_ared_size或pga_aggregate_target較大5:對(duì)raid1+0 和raid5有何認(rèn)識(shí)RAID 10(或稱R

45、AID 10)與RAID 01不同,它是用硬盤驅(qū)動(dòng)器先組成RAID 1陣列,然后在RAID 1陣列之間再組成RAID 0陣列。RAID 10方式同RAID 0+1方式一樣具有良好的數(shù)據(jù)傳輸性能,但卻比RAID 0+1具有更高的可靠性。RAID 10陣列的實(shí)踐容量為Mn/2,磁盤利用率為50。RAID 10也需求至少4個(gè)硬盤驅(qū)動(dòng)器構(gòu)成,因此價(jià)錢昂貴。 RAID 10的可靠性同RAID 1一樣,但由于RAID 10硬盤驅(qū)動(dòng)器之間有數(shù)據(jù)分割,因此數(shù)據(jù)傳輸性能優(yōu)良。 RAID 5與RAID 3很類似,不同之處在于RAID 5的奇偶校驗(yàn)信息也同數(shù)據(jù)一樣被分割保管到一切的硬盤驅(qū)動(dòng)器,而不是寫入一個(gè)指定的硬

46、盤驅(qū)動(dòng)器,從而消除了單個(gè)奇偶校驗(yàn)硬盤驅(qū)動(dòng)器的瓶頸問題。RAID 5磁盤陣列的性能比RAID 3有所提高,但依然需求至少3塊硬盤驅(qū)動(dòng)器。其實(shí)踐容量為M(n-1),磁盤利用率為(n-1)/n 。 五:綜合隨意類1:他最擅長的是oracle哪部分?pl/sql及sql優(yōu)化2:喜歡oracle嗎?喜歡上論壇嗎?或者偏好oracle的哪一部分?喜歡,sql的優(yōu)化3:隨意說說他覺得oracle最有意思的部分或者最困難的部分latch free的處置4:為何要選擇做DBA呢?興趣所在耗費(fèi)在預(yù)備利用Oracle執(zhí)行方案機(jī)制提高查詢性能新的SQL語句的時(shí)間是Oracle SQL語句執(zhí)行時(shí)間的最重要的組成部分。但

47、是經(jīng)過了解Oracle內(nèi)部產(chǎn)生執(zhí)行方案的機(jī)制,他可以控制Oracle破費(fèi)在評(píng)價(jià)銜接順序的時(shí)間數(shù)量,并且能在大體上提高查詢性能。 預(yù)備執(zhí)行SQL語句 當(dāng)SQL語句進(jìn)入Oracle的庫緩存后,在該語句預(yù)備執(zhí)行之前,將執(zhí)行以下步驟: 1) 語法檢查:檢查SQL語句拼寫能否正確和詞序。 2) 語義分析:核實(shí)一切的與數(shù)據(jù)字典不一致的表和列的名字。 3) 輪廓存儲(chǔ)檢查:檢查數(shù)據(jù)字典,以確定該SQL語句的輪廓能否曾經(jīng)存在。 4) 生成執(zhí)行方案:運(yùn)用基于本錢的優(yōu)化規(guī)那么和數(shù)據(jù)字典中的統(tǒng)計(jì)表來決議最正確執(zhí)行方案。 5) 建立二進(jìn)制代碼:基于執(zhí)行方案,Oracle生成二進(jìn)制執(zhí)行代碼。 一旦為執(zhí)行預(yù)備好了SQL語句

48、,以后的執(zhí)行將很快發(fā)生,由于Oracle認(rèn)可同一個(gè)SQL語句,并且重用那些語句的執(zhí)行。然而,對(duì)于生成特殊的SQL語句,或嵌入了文字變量的SQL語句的系統(tǒng),SQL執(zhí)行方案的生成時(shí)間就很重要了,并且前一個(gè)執(zhí)行方案通常不可以被重用。對(duì)那些銜接了很多表的查詢,Oracle需求破費(fèi)大量的時(shí)間來檢測銜接這些表的適當(dāng)順序。 評(píng)價(jià)表的銜接順序 在SQL語句的預(yù)備過程中,破費(fèi)最多的步驟是生成執(zhí)行方案,特別是處置有多個(gè)表銜接的查詢。當(dāng)Oracle評(píng)價(jià)表的銜接順序時(shí),它必需思索到表之間一切能夠的銜接。例如:六個(gè)表的之間銜接有7206的階乘,或6 * 5 * 4 * 3 * 2 * 1 = 720種能夠的銜接線路。當(dāng)

49、一個(gè)查詢中含有超越10個(gè)表的銜接時(shí),陳列的問題將變得更為顯著。對(duì)于15個(gè)表之間的銜接,需求評(píng)價(jià)的能夠查詢陳列將超越1萬億準(zhǔn)確的數(shù)字是1,307,674,368,000種。 運(yùn)用optimizer_search_limit參數(shù)來設(shè)定限制 經(jīng)過運(yùn)用optimizer_search_limit參數(shù),他可以指定被優(yōu)化器用來評(píng)價(jià)的最大的銜接組合數(shù)量。運(yùn)用這個(gè)參數(shù),我們將可以防止優(yōu)化器耗費(fèi)不定數(shù)量的時(shí)間來評(píng)價(jià)一切能夠的銜接組合。假設(shè)在查詢中表的數(shù)目小于optimizer_search_limit的值,優(yōu)化器將檢查一切能夠的銜接組合。 例如:有五個(gè)表銜接的查詢將有1205! = 5 * 4 * 3 * 2

50、* 1 = 120種能夠的銜接組合,因此假設(shè)optimizer_search_limit等于5默許值,那么優(yōu)化器將評(píng)價(jià)一切的120種能夠。optimizer_search_limit參數(shù)也控制著調(diào)用帶星號(hào)的銜接提示的閥值。當(dāng)查詢中的表的數(shù)目比optimizer_search_limit小時(shí),帶星號(hào)的提示將被優(yōu)先思索。 另一個(gè)工具:參數(shù)optimizer_max_permutations 初始化參數(shù)optimizer_max_permutations定義了優(yōu)化器所思索組合數(shù)目的上限,且依賴于初始參數(shù)optimizer_search_limit。optimizer_max_permutations

51、的默許值是80,000。 參數(shù)optimizer_search_limit和optimizer_max_permutations一同來確定優(yōu)化器所思索的組合數(shù)目的上限:除非表或組合數(shù)目超越參數(shù)optimizer_search_limit 或者 optimizer_max_permutations設(shè)定的值,否那么優(yōu)化器將生成一切能夠的銜接組合。一旦優(yōu)化器停頓評(píng)價(jià)表的銜接組合,它將選擇本錢最低的組合。 運(yùn)用ordered提示指定銜接順序 他可以設(shè)定優(yōu)化器所執(zhí)行的評(píng)價(jià)數(shù)目的上限。但是即使采用有很高價(jià)值的陳列評(píng)價(jià),我們依然擁有使優(yōu)化器可以盡早地放棄復(fù)雜的查詢的重要時(shí)機(jī)?;叵胍幌潞?5個(gè)銜接查詢的例子

52、,它將有超越1萬億種的銜接組合。假設(shè)優(yōu)化器在評(píng)價(jià)了80,000個(gè)組合后停頓,那么它才僅僅評(píng)價(jià)了0.000006%的能夠組合,而且或許還沒有為這個(gè)宏大的查詢找到最正確的銜接順序。 在Oracle SQL中處理此問題的最好的方法是手工指定表的銜接順序。為了盡快創(chuàng)建最小的處理方案集,這里所遵照的規(guī)那么是將表結(jié)合起來,通常優(yōu)先運(yùn)用限制最嚴(yán)厲的WHERE子句來銜接表。 下面的代碼是一個(gè)查詢執(zhí)行方案的例子,該例子在emp表的關(guān)聯(lián)查詢上強(qiáng)迫執(zhí)行了嵌套的循環(huán)銜接。留意,我曾經(jīng)運(yùn)用了ordered提示來直接最優(yōu)化表的評(píng)價(jià)順序,最終它們表如今WHERE子句上。 select /*+ ordered use_nl(

53、bonus) parallel(e, 4) */ e.ename,hiredate,bm.from emp e, bonus bwheree.ename = b.ename這個(gè)例子要求優(yōu)化器按順序銜接在SQL語句的FROM子句中指定的表,在FROM子句中的第一個(gè)表指定了驅(qū)動(dòng)表。ordered提示通常被用來與其它的提示結(jié)合起來來保證采用正確的順序銜接多個(gè)表。它的用途更多的是在改動(dòng)銜接表數(shù)在四個(gè)以上的數(shù)據(jù)倉庫的查詢方面。 另外一個(gè)例子,下面的查詢運(yùn)用ordered提示按照指定的順序來銜接表:emp、dept、sal,最后是bonus。我經(jīng)過指定emp到dept運(yùn)用哈希銜接和sal到bonus運(yùn)用嵌

54、套循環(huán)銜接,來進(jìn)一步精煉執(zhí)行方案。 select /*+ ordered use_hash (emp, dept) use_nl (sal, bonus) */fromemp, dept, sal, bonuswhere . . . 實(shí)際建議 實(shí)踐上,更有效率的做法是在產(chǎn)品環(huán)境中減小optimizer_max_permutations參數(shù)的大小,并且總是運(yùn)用穩(wěn)定的優(yōu)化方案或存儲(chǔ)輪廓來防止出現(xiàn)耗時(shí)的含有大量銜接的查詢。一旦找到最正確的銜接順序,您就可以經(jīng)過添加ordered提示到當(dāng)前的查詢中,并保管它的存儲(chǔ)輪廓,來為這些表手工指定銜接順序,從而使其耐久化。 當(dāng)他計(jì)劃運(yùn)用優(yōu)化器來穩(wěn)定方案,那么可以

55、照下面的方法使執(zhí)行方案耐久化,暫時(shí)將optimizer_search_limit設(shè)置為查詢中的表的數(shù)目,從而允許優(yōu)化器思索一切能夠的銜接順序。然后,經(jīng)過重新編排WHERE子句中表的名字,并運(yùn)用ordered提示,與存儲(chǔ)輪廓一同使變卦耐久化,來調(diào)整查詢。在查詢中包含四個(gè)以上的表時(shí),ordered提示和存儲(chǔ)輪廓將排除耗時(shí)的評(píng)價(jià)SQL銜接順序解析的義務(wù),從而提高查詢的速度。 一旦檢測到最正確的銜接順序,我們就可以運(yùn)用ordered提示來重載optimizer_search_limit和optimizer_max_permutations參數(shù)。ordered提示要求表按照它們出如今FROM子句中的順序

56、進(jìn)展銜接,所以優(yōu)化器沒有參與描畫。 作為一個(gè)Oracle專業(yè)人員,他應(yīng)該知道在SQL語句第一次進(jìn)入庫緩存時(shí)能夠存在艱苦的啟動(dòng)延遲。但是聰明的Oracle DBA和開發(fā)人員可以改動(dòng)表的搜索限制參數(shù)或者運(yùn)用ordered提示來手工指定表的銜接順序,從而顯著地減少優(yōu)化和執(zhí)行新查詢所需的時(shí)間Oracle專家調(diào)優(yōu)在過去的十年中, Oracle 曾經(jīng)成為世界上最專業(yè)的數(shù)據(jù)庫之一。對(duì)于 IT 專家來說,就是要確保利用 Oracle 的強(qiáng)大特性來提高他們公司的消費(fèi)力。最有效的方法之一是經(jīng)過 Oracle 調(diào)優(yōu)。它有大量的調(diào)整參數(shù)和技術(shù)來改良他的 Oracle 數(shù)據(jù)庫的性能。 Oracle 調(diào)優(yōu)是一個(gè)復(fù)雜的主題

57、。關(guān)于調(diào)優(yōu)可以寫整整一本書,不過,為了改善 Oracle 數(shù)據(jù)庫的性能,有一些根本的概念是每個(gè) Oracle DBA 都應(yīng)該服從的。 在這篇簡介中,我們將簡要地引見以下的 Oracle 主題: - 外部調(diào)整:我們應(yīng)該記住 Oracle 并不是單獨(dú)運(yùn)轉(zhuǎn)的。因此我們將查看一下經(jīng)過調(diào)整 Oracle 效力器以得到高的性能。 -Row re-sequencing 以減少磁盤 I/O :我們應(yīng)該懂得 Oracle 調(diào)優(yōu)最重要的目的是減少 I/O 。 -Oracle SQL 調(diào)整。 Oracle SQL 調(diào)整是 Oracle 調(diào)整中最重要的領(lǐng)域之一,只需經(jīng)過一些簡單的 SQL 調(diào)優(yōu)規(guī)那么就可以大幅度地提升

58、 SQL 語句的性能,這是一點(diǎn)都不奇異的。 - 調(diào)整 Oracle 排序:排序?qū)τ?Oracle 性能也是有很大影響的。 - 調(diào)整 Oracle 的競爭:表和索引的參數(shù)設(shè)置對(duì)于 UPDATE 和 INSERT 的性能有很大的影響。 我們首先從調(diào)整 Oracle 外部的環(huán)境開場。假設(shè)內(nèi)存和 CPU 的資源缺乏的話,任何的 Oracle 調(diào)整都是沒有協(xié)助 的。 外部的性能問題 Oracle 并不是單獨(dú)運(yùn)轉(zhuǎn)的。 Oracle 數(shù)據(jù)庫的性能和外部的環(huán)境有很大的關(guān)系。這些外部的條件包括有: CPU-CPU 資源的缺乏令查詢變慢。當(dāng)查詢超越了 Oracle 效力器的 CPU 性能時(shí),他的數(shù)據(jù)庫性能就遭到

59、CPU 的限制。 內(nèi)存 - 可用于 Oralce 的內(nèi)存數(shù)量也會(huì)影響 SQL 的性能,特別是在數(shù)據(jù)緩沖和內(nèi)存排序方面。 網(wǎng)絡(luò) - 大量的 Net8 通訊令 SQL 的性能變慢。 許多新手都錯(cuò)誤的以為應(yīng)該首先調(diào)整 Oracle 數(shù)據(jù)庫,而不是先確認(rèn)外部資源能否足夠。實(shí)踐上,假設(shè)外部環(huán)境出現(xiàn)瓶頸,再多的 Oracle 調(diào)整都是沒有協(xié)助 的。 在檢查 Oracle 的外部環(huán)境時(shí),有兩個(gè)方面是需求留意的: 1 、當(dāng)運(yùn)轉(zhuǎn)隊(duì)列的數(shù)目超越效力器的 CPU 數(shù)量時(shí),效力器的性能就會(huì)遭到 CPU 的限制。補(bǔ)救的方法是為效力器添加額外的 CPU 或者封鎖需求很多處置資源的組件,例如 Oracle Parallel Query 。 2 、內(nèi)存分頁。當(dāng)內(nèi)存分頁時(shí),內(nèi)存容量曾經(jīng)缺乏,而內(nèi)存頁是與磁盤上的交換區(qū)進(jìn)展交互的。補(bǔ)救的方法是添加更多的內(nèi)存,減少 Oracle SGA 的大小,或者封鎖 Oracle 的多線程效力器。 可以運(yùn)用各種規(guī)范的效力器工具來得到效力器的統(tǒng)計(jì)數(shù)據(jù),例如 vmstat,glance,top 和 sar 。 DBA 的目的是確保數(shù)據(jù)庫效力器擁有足夠的 CPU 和內(nèi)存資源來處置Oracle 的懇求。 以下讓我們來看一下 Oracle 的 row-resequencing 是如何可以極大地減少磁盤 I/O 的。 Row-resequencing 行的重新排序 就象我們上面提到的,有閱

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論