版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、傳播優(yōu)秀Word版文檔 ,希望對(duì)您有幫助,可雙擊去除!OLAP and OLTPOLTP (在線(xiàn)事務(wù)處理系統(tǒng))OLAP (在線(xiàn)分析系統(tǒng))對(duì)于一個(gè)olap系統(tǒng),大型的查詢(xún)每天做幾次,沒(méi)有必要將大量的數(shù)據(jù)緩存到內(nèi)存里,完全沒(méi)有必要,所以一般buffer hit都比較低對(duì)于一個(gè)olap系統(tǒng),內(nèi)存優(yōu)化余地不大,增加cpu速度和磁盤(pán)io速度才是最直接的提高性能的方式。oltp系統(tǒng)的用戶(hù)并發(fā)數(shù)很多,而且多是小的操作,數(shù)據(jù)庫(kù)側(cè)重于對(duì)用戶(hù)操作的快速響應(yīng),這是對(duì)數(shù)據(jù)庫(kù)最重要的性能要求。對(duì)于一個(gè)oltp系統(tǒng)來(lái)說(shuō),數(shù)據(jù)庫(kù)內(nèi)存設(shè)計(jì)顯得很重要,如果數(shù)據(jù)都可以在內(nèi)存處理,性能無(wú)疑會(huì)提高很多。oltp系統(tǒng)是一個(gè)數(shù)據(jù)塊變化非
2、常頻繁,sql語(yǔ)句提交非常頻繁的系統(tǒng)。對(duì)于數(shù)據(jù)塊來(lái)說(shuō),應(yīng)盡可能讓數(shù)據(jù)塊保存在內(nèi)存中;對(duì)于sql來(lái)說(shuō),應(yīng)盡可能使用綁定變量來(lái)達(dá)到sql的重用,減少物理io和反復(fù)的sql解析。oltp熱快問(wèn)題:當(dāng)一個(gè)塊被多個(gè)用戶(hù)同時(shí)讀取的時(shí)候,oracle為了維護(hù)數(shù)據(jù)的一致性,需要使用一種稱(chēng)為latch的東西來(lái)串行化用戶(hù)的操作。當(dāng)一個(gè)用戶(hù)獲得了這個(gè)latch之后,其他的用戶(hù)只能被迫等待,獲取這個(gè)數(shù)據(jù)塊的用戶(hù)越多,等待就越明顯,這就造成了熱快問(wèn)題。這種熱快可能是數(shù)據(jù)塊也可能是回滾段塊。對(duì)于數(shù)據(jù)塊來(lái)講通常是數(shù)據(jù)塊上的數(shù)據(jù)分布不均導(dǎo)致,如果是索引的數(shù)據(jù)塊,可以考慮建反向索引來(lái)達(dá)到重新分布數(shù)據(jù)的目的;對(duì)于回滾段數(shù)據(jù)塊,可
3、以適當(dāng)增加幾個(gè)回滾段來(lái)避免爭(zhēng)用。SGA系統(tǒng)全局區(qū),是oracle用來(lái)為實(shí)例存儲(chǔ)數(shù)據(jù)和控制信息的共享內(nèi)存區(qū)。在實(shí)例啟動(dòng)時(shí)分配,關(guān)閉時(shí)釋放。數(shù)據(jù)庫(kù)緩沖區(qū)高速緩存(buffer cache):保存了最近使用過(guò)的數(shù)據(jù)塊。最近最多使用算法(most-recently-used)共享池:存儲(chǔ)共享內(nèi)存結(jié)構(gòu)的區(qū)域。如library cache中的sql區(qū),以及數(shù)據(jù)字典的內(nèi)部信息library cache:SQL 和PL SQL 的文本,執(zhí)行計(jì)劃,編譯數(shù)data dictionary cache:oracle數(shù)據(jù)字典包含一組表和視圖,oracle將他們作為數(shù)據(jù)庫(kù)的引用,在其中存儲(chǔ)了與數(shù)據(jù)庫(kù)的邏輯和物理結(jié)構(gòu)相關(guān)的
4、信息用戶(hù)信息;如權(quán)限等為數(shù)據(jù)庫(kù)表定義的完整性約束數(shù)據(jù)庫(kù)表中所有列的名稱(chēng)以及數(shù)據(jù)類(lèi)型為模式對(duì)象分配空間及其使用情況的信息PGA包含oracle服務(wù)器進(jìn)程的數(shù)據(jù)和控制信息的內(nèi)存區(qū)域堆棧區(qū): 存儲(chǔ)會(huì)話(huà)的變量、數(shù)組等的內(nèi)存空間(堆棧區(qū)保存變量信息)會(huì)話(huà)區(qū):如果不是MTS服務(wù)器,會(huì)話(huà)信息會(huì)保持在PGA中,如過(guò)是MTS服務(wù)器,會(huì)話(huà)信息保持在SGA中(會(huì)話(huà)區(qū)保存著用戶(hù)的權(quán)限等重要信息)排序區(qū):游標(biāo)區(qū):當(dāng)運(yùn)行使用游標(biāo)的語(yǔ)句時(shí),Oracle數(shù)據(jù)庫(kù)系統(tǒng)會(huì)在程序緩存區(qū)中間為其分配一塊區(qū)域。這塊區(qū)域就叫做游標(biāo)區(qū)。一般來(lái)說(shuō),采用游標(biāo)的語(yǔ)句要比其他語(yǔ)句的執(zhí)行效率低一點(diǎn)。游標(biāo)區(qū)是一個(gè)動(dòng)態(tài)的區(qū)域,在游標(biāo)打開(kāi)時(shí)創(chuàng)建,關(guān)閉時(shí)釋放
5、。故在數(shù)據(jù)庫(kù)開(kāi)發(fā)時(shí),不要頻繁的打開(kāi)和關(guān)閉游標(biāo)可以提高游標(biāo)操作的效率,改善數(shù)據(jù)庫(kù)的性能。例如,當(dāng)一個(gè)用戶(hù)連接數(shù)據(jù)庫(kù)并調(diào)用SQL語(yǔ)句時(shí),這條SQL語(yǔ)句對(duì)應(yīng)的游標(biāo)就將在PGA中創(chuàng)建一個(gè)運(yùn)行時(shí)區(qū)域,注意,這個(gè)區(qū)域是私有的,只針對(duì)調(diào)用SQL的這個(gè)用戶(hù)進(jìn)程。PGA就是所有服務(wù)器進(jìn)程的邏輯集合。因此PGA和SGA有著質(zhì)的不同。SGA用于在進(jìn)程間共享信息,PGA則用于信息私有化。PGA的大小直接影響了性能,尤其針對(duì)會(huì)導(dǎo)致排序的SQL查詢(xún)。以下幾種情況需要提供足夠的PGA:導(dǎo)致排序的操作如 ORDER BY、GROUP BY、 ROLLUP等操作哈希連接位圖合并位圖創(chuàng)建批量數(shù)據(jù)裝載兩個(gè)PGA建議性能視圖:V$P
6、GA_TARGET_ADVICE和V$PGA_TARGET_ADVICE_HISTOGRAM當(dāng)用戶(hù)需要對(duì)某些數(shù)據(jù)進(jìn)行排序時(shí),數(shù)據(jù)庫(kù)是如何處理的呢?首先,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)將需要排序的數(shù)據(jù)保存到PGA程序緩存區(qū)中的一個(gè)排序區(qū)內(nèi)。然后再在這個(gè)排序區(qū)內(nèi)對(duì)這些數(shù)據(jù)進(jìn)行排序。如需要排序的數(shù)據(jù)有2M,那么排序區(qū)內(nèi)必須至少要有2M的空間來(lái)容納這些數(shù)據(jù)。然后排序過(guò)程中又需要有2M的空間來(lái)保存排序后的數(shù)據(jù)。由于系統(tǒng)從內(nèi)存中讀取數(shù)據(jù)比從硬盤(pán)中讀取數(shù)據(jù)的速度要快幾千倍,如果這個(gè)排序的操作都能夠在內(nèi)存中完成,顯然這是很理想的。設(shè)置合理的PGA_aggregate_target的值來(lái)調(diào)整排序區(qū)的大小檢查點(diǎn)為什么要用檢查點(diǎn)?(
7、因?yàn)樗袑?duì)數(shù)據(jù)的修改都是在塊緩沖區(qū)內(nèi)完成的,所以并非所有的修改都會(huì)反映到磁盤(pán)的數(shù)據(jù)塊上。而緩存又是按照LRU算法實(shí)現(xiàn)的,如果某個(gè)緩沖區(qū)一直被修改,那么他將一直被標(biāo)記為最近使用,處于LRU列表的頂端,不會(huì)被DBWR寫(xiě)回磁盤(pán)。)檢查點(diǎn)進(jìn)程確保臟數(shù)據(jù)能夠最終被寫(xiě)回磁盤(pán)。oralce使用ckpt或者lgwr進(jìn)程來(lái)引發(fā)檢查點(diǎn)。檢查點(diǎn)通過(guò)定期將臟緩沖強(qiáng)制寫(xiě)回的手段來(lái)確保這些緩沖區(qū)被寫(xiě)回磁盤(pán)。但是并不是說(shuō)檢查點(diǎn)期間其他工作都要停止。日志切換的時(shí)候會(huì)自動(dòng)觸發(fā)檢查點(diǎn)。經(jīng)常執(zhí)行檢查點(diǎn)可以減少系統(tǒng)故障恢復(fù)時(shí)間。兩種檢查點(diǎn)運(yùn)行方式:快速檢查點(diǎn)、標(biāo)準(zhǔn)檢查點(diǎn)標(biāo)準(zhǔn)檢查點(diǎn):DBWR進(jìn)程只是在每次激活的時(shí)候?qū)懟厣倭康木彌_區(qū),執(zhí)
8、行時(shí)間稍長(zhǎng),但是對(duì)系統(tǒng)影響小??焖贆z查點(diǎn):DBWR進(jìn)程每次激活時(shí)寫(xiě)回大量的緩沖區(qū),系統(tǒng)運(yùn)行更快,IO效率高,但是對(duì)系統(tǒng)的性能影響較大。MTTRFAST_START_MTTR_TARGET中的mttr就是mean time to recovery,定義數(shù)據(jù)庫(kù)進(jìn)行crash恢復(fù)的時(shí)間,單位為秒。FAST_START_MTTR_TARGET=0啟用自動(dòng)調(diào)整的檢查點(diǎn)它不直接影響checkpoint事件,而是當(dāng)內(nèi)存中臟數(shù)據(jù)需要恢復(fù)時(shí)間estimated_mttr達(dá)到fast_start_mttr_target時(shí),才觸發(fā)checkpoint。如何定義FAST_START_MTTR_TARGET參數(shù)值可查看
9、V$mttr_target_advice試圖的建議。TTR 顧問(wèn)工具能夠統(tǒng)計(jì) MTTR 造成的額外的物理寫(xiě)入操作,從而協(xié)助用戶(hù)評(píng)估不同 MTTR 設(shè)置對(duì)系統(tǒng)性能的影響。MTTR 顧問(wèn)工具啟用,且系統(tǒng)在正常負(fù)載下運(yùn)行一段時(shí)間后,用戶(hù)可以查詢(xún) V$MTTR_TARGET_ADVICE 視圖,獲得其他 MTTR 設(shè)置與當(dāng)前 MTTR 設(shè)置下數(shù)據(jù)庫(kù)緩存寫(xiě)入操作的比率后臺(tái)進(jìn)程DBWR負(fù)責(zé)將臟數(shù)據(jù)塊從數(shù)據(jù)塊緩存(database block buffer)寫(xiě)入磁盤(pán)。當(dāng)一個(gè)事務(wù)修改數(shù)據(jù)塊中的數(shù)據(jù)后,不需要將數(shù)據(jù)塊立即寫(xiě)回磁盤(pán)。DBWR通常定時(shí)寫(xiě)回?cái)?shù)據(jù),除非數(shù)據(jù)緩沖區(qū)需要清空。數(shù)據(jù)寫(xiě)回時(shí),采用最近最少使用(l
10、east-recently-used)的原則DBWR觸發(fā):出現(xiàn)檢查點(diǎn)臟數(shù)據(jù)緩沖區(qū)達(dá)到閥值沒(méi)有空閑緩沖區(qū)表空間offline狀態(tài)表空間read only狀態(tài)對(duì)表空間執(zhí)行begin backup對(duì)表執(zhí)行drop或者truncate出現(xiàn)超時(shí)執(zhí)行RAC ping請(qǐng)求后臺(tái)進(jìn)程LGWR負(fù)責(zé)將日志緩沖區(qū)中的數(shù)據(jù)寫(xiě)入到redo log。LGWR觸發(fā):commit1/3滿(mǎn)有1MB的redo每3秒DBWR寫(xiě)之前后臺(tái)進(jìn)程PMON負(fù)責(zé)監(jiān)視數(shù)據(jù)塊的處理情況,并負(fù)責(zé)清除死掉的進(jìn)程。還負(fù)責(zé)重啟失敗的調(diào)度進(jìn)程(dispatcher process)回退事務(wù)處理釋放鎖和其他資源后臺(tái)進(jìn)程SMON負(fù)責(zé)在實(shí)例啟動(dòng)時(shí)恢復(fù)實(shí)例、前滾日志
11、中的修改回退未提交的事務(wù)回收臨時(shí)空間還可以清除數(shù)據(jù)塊中的碎片(通過(guò)合并空閑區(qū)間的方式)打開(kāi)數(shù)據(jù)庫(kù)供用戶(hù)訪(fǎng)問(wèn)后臺(tái)進(jìn)程ckpt負(fù)責(zé)向DBWR進(jìn)程發(fā)送信號(hào),要求執(zhí)行一次檢查點(diǎn),并更新數(shù)據(jù)塊的所有數(shù)據(jù)文件的標(biāo)頭和控制文件。檢查點(diǎn):是由DBWR進(jìn)程將所有修改過(guò)的數(shù)據(jù)緩沖區(qū)寫(xiě)回?cái)?shù)據(jù)文件,是可選的進(jìn)程,如果沒(méi)有,則由LGWR代替后臺(tái)進(jìn)程ARCHn負(fù)責(zé)將在線(xiàn)重做日志復(fù)制到歸檔存儲(chǔ)器。系統(tǒng)必須是歸檔模式,進(jìn)程最多10個(gè)表連接- NESTED LOOP對(duì)于被連接的數(shù)據(jù)子集較小的情況,嵌套循環(huán)連接是個(gè)較好的選擇。在嵌套循環(huán)中,內(nèi)表被外表驅(qū)動(dòng),外表返回的每一行都要在內(nèi)表中檢索找到與它匹配的行,因此整個(gè)查詢(xún)返回的結(jié)果集
12、不能太大(大于1 萬(wàn)不適合)要把返回子集較小表的作為外表(CBO 默認(rèn)外表是驅(qū)動(dòng)表),而且在內(nèi)表的連接字段上一定要有索引。Nested loop一般用在連接的表中有索引,并且索引選擇性較好的時(shí)候.USE_NL(table_name1 table_name2)表連接- HASH JOIN散列連接是CBO 做大數(shù)據(jù)集連接時(shí)的常用方式優(yōu)化器使用兩個(gè)表中較小的表(或數(shù)據(jù)源)利用連接鍵在內(nèi)存中建立散列表,然后掃描較大的表并探測(cè)散列表,找出與散列表匹配的行。這種方式適用于較小的表完全可以放于內(nèi)存中的情況,這樣總成本就是訪(fǎng)問(wèn)兩個(gè)表的成本之和。但是在表很大的情況下并不能完全放入內(nèi)存,這時(shí)優(yōu)化器會(huì)將它分割成若干
13、不同的分區(qū),不能放入內(nèi)存的部分就把該分區(qū)寫(xiě)入磁盤(pán)的臨時(shí)段,此時(shí)要有較大的臨時(shí)段從而盡量提高I/O 的性能。USE_HASH(table_name1 table_name2)表連接- SORT MERGE JOIN通常情況下散列連接的效果都比排序合并連接要好,然而如果行源已經(jīng)被排過(guò)序,在執(zhí)行排序合并連接時(shí)不需要再排序了,這時(shí)排序合并連接的性能會(huì)優(yōu)于散列連接。Sort Merge join 用在沒(méi)有索引,并且數(shù)據(jù)已經(jīng)排序的情況.USE_MERGE(table_name1 table_name2)表連接工作方式區(qū)別三種連接工作方式比較:Nested loops 工作方式是從一張表中讀取數(shù)據(jù),訪(fǎng)問(wèn)另一
14、張表(通常是索引)來(lái)做匹配,nested loops適用的場(chǎng)合是當(dāng)一個(gè)關(guān)聯(lián)表比較小的時(shí)候,效率會(huì)更高。Hash join的工作方式是將一個(gè)表(通常是小一點(diǎn)的那個(gè)表)做hash運(yùn)算,將列數(shù)據(jù)存儲(chǔ)到hash列表中,從另一個(gè)表中抽取記錄,做hash運(yùn)算,到hash 列表中找到相應(yīng)的值,做匹配。Merge Join 是先將關(guān)聯(lián)表的關(guān)聯(lián)列各自做排序,然后從各自的排序表中抽取數(shù)據(jù),到另一個(gè)排序表中做匹配,因?yàn)閙erge join需要做更多的排序,所以消耗的資源更多。 通常來(lái)講,能夠使用merge join的地方,hash join都可以發(fā)揮更好的性能。CR Block(consistent read) b
15、locks 就是讀一致性塊ORACLE在三種條件下需要構(gòu)造CR塊1)查詢(xún)時(shí)刻的SCN大于數(shù)據(jù)塊的COMMIT SCN,即SQL 游標(biāo)被打開(kāi)時(shí)的SCN大于數(shù)據(jù)庫(kù)上記錄的SCN。2)數(shù)據(jù)塊上存在LOCK3)閃回查詢(xún)。RDBA(Tablespace relative database block address)RDBA是相對(duì)數(shù)據(jù)塊地址,是數(shù)據(jù)字典(表空間及一些對(duì)象定義)所在塊的地址。當(dāng)我們想要查找某個(gè)數(shù)據(jù)的時(shí)候,發(fā)現(xiàn)這個(gè)數(shù)據(jù)塊的版本比我們要查找的要新,那么我們只能從UNDO中去查找這個(gè)數(shù)據(jù)的前映像(PRE IMAGE),在回滾段中找到這個(gè)數(shù)據(jù)的前映像后,把前映像和CURRENT的數(shù)據(jù)塊合并,就形成
16、一個(gè)CR BLOCK,這樣,通過(guò)查詢(xún)CR BLOCK就可以得到一致性的數(shù)據(jù)了。這個(gè)CR BLOCK的生成不是在PGA里進(jìn)行的,而是要在DB CACHE里申請(qǐng)一個(gè)數(shù)據(jù)塊,然后生成CR BLOCK。這個(gè)CR BLOCK創(chuàng)建后,如果下一回還要訪(fǎng)問(wèn)這個(gè)版本的數(shù)據(jù)塊,那么就不需要?jiǎng)?chuàng)建新的CR BLOCK,而直接可以使用以前創(chuàng)建的CR BLOCK了。每創(chuàng)建一個(gè)CR BLOCK,CR BLOCKS CREATED計(jì)數(shù)器就會(huì)增加1。由于CR BLOCK和CURRENT BLOCK的RDBA都是相同的,因此它們會(huì)被放到相同的HASH鏈上。因此如果某些BLOCK的CR BLOCK的版本過(guò)多,也會(huì)導(dǎo)致BUFFER
17、CACHE CHAINS閂鎖競(jìng)爭(zhēng)加劇。如果在生成CR BLOCK的過(guò)程中,發(fā)現(xiàn)UNDO中的PRE IMAGE由于提交的時(shí)間比較長(zhǎng),已經(jīng)被覆蓋,那么,就會(huì)出現(xiàn)著名的ORA-1555。如果單位時(shí)間內(nèi)CR BLOCKS CREATED較大,那么應(yīng)該檢查系統(tǒng)的CPU資源是否出現(xiàn)瓶頸,另外要注意檢查BUFFER CACHE相關(guān)的閂鎖,是否存在競(jìng)爭(zhēng)。索引oracle的標(biāo)準(zhǔn)索引結(jié)構(gòu)是Btree結(jié)構(gòu),一個(gè)Btree結(jié)構(gòu)由三種block組成根塊(root block):在Btree里有且只有一個(gè)block,所有訪(fǎng)問(wèn)索引都從這開(kāi)始,root block下有很多child blocks。分支塊(Branch blo
18、cks):這是中間層,branch block是沒(méi)有什么限制的,它是隨著leaf block的增加而增加的,branch block一般是4層,如果多于4層,就影響性能了。在我們刪除行時(shí),branch block是不被刪除的。葉塊(leaf block):葉塊是最底層,上面存儲(chǔ)著索引條目和rowid索引和表數(shù)據(jù)是級(jí)聯(lián)關(guān)系的,當(dāng)刪除表數(shù)據(jù)的時(shí)候,索引條目也會(huì)被自動(dòng)刪除,這樣在index leaf block就會(huì)產(chǎn)生碎片,這也就是在OLTP系統(tǒng)上有大量更新的表上不建議創(chuàng)建大量的索引,很影響性能有的人說(shuō)刪除過(guò)的索引條目空間不會(huì)被再用,因?yàn)樵趹?yīng)用中不會(huì)再有insert相同的數(shù)據(jù)。其實(shí)這個(gè)說(shuō)法不完全對(duì)的
19、,除了半空葉塊外,其他的刪除的索引空間是可被再利用的。索引建立的原則1、表的主鍵、外鍵必須有索引;2、數(shù)據(jù)量超過(guò)300的表應(yīng)該有索引;3、經(jīng)常與其他表進(jìn)行連接的表,在連接字段上應(yīng)該建立索引;4、經(jīng)常出現(xiàn)在Where子句中的字段,特別是大表的字段,應(yīng)該建立索引;5、索引應(yīng)該建在選擇性高的字段上;6、索引應(yīng)該建在小字段上,對(duì)于大的文本字段甚至超長(zhǎng)字段,不要建索引;7、復(fù)合索引的建立需要進(jìn)行仔細(xì)分析;盡量考慮用單字段索引代替:A、正確選擇復(fù)合索引中的主列字段,一般是選擇性較好的字段;B、復(fù)合索引的幾個(gè)字段是否經(jīng)常同時(shí)以AND方式出現(xiàn)在Where子句中?單字段查詢(xún)是否極少甚至沒(méi)有?如果是,則可以建立復(fù)
20、合索引;否則考慮單字段索引;C、如果復(fù)合索引中包含的字段經(jīng)常單獨(dú)出現(xiàn)在Where子句中,則分解為多個(gè)單字段索引;D、如果復(fù)合索引所包含的字段超過(guò)3個(gè),那么仔細(xì)考慮其必要性,考慮減少?gòu)?fù)合的字段;E、如果既有單字段索引,又有這幾個(gè)字段上的復(fù)合索引,一般可以刪除復(fù)合索引;8、頻繁進(jìn)行數(shù)據(jù)操作的表,不要建立太多的索引;9、刪除無(wú)用的索引,避免對(duì)執(zhí)行計(jì)劃造成負(fù)面影響;索引的集群因子就是通過(guò)一個(gè)索引訪(fǎng)問(wèn)一個(gè)表需要掃描多少個(gè)數(shù)據(jù)塊。計(jì)算方法:1、掃描一個(gè)索引2、比較某行的rowid和前一行的rowid,如果這兩個(gè)rowid不屬于同一個(gè)數(shù)據(jù)塊,那么集群因子+13、整個(gè)索引掃描結(jié)束就得到集群因子數(shù)它反映的是索引
21、掃描可能會(huì)帶來(lái)的I/O開(kāi)銷(xiāo)情況。如果集群因子接近表存儲(chǔ)的塊數(shù),說(shuō)明這張表是按照索引的順序存儲(chǔ)的。如果集群因子接近行的數(shù)量,那么說(shuō)明這張表不是按照索引字段順序存儲(chǔ)的。在計(jì)算索引訪(fǎng)問(wèn)成本時(shí),集群因子乘以選擇性參數(shù)就是訪(fǎng)問(wèn)的開(kāi)銷(xiāo)如果這個(gè)統(tǒng)計(jì)數(shù)據(jù)不能反映出索引的真實(shí)情況,那么可能會(huì)造成優(yōu)化器錯(cuò)誤的選擇執(zhí)行計(jì)劃。另外如果某張表上的大多數(shù)訪(fǎng)問(wèn)是按照某個(gè)索引做索引掃描,那么將該表的數(shù)據(jù)按照索引的字段重新組織,可以提高表的訪(fǎng)問(wèn)性能死鎖死鎖處理是oracle鎖處理機(jī)制中的一個(gè)亮點(diǎn)。一般來(lái)說(shuō)死鎖是難以避免的,除非在應(yīng)用訪(fǎng)問(wèn)的時(shí)候做了嚴(yán)格的定義,對(duì)事務(wù)訪(fǎng)問(wèn)的數(shù)據(jù)源進(jìn)行分級(jí),按照級(jí)別訪(fǎng)問(wèn)。由于在應(yīng)用開(kāi)發(fā)中避免死鎖十分
22、困難,索引絕大多數(shù)應(yīng)用都是依靠oracle的死鎖處理機(jī)制來(lái)處理死鎖。oracle會(huì)自動(dòng)進(jìn)行死鎖檢測(cè),一旦發(fā)現(xiàn)自動(dòng)解開(kāi)。應(yīng)用程序可能碰到一個(gè)ora 60的錯(cuò)誤,可能就是死鎖檢測(cè)機(jī)制起作用了。在rac環(huán)境下,要做全局的死鎖檢測(cè),由LMD進(jìn)程負(fù)責(zé)死鎖檢測(cè)。LMD進(jìn)程檢測(cè)死鎖的周期由參數(shù)_lm_dd_interval確定,這個(gè)值默認(rèn)是60sDLD(死鎖檢測(cè))的時(shí)候需要持有parent enqueue hash chains閂鎖,因?yàn)镈LD需要對(duì)每個(gè)資源進(jìn)行一次檢查,查找那些從上回檢查過(guò)后狀態(tài)一直沒(méi)有變化的資源,才可能發(fā)現(xiàn)那些出現(xiàn)死鎖的資源。由于資源的數(shù)量問(wèn)題,可能導(dǎo)致檢查的開(kāi)銷(xiāo)比較大。出現(xiàn)系統(tǒng)hang
23、住的情況也是可能的。這時(shí)候解決方法是關(guān)閉轉(zhuǎn)儲(chǔ)?;貪L段oracle使用回滾段的特點(diǎn):一個(gè)事務(wù)只使用一個(gè)回滾段來(lái)記錄所有的回滾記錄多個(gè)事務(wù)可以寫(xiě)入相同的擴(kuò)展擴(kuò)展被循環(huán)使用,任何一個(gè)擴(kuò)展都不會(huì)被跳過(guò)如果不能使用下一個(gè)擴(kuò)展,oracle會(huì)分配一個(gè)新的擴(kuò)展,并插入這個(gè)循環(huán)oracle不會(huì)使用被尾部占據(jù)的擴(kuò)展oracle根據(jù)如下原則來(lái)選擇一個(gè)回滾段:oracle會(huì)選擇當(dāng)前事務(wù)數(shù)最少的回滾段如果有兩個(gè)以上的回滾段內(nèi)當(dāng)前有相同的事務(wù)數(shù),那么oracle會(huì)根據(jù)上一個(gè)事務(wù)使用的回滾段號(hào),選擇比這個(gè)回滾段號(hào)大的下一個(gè)順位的回滾段。當(dāng)前2,1和4待定,那么4被選擇。Db_name對(duì)一個(gè)數(shù)據(jù)庫(kù)(Oracle datab
24、ase)的唯一標(biāo)識(shí)。這種表示對(duì)于單個(gè)數(shù)據(jù)庫(kù)是足夠的,但是隨著由多個(gè)數(shù)據(jù)庫(kù)構(gòu)成的分布式數(shù)據(jù)庫(kù)的普及,這種命令數(shù)據(jù)庫(kù)的方法給數(shù)據(jù)庫(kù)的管理造成一定的負(fù)擔(dān),因?yàn)楦鱾€(gè)數(shù)據(jù)庫(kù)的名字可能一樣,造成管理上的混亂。為了解決這種情況,引入了Db_domain參數(shù),這樣在數(shù)據(jù)庫(kù)的標(biāo)識(shí)是由Db_name和Db_domain兩個(gè)參數(shù)共同決定的,避免了因?yàn)閿?shù)據(jù)庫(kù)重名而造成管理上的混亂。這類(lèi)似于互連網(wǎng)上的機(jī)器名的管理。我們將Db_name和Db_domain兩個(gè)參數(shù)用.連接起來(lái),表示一個(gè)數(shù)據(jù)庫(kù),并將該數(shù)據(jù)庫(kù)的名稱(chēng)稱(chēng)為Global_name,即它擴(kuò)展了Db_name。Db_name參數(shù)只能由字母、數(shù)字、_、#、$組成,而且最
25、多8個(gè)字符。查看方式:show parameter db_name;Global_name對(duì)一個(gè)數(shù)據(jù)庫(kù)(Oracle database)的唯一標(biāo)識(shí),oracle建議用此種方法命令數(shù)據(jù)庫(kù)。該值是在創(chuàng)建數(shù)據(jù)庫(kù)是決定的,缺省值為Db_name. Db_domain。在以后對(duì)參數(shù)文件中Db_name與Db_domain參數(shù)的任何修改不影響Global_name的值,如果要修改Global_name,只能用ALTER DATABASERENAME GLOBAL_NAME TO db_name.db_domain。查看方式:showparameter global_name;Db_domain定義一個(gè)數(shù)據(jù)
26、庫(kù)所在的域,域只是為了更好的管理分布式oracle系統(tǒng)。查看方式:show parameter db_domain;Service_name該參數(shù)是oracle8i新引進(jìn)的。在8i以前,我們用SID來(lái)表示標(biāo)識(shí)數(shù)據(jù)庫(kù)的一個(gè)實(shí)例,但是在Oracle的并行環(huán)境中,一個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)多個(gè)實(shí)例,這樣就需要多個(gè)網(wǎng)絡(luò)服務(wù)名,設(shè)置繁瑣。為了方便并行環(huán)境中的設(shè)置,引進(jìn)了Service_name參數(shù),該參數(shù)對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù),而不是一個(gè)實(shí)例,而且該參數(shù)有許多其它的好處。該參數(shù)的缺省值為Db_name. Db_domain,即等于Global_name。一個(gè)數(shù)據(jù)庫(kù)可以對(duì)應(yīng)多個(gè)Service_name,以便實(shí)現(xiàn)更靈活的配置。
27、該參數(shù)與SID沒(méi)有直接關(guān)系,即不必Service name 必須與SID一樣。查看方式:show parameter service_name;監(jiān)聽(tīng)參數(shù)o LISTENER 指出一個(gè)監(jiān)聽(tīng)器定義的起始點(diǎn)。它實(shí)際上是正被定義的當(dāng)前監(jiān)聽(tīng)器的名稱(chēng)。默認(rèn)的名稱(chēng)是LISTENER。o DESCRIPTION 描述每個(gè)監(jiān)聽(tīng)位置o ADDRESS_LIST 含有與監(jiān)聽(tīng)器正在監(jiān)聽(tīng)的那些位置有關(guān)的地址信息o PROTOCOL 指定用于本監(jiān)聽(tīng)位置的協(xié)議o HOST 保存監(jiān)聽(tīng)器所駐留在的那臺(tái)計(jì)算機(jī)的名稱(chēng)o PORT 含有監(jiān)聽(tīng)器正在上面監(jiān)聽(tīng)的地址o SID_LIST_LISTENER 定義配置監(jiān)聽(tīng)器所針對(duì)的ORACLE
28、服務(wù)的列表o GLOBAL_DBNAME 標(biāo)識(shí)全局?jǐn)?shù)據(jù)庫(kù)名稱(chēng)。本項(xiàng)應(yīng)該與當(dāng)前Oracle服務(wù)的init.ora文件中的SERVICE_NAMES項(xiàng)一致o ORACLE_HOME 給出服務(wù)器上Oracle可執(zhí)行程序的位置o SID_NAME 含有用于本Oracle實(shí)例的Oracle SID的名稱(chēng)o SID_LIST_LISTENER 定義配置監(jiān)聽(tīng)器所針對(duì)的ORACLE服務(wù)的列表o Lsnrctl命令用來(lái)管理Oracle監(jiān)聽(tīng)器,是一個(gè)命令行界面。想調(diào)用這個(gè)命令行工具,在命令行鍵入lsnrctl即可??梢栽贚SNRCTL提示符下鍵入help來(lái)顯示這些命令的一份清單。o Services 列舉出服務(wù)的
29、一個(gè)匯總表及為每個(gè)協(xié)議服務(wù)處理程序所建立和拒絕的連接信息個(gè)數(shù)o Start listener 啟動(dòng)指定的監(jiān)聽(tīng)器o Status listener 顯示指定監(jiān)聽(tīng)器的狀態(tài)o Stop listener 關(guān)閉指定的監(jiān)聽(tīng)器o Trace 打開(kāi)監(jiān)聽(tīng)器的跟蹤特性0-16o Version 顯示Oracle Net軟件與協(xié)議適配器的版本o Change_password 允許用戶(hù)修改關(guān)閉監(jiān)聽(tīng)器所需要的密碼o Reload 重新讀取listener.ora文件,但不關(guān)閉監(jiān)聽(tīng)器。如果該文件發(fā)生了變化,重新刷新監(jiān)聽(tīng)器。o Save_config 當(dāng)從lsnrctl工具中對(duì)listener.ora文件進(jìn)行了修改時(shí),
30、復(fù)制一個(gè)叫做listener.bak的listener.ora文件o Exit 退出lsnrctl實(shí)用工具o Quit 執(zhí)行和exit相同的功能Net service name網(wǎng)絡(luò)服務(wù)名,又可以稱(chēng)為數(shù)據(jù)庫(kù)別名(database alias)。是客戶(hù)端程序訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)時(shí)所需要,屏蔽了客戶(hù)端如何連接到服務(wù)器端的細(xì)節(jié),實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的位置透明的特性。查看方式:show parameter Net service name;recrusive callsrecrusive calls表示對(duì)recrusive SQL的調(diào)用次數(shù),這里的recrusive SQL可能專(zhuān)門(mén)是指對(duì)system表空間里的對(duì)象所做的遞
31、歸SQL。當(dāng)數(shù)據(jù)字典信息已經(jīng)加載到dictionary cache以后,就不需要對(duì)硬盤(pán)上的system表空間做操作了,直接內(nèi)存操作。所以就不算到recrusive calls了行遷移和行連接行連接是指一個(gè)行存儲(chǔ)在多個(gè)塊中的情況,因?yàn)橐粋€(gè)該行的長(zhǎng)度超過(guò)了一個(gè)塊的可用空間大小。行遷移是指一個(gè)數(shù)據(jù)行不適合放入當(dāng)前塊而被重新定位到另一個(gè)塊,但在原始?jí)K中保留一個(gè)指針,原始?jí)K中的指針是必需的兩者之間的區(qū)別: 行連接是指一個(gè)行存儲(chǔ)在多個(gè)塊中的情況,因?yàn)橐粋€(gè)該行的長(zhǎng)度超過(guò)了一個(gè)塊的可用空間大小。行遷移是指一個(gè)數(shù)據(jù)行不適合放入當(dāng)前塊而被重新定位到另一個(gè)塊,但在原始?jí)K中保留一個(gè)指針,原始?jí)K中的指針是必需的,因?yàn)樗?/p>
32、引的rowid項(xiàng)仍然指向原始位置.行連接通常與行的長(zhǎng)度和oracle數(shù)據(jù)庫(kù)塊中的大小有關(guān),而行遷移通常是當(dāng)一個(gè)更新操作的長(zhǎng)度增加且又要保持該行在同一塊中,而該塊又缺少可用空間時(shí)產(chǎn)生的問(wèn)題,oracle在決定行連接之前先試圖進(jìn)行行遷移。ROWID存儲(chǔ)了row在數(shù)據(jù)文件中的具體位置:64位編碼的數(shù)據(jù),A-Z, a-z, 0-9, +, 和 /,row在數(shù)據(jù)塊中的存儲(chǔ)方式SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20;比如:OOOOOOFFFBBBBBBRRROOOOOO:data object number, 對(duì)
33、應(yīng)dba_objects.data_object_idFFF:file#, 對(duì)應(yīng)v$datafile.file#BBBBBB:block#RRR:row#Dbms_rowid包SELECT dbms_rowid.rowid_block_number(AAAGFqAABAAAIWEAAA) from dual;具體到特定的物理文件存儲(chǔ)raidRAID 0又稱(chēng)為Stripe或Striping,它代表了所有RAID級(jí)別中最高的存儲(chǔ)性能。RAID 0提高存儲(chǔ)性能的原理是把連續(xù)的數(shù)據(jù)分散到多個(gè)磁盤(pán)上存取,這樣,系統(tǒng)有數(shù)據(jù)請(qǐng)求就可以被多個(gè)磁盤(pán)并行的執(zhí)行,每個(gè)磁盤(pán)執(zhí)行屬于它自己的那部分?jǐn)?shù)據(jù)請(qǐng)求。這種數(shù)據(jù)上的
34、并行操作可以充分利用總線(xiàn)的帶寬,顯著提高磁盤(pán)整體存取性能RAID 1又稱(chēng)為Mirror或Mirroring,它的宗旨是最大限度的保證用戶(hù)數(shù)據(jù)的可用性和可修復(fù)性。 RAID 1的操作方式是把用戶(hù)寫(xiě)入硬盤(pán)的數(shù)據(jù)百分之百地自動(dòng)復(fù)制到另外一個(gè)硬盤(pán)上。由于對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行百分之百的備份,在所有RAID級(jí)別中,RAID 1提供最高的數(shù)據(jù)安全保障。同樣,由于數(shù)據(jù)的百分之百備份,備份數(shù)據(jù)占了總存儲(chǔ)空間的一半,因而,Mirror的磁盤(pán)空間利用率低,存儲(chǔ)成本高。RAID 5 是一種存儲(chǔ)性能、數(shù)據(jù)安全和存儲(chǔ)成本兼顧的存儲(chǔ)解決方案。RAID 5不對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行備份,而是把數(shù)據(jù)和相對(duì)應(yīng)的奇偶校驗(yàn)信息存儲(chǔ)到組成RAID5的各個(gè)磁盤(pán)上,并且奇偶校驗(yàn)信息和相對(duì)應(yīng)的數(shù)據(jù)分別存儲(chǔ)于不同的磁盤(pán)上。當(dāng)RAID5的一個(gè)磁盤(pán)數(shù)據(jù)發(fā)生損壞后,利用剩下的數(shù)據(jù)和相應(yīng)的奇偶校驗(yàn)信息去恢復(fù)被損壞的數(shù)據(jù)。RAID0+1:正如其名字一樣RAID 0+1是RAID 0和RAID 1的組合形式,也稱(chēng)為RAID 10。RAID 0+1是存儲(chǔ)性能和數(shù)據(jù)安全兼顧的方案。它在提供與RAID 1一樣的數(shù)據(jù)安全
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版木結(jié)構(gòu)木工班組施工合同范本
- 2025年物流公司物流園區(qū)配送運(yùn)輸合同協(xié)議書(shū)3篇
- 二零二五年度枸杞采摘、加工、銷(xiāo)售全流程服務(wù)合同3篇
- 2025年度窗簾清洗與保養(yǎng)服務(wù)合同3篇
- 二零二五版鍋爐設(shè)備維護(hù)保養(yǎng)與故障排除合同范本3篇
- 2025年度淋浴房行業(yè)數(shù)據(jù)分析與服務(wù)合同4篇
- 2025年度城市街道綠化帶綠植更新與養(yǎng)護(hù)服務(wù)合同范本4篇
- 2025年度二手房公積金貸款買(mǎi)賣(mài)合同(含房屋維修基金)4篇
- 二零二四年勞動(dòng)爭(zhēng)議解決常年法律顧問(wèn)合同3篇
- 2024版售后服務(wù)委托合同書(shū)
- 2025年河南鶴壁市政務(wù)服務(wù)和大數(shù)據(jù)管理局招聘12345市長(zhǎng)熱線(xiàn)人員10人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 建設(shè)項(xiàng)目安全設(shè)施施工監(jiān)理情況報(bào)告
- 春節(jié)期間安全施工措施
- 2025年大唐集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 建筑工地春節(jié)期間安全保障措施
- 2025山東水發(fā)集團(tuán)限公司招聘管理單位筆試遴選500模擬題附帶答案詳解
- 2024-2030年中國(guó)建筑玻璃行業(yè)市場(chǎng)深度調(diào)研及競(jìng)爭(zhēng)格局與投資價(jià)值預(yù)測(cè)研究報(bào)告
- 泌尿:膀胱腫瘤病人的護(hù)理查房王雪-課件
- 企業(yè)短期中期長(zhǎng)期規(guī)劃
- 中華民族共同體概論講稿專(zhuān)家版《中華民族共同體概論》大講堂之第一講:中華民族共同體基礎(chǔ)理論
- 《商務(wù)溝通-策略、方法與案例》課件 第一章 商務(wù)溝通概論
評(píng)論
0/150
提交評(píng)論