




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
強(qiáng)制啟動方式當(dāng)不能關(guān)閉數(shù)據(jù)庫時,能夠用startupforce來完成數(shù)據(jù)庫的關(guān)閉先關(guān)閉數(shù)據(jù)庫,再執(zhí)行正常啟動數(shù)據(jù)庫命令帶初始化參數(shù)文件的啟動方式先讀取參數(shù)文件,再按參數(shù)文件中的設(shè)置啟動數(shù)據(jù)庫一個Delete操作的流程:在librarychache中匹配(librarychachelocklatch保librarychachelock對地址堆的訪問,而后librarychachepinlatch保護(hù)librarycachepin對librarycache中sq1有關(guān)信息的訪問)2、根據(jù)執(zhí)行計劃讀取數(shù)據(jù):cachebufferchainlatch保護(hù)能定位到bufferheader并pin住該塊(假如沒有bufferheader,就pin住某個空塊(沒有空塊就產(chǎn)生freebufferwaits),并到數(shù)據(jù)文件中讀取)。假如如今有某個進(jìn)程想訪問該塊,將產(chǎn)生bufferbusywaits。3、在redologbuffer中記錄delete操作的細(xì)節(jié)。(包含回滾段前后鏡像、數(shù)據(jù)塊前后鏡像)。4、在相應(yīng)回滾段段頭的事務(wù)表中創(chuàng)建一個undo條目,把將要刪除的記錄創(chuàng)建5、在BufferCache中的相應(yīng)數(shù)據(jù)塊上刪除記錄,同時標(biāo)記相應(yīng)的數(shù)據(jù)塊為1.0racle產(chǎn)生一個SCN2.在回滾段事務(wù)表中標(biāo)記該事務(wù)狀態(tài)為commited3.LGWRFlushLogBuffer到日志文件3.假如如今數(shù)據(jù)塊仍然在BufferCache中,那么SCN將被記錄到BlockHeader上,這被稱之快速提交(fastcommit)4.假如dirtyblock已經(jīng)被寫回到磁盤,那么下一個訪問這個block的進(jìn)程將會自回滾段中獲取該事務(wù)的狀態(tài),確認(rèn)該事務(wù)被提交。然后這個進(jìn)程獲得提交SCN并寫回到BlockHeader上。這被稱之延遲塊清除(delayedblockcleanout)。SGA(系統(tǒng)全局區(qū)、共享全局區(qū))、PGA(進(jìn)程全局區(qū)、私有全局區(qū))10%冗余內(nèi)存,OSSYS進(jìn)程(約1.6G),OSBUFFER(約0.8G),數(shù)據(jù)庫連接消耗內(nèi)存(每個連接約5~8M),PGA(每個連接約2M,V$PGATARGETADVICE),SGA_____SQLselectsumpinhitsreloadssumNAMEVALUE__round(getmisses/decode(gets,0,null,gets)*100ratiofromvSrowcache('PACKAGEPACKAGEBODYPROCEDUREFUNCTION selecttablenamecachebuffSELECTNAMEVALUEFROMVSSY起).___ ___REVALUEIIradioFROMVSSYSSTATRBARVSSSELECTDECODEisdefaultTRUEDECODESELECTkspponmDECODEksppoflgObsoleteUnderscoreduserenvInstanceandyinstiduserksppinmlikeparorderby ALTERSESSIONSETNLSDAT__最常被修改的參數(shù):Sharedpoolsize分配給共享池的內(nèi)存字節(jié)數(shù)隨著用戶的需求,能夠按時增加此值Rollbacksegments數(shù)據(jù)庫啟動時獲取的一個或者多個當(dāng)事務(wù)處理量增加或者減少時,能夠從該回滾段名列表中增加或者刪除回滾段名Processes可同時訪問數(shù)據(jù)庫的最大進(jìn)程數(shù)量session=1.1*process+5sessionprocessOracle后臺進(jìn)程的session,10%__是提供給recursivesession使用的。見SGA介紹中的有關(guān)內(nèi)容見SGA介紹中的有關(guān)內(nèi)容針對每個session,排序首先會使用sortareasize,假如不足則會使用臨時表空間。實際上就是外排序過程,把要排序的對象分割為內(nèi)存能夠容納的小段(sortrun),然后每個sortrun都放到sortarea里面去排序,排序結(jié)果作為中間信息放在臨時表空間的臨時段內(nèi),由于分段排序的結(jié)果當(dāng)然不可能是最終要求的排序結(jié)果,因此還要通過一個merge的過程,才會得到最終排序結(jié)果,原理大概是比較每個sortrun的第一名,取出領(lǐng)先者,然后該sortrun的第二名頂上,繼續(xù)上述過程直到取完。因此建議:sortareasize所能容納記錄數(shù)至少大于排序記錄數(shù)的平方根 許多DBA有個錯誤的概念,認(rèn)為此參數(shù)受CPU數(shù)量的限制,實際并非如此。提示:假如工作在一個能夠支持多進(jìn)程的操作系統(tǒng)上,需做的第一件事就是改變這個參數(shù)的值。重新啟動數(shù)據(jù)庫,使用startup命令,Oralce將會按照下列順序在缺省目錄中搜索參數(shù)startuppfileOracleadmineyglenpfile然后我們能夠使用ALTERSYSTEM方式將修改固定到SPFILE.空間管理主體思想一直圍繞著內(nèi)部段的擴(kuò)展。不僅僅影響到空間大小,自由塊太分散的話會影響性能(I/0,及擴(kuò)展時間等)空閑表(主空閑表、進(jìn)程空閑表、事務(wù)空閑表),可能存在于表頭塊中4)假如沒有找到恰好合適的,那么Oracle掃描大些的氣泡。假如一個大的氣泡所擁有的塊數(shù)比所需要的塊數(shù)多5塊或者5塊以上(當(dāng)然是在取了約數(shù)以后),那么氣泡中的自由空間分成兩部分,一部分滿足擴(kuò)展段的需要,另一部分仍作為自由空間。新的(小一些的)的自由空間氣泡包含去掉所需的塊數(shù)后剩下的塊數(shù)(5塊或者多于5塊)。比如,假如需要的塊數(shù)是25,但找到了一個32塊的氣泡,那么Oracle占用其中的25塊分配給擴(kuò)展段并保持剩下的7塊形成一個分開的氣泡,仍然保留在原處那么只是把此氣泡供擴(kuò)展段使用。換句話說,假如多余的塊數(shù)少于5就不產(chǎn)生分割操作。5)假如所有現(xiàn)有的氣泡都太小,不足以滿足擴(kuò)展段的需要(即沒有找到大小相等的也沒有找到大于數(shù)據(jù)塊數(shù)的氣泡),那么進(jìn)行第三次掃描尋找是否有能夠合空間。在合并以后,再次進(jìn)行第3步與第4步。6)假如前面的幾步都沒有找到能夠供擴(kuò)展段使用的氣泡,那么Oracle檢查AUTOEXTEND功能是否已被使能(后面全面介紹這一選項)。假如是的,再檢查數(shù)據(jù)文件是否是可擴(kuò)展的。7)假如AUTOEXTEND沒有被使能或者者在磁盤上(數(shù)據(jù)文件所在的磁盤)沒有足夠的空2)理想情況下,一個表空間中的所有段應(yīng)該有相同的存儲參數(shù)(對每一個段有相同的用100作為PCTINCREASE的可能值。在任何情況下,不要用如1、5等的隨機(jī)值,以防止生成4)周期性顯式地合并應(yīng)用程序的表空間。不要配置SMON來自動合并表空間,由于它需要在表空間的DEFAULTSTORAGE語句中指定一個大于0的PCTINCREASE的值。1)識別表空間中的擴(kuò)展段、氣泡、蜂窩:COLUMN"FILID"FROMAT99HEADINGFILID','||SEGMENTNAME“SEGMENT”,E.BLOCKID“STARTBLK”,___WHEREETABLESPACENAMEUPPERTBLSPCNA____ANDDTABLESPACENAMETABLESPACE_______ ____WHERESTABLESPACENAMEUPPERT_________#12111212121312123)根據(jù)停工時間決定重構(gòu)計劃,重構(gòu)步驟:a)儲存這些段中的數(shù)據(jù)(把數(shù)據(jù)輸出或者用CREATETABLEASSELECT命令來儲存表數(shù)據(jù);關(guān)于索引表,用CREATEINDEX腳本來重構(gòu)它們)。Oracle擴(kuò)展段分配算法:用光那些看起來以后不可能被使用的塊!(比如擴(kuò)展段外最后的幾個塊)保證DBBLOCKSIZE與擴(kuò)展段大小(INITIAL/NEXT)相習(xí)慣,增強(qiáng)了每次I/0操作讀盡展段結(jié)尾,只能讀取擴(kuò)展段中剩下的幾塊的限制。舉個例子,能夠更一個表包含5個擴(kuò)展段,每個包含128個8K的數(shù)據(jù)塊(即,INITIA&NEXT=1MB),那么在一次全表掃描中需要讀5MB或者5120KB數(shù)據(jù)。假如DBFILEMULTIBLOCKREADCOUNT是8(DBBLOCKSIZE是8K),那么理論上需要的最大I/那么I/0調(diào)用的次數(shù)會變化。比如,假如INITIAL&NEXT=520KB),那么在全表掃描期間需要讀2.45MB或者2600KB數(shù)據(jù)。假定,DBFILEMULTIBLOCKREADCOUNT仍是8,那么理論上需要多達(dá)45次I/0調(diào)用才能訪問整個表。由于第二個表(2600KB)大約是第一個表(5120KB)然而,總共只做了5次I/0調(diào)用與假定的情況有很大的出入。讓我們認(rèn)真分析一下當(dāng)?shù)诙€表被掃描時到底發(fā)生了什么情況。在第二個表中的每個擴(kuò)展段包含520K(2600K/STORAGE)或者65個數(shù)據(jù)塊。現(xiàn)在按假定的DBFILEMULTIBLOCKREADCOUNT在一次I/0調(diào)用中至多可讀64K數(shù)據(jù)。因此,訪問每個擴(kuò)展段需要9次I/0調(diào)用讀取了段中的98%的數(shù)據(jù)或者64塊,而第9次調(diào)用讀取最后一塊)。由于第9次調(diào)用只讀取了8K(最后一塊),因此不是最優(yōu)的。這5個擴(kuò)展段中的每一個都需要用第9次訪問來讀取其中最后一塊,導(dǎo)致了5次附加的I/0調(diào)用。假如INITIAL/NEXT的大小調(diào)整得好一些,是(DBFILEMULTIBLOCKREADCOUNTXDBBLOCKSIZE)的倍數(shù),那么附加的5塊能夠在一次I/0調(diào)用中讀入。比如,假如INITIAL/NEXT=512K,那么僅需要節(jié)約了4次調(diào)用。這里,我們假定每個段有5個擴(kuò)展段。然而,隨著數(shù)據(jù)庫變得越來越大,擴(kuò)展段數(shù)會相當(dāng)高,這樣,相應(yīng)INITIALNEXTALTERSESSIONSETEVENT由于當(dāng)前磁盤空間滿了,而手頭又沒有新的磁盤,因此需要重組表空間(減小同一磁盤其他表空間的大小,騰出空間),重組之前需要做好充足準(zhǔn)備,有關(guān)操作見24X7第12.1.16;但在0racle8i以后,支持可移動的表空間,因此不必進(jìn)行復(fù)雜的重組?!ひWC移動睡眠表空間(或者通過減少臨時表空間)能提供所需要的空間(這是整個表空間可能當(dāng)前看起來是“睡眠的”(如,在白天)。然而,卻可能被在晚業(yè)使用。另外,它也可能被CFO使用,而CFO今天未啟動而已。因此,在決定哪個表空間是·保證睡眠的表空間中沒有數(shù)據(jù)字典段(由于編輯了SQL.BSQ文件)。·要提供足夠的提示信息告知用戶這種“睡眠”明智的。否則,由于[BUG:568232],當(dāng)文件增長超過ORACLE不表操縱擴(kuò)展段數(shù)目(<100),太大影響空間管理性能并增加數(shù)據(jù)字典記錄maxtrans:同一個block中同意最大并發(fā)事務(wù)數(shù)事務(wù)需要的空間。(即ITL的個數(shù),這樣能夠不用等到其他事務(wù)釋放ITL)小),為5的倍數(shù)(假如只用1塊,也會出現(xiàn)4個空塊),全表掃描期間來確定讀什么塊,能夠可釋放MINEXTENTS外的未用空間,使用KEEP參數(shù)能夠釋放INITIAL/MINEXTENTS中的未·在段上獲得一個獨占鎖(對段頭塊能夠獨占訪問)。(行一級或者表一級的鎖),那么截斷操作務(wù)必通過在共享模式下申請一個TX鎖等待?!ぜ偃缗渲昧硕鄠€進(jìn)程(OPS環(huán)境),把段頭與包含空閑表組的塊寫入磁盤中。假如我們要固定表,那么能夠在創(chuàng)建表的時候或者CACHE將表放置到BufferCache的LRU列MRU(比如2個DML分blocksdmlblocks有非常多的transaction,是找完所有的效率高還是到了某個地步找不到干脆直接分配新的extent效率高)上都沒有已經(jīng)commit的事務(wù),那么如今才移動HWM因此,照這樣的步驟,同意你的看法,多個freelist不可能造成實際上的空間浪費,只block進(jìn)MFL)---->移動HWM行關(guān)于非鏈接的行,將是一整行;而關(guān)于鏈接的行,它是行的一部分。行頭至少用3個字節(jié)包含指向行的元數(shù)據(jù),如所有行段的ROWID(假如行已經(jīng)是分鏈/遷移的),物理地存在于這一行部分或者整行中,與集群關(guān)鍵字(假如表是集群的一部分)。實數(shù)據(jù)的長度。注意,一列(如LONGRAW)可能在于多個塊。因此,能夠用列頭來識列數(shù)據(jù)的大小。這對別的變化的列數(shù)據(jù)類型也有用,如VARCHAR、VARCHAR2與RAW,可用來列有7個字節(jié))。關(guān)于最多包含250個字節(jié)的列使用1個字節(jié)而關(guān)于更大的列(超過250個字節(jié))使用3個字節(jié)。小于250個字節(jié)的可變長度的列有1個字節(jié)的頭。然而,假如該列更新后體積變大,列頭要擴(kuò)展為3個字節(jié)。假如由于自由空間有限而使這一擴(kuò)展無法進(jìn)行,那么假如列包含一個NULL(沒有任何值)而且它物理地放NULL或者NOTNULL(它們實際上有值)之前,那么前面NULL列的列頭用0作為數(shù)據(jù)大小。另外,假如一個包含NULL值的必要的列(非空的)有助于優(yōu)化數(shù)據(jù)庫中中間的使用操作。列通常以聲明的數(shù)據(jù)儲存,除非在某些情況下,如當(dāng)表中包含一個LONG/LONGRAW列時,在這種情況下,后者通常儲存在最鏈接比較容易發(fā)生在比較大的行上,比如行上有LONG、LONGRAW、LOB等數(shù)據(jù)類型的字段,行遷移:當(dāng)一行記錄初始插入的時候事能夠存儲在blockOracle將會遷移整行數(shù)據(jù)到一個新的block中(假設(shè)一個block中能夠存儲下整行數(shù)據(jù)),Oracle會保留被遷移行的原始指針指向新的存放行數(shù)據(jù)的block,這就意味著被遷移行的ROW指向該行的新的位置,同時該行原先空間的剩余空間不再被數(shù)據(jù)庫通常情況下(視關(guān)鍵字長度),記錄數(shù)小于等于1.66×10°的索引都能夠被3層的B假如要求創(chuàng)建索引的時間少(由于大表會造成系統(tǒng)暫時停工),需要設(shè)置小的假如刪除葉節(jié)點行/全部葉節(jié)點行比率高(>20%),或者索引的高度(height列>4),應(yīng)重建引_leaf:0x1403d9f20987295(1:nrow:341leaf:0x1403f0620987654(-1:nrow:341rrow:341)branch(分支),假如leaf(葉子)的行數(shù)基本接近說明索引健康,否則重建;假如索引),則至少要有組合索引的引導(dǎo)列參與到該查詢中,如創(chuàng)建一個索引:createindex_inefficient.3只是將hwm移動,釋放的空間不可能被其他段使用-可通過2次createtable**nologgingasselect來清理hwm使空間重新迅速使用,調(diào)整PCTFREE限制塊中自由空間量,使塊中能夠放更多的行,來提高行被刪除時,相應(yīng)的塊并不馬上清除,而是等到再次訪問SELECTSoftwarevsnCompatibi指出了創(chuàng)建操縱文件時的Oracle的版本,這里是0x9200000,即,9.2.0。CompatibilityVsn指出了兼容版本為0x8000000,即,8.0。第2部分是為Transaction層提供的Header信息。它一共占據(jù)了48bytes,包含24bytes的這里我們看到表空間號是tsn:8,數(shù)據(jù)文件號是file#:11,相對數(shù)據(jù)塊地址是rdba:數(shù),高水位地址Highwater::0x02c00004,自由列表信息hdr'sfreelists:1等等。假→address(RDBA):包含Tablespace所在數(shù)據(jù)文件的相對文件號file#=3,與數(shù)據(jù)塊的 代表16進(jìn)制,每2位16進(jìn)制占用一個字節(jié))segment/objectid為0x649b,轉(zhuǎn)成10進(jìn)制為25755,能夠由obj →0x020x0000.000.000000000xfsc24bytes的操縱信息包含:Flag:占用2bytes。O表示這個block在freelist上。否則flag為"-"Unused:4bytes,用來前后兼容。每個ITLentry包含下列的內(nèi)容:TransactionidXidbytesrollbacksegmentnumbertr中的slotnumber等。UndoblockaddressUbabLocks:3nibbles.也就是所謂的行級鎖(row-levellocks)SCNorfreespacecredit:6bytes.假如這個事務(wù)已經(jīng)cleanout,這個值就是SCN;否則,前兩個字節(jié)表示由這個事務(wù)釋放的此block中的空間數(shù)。dictionary,即每增加一條row,rowdictionary就多出2bytes用來記載該row,能夠通過下面的hsiztabledictionaryclusterblocktableblocknrow:numberofrowsH-headofrowpieceH=Headpieceofrow臨時(排序)段__SELECT'ALTERUSERUSERNAME||TEMPORARYTABLESPACETEMP2;' FROMDBAUSERSWHERETEMPORARYTABLESPACE='TEMP1' 5)丟棄TEMP1。記錄如:,比如數(shù)據(jù)庫的啟動與關(guān)閉、數(shù)據(jù)庫啟動時使用的參數(shù)設(shè)置、聯(lián)機(jī)重做日志切換等。同時,為了便于檢查,也將許多數(shù)據(jù)庫錯誤寫入該文件。任何數(shù)據(jù)庫結(jié)構(gòu)的改變加日志文件、增加表空間、減少數(shù)據(jù)文件等)也被記入告警日志文件。Sessionaltered.bdump目錄下是background進(jìn)程留下的文件udump應(yīng)該是user進(jìn)程留下的文件系統(tǒng)進(jìn)程出錯前寫入的信息.通常不可能讀懂.tkproforcloratrcrilltxtexp跟蹤類別事件名稱動作Name跟蹤項目范圍限定件件processstatenr改變執(zhí)行ngtopath件rnoff 分析系統(tǒng)狀態(tài),最好每10分鐘一次,做三次對比分析LibraryCache的全面情況分析B*樹索引結(jié)構(gòu)LEVEL<DBAOBJECTS.OBJECTID>’__密碼文件假如沒有口令文件,在數(shù)據(jù)庫未啟動之前就只能通過操作系統(tǒng)認(rèn)證.使用Rman,很多時候需要在nomount,mount等狀態(tài)對數(shù)據(jù)庫進(jìn)行處理因此通常要求sysdba權(quán)限假如屬于本地DBA組,能夠通過操作系統(tǒng)認(rèn)證登陸通過查詢視圖V$PWFILEUSERS來獲取擁有SYSOPER/SYSDBA系統(tǒng)權(quán)限Scn:systemchangenumber,每個DATABLOCK對應(yīng)一個scn,為了數(shù)據(jù)一致性而存在系統(tǒng)發(fā)生變化所產(chǎn)生的一個時間點標(biāo)志但其作用各不相同數(shù)據(jù)文件頭中包含了該數(shù)據(jù)文件的checkpointSCN,表示給數(shù)據(jù)文件最近一次執(zhí)行檢查點操作時的SCN.日志文件頭中包含了lowscn,nextscn,表示給日志文件包含有從lowscn到nextscn的操縱文件中包含了每個數(shù)據(jù)文件的checkpointSCN,stopSCN,每個日志文件的low相同datablock里面的SCN是當(dāng)block被更換的時候的SCN,而數(shù)據(jù)文件有那么多block,自然不一致的block有不一致的SCN,block中存在blockSCN與ITL中的commitSCN,blockSCN又在塊頭與塊尾都有,若不一致意味著block損壞當(dāng)一個查詢執(zhí)行的時候,他會先從系統(tǒng)中得到一個當(dāng)前的SCN號,在他查找數(shù)據(jù)的同時,他會檢查每個數(shù)據(jù)行與他對應(yīng)的SCN號,只有那些不比他的SCN號大的行才能從對應(yīng)用戶數(shù)據(jù)文件的緩沖區(qū)內(nèi)取出.而那些大于他SCN號的行,就應(yīng)該從回滾段數(shù)據(jù)文件的緩沖中取出.在ORACLE8I下列,可通過如下語句取得CURRENTSCN(internal用戶)selectmaxktuxescnwpowerktuxescnbfromx在ORACLE9I,使用如下語句取得CURRENTSCNfirstchange#是日志中的第一條日志的scncheckpointchange#是數(shù)據(jù)庫的scncheckpointchange#是數(shù)據(jù)文件的起始scn在每個數(shù)據(jù)文件頭中都有一個檢查點計數(shù)器,在ORACLE每次執(zhí)行數(shù)據(jù)文件上的檢查點處理時對計數(shù)器加1。同時,操縱文件也為每個數(shù)據(jù)文件保留一個檢查點計數(shù)器。在每個數(shù)據(jù)文件頭的檢查點結(jié)構(gòu)中含有一個SCN,稱之開始SCN,與每個數(shù)據(jù)文件相對應(yīng),操縱文件有一個結(jié)束SCN,在數(shù)據(jù)庫的正常操作期間,操縱文件中的結(jié)束SCN被設(shè)置為無窮大,數(shù)據(jù)文件中開始SCN在每次完成檢查點處理后加1;檢查點發(fā)生的時候修改數(shù)據(jù)文件頭的檢查點計數(shù)與更新文件頭scn。只有ckpt進(jìn)程更新數(shù)據(jù)文件頭(oracle8往常假如沒有ckpt進(jìn)程就是lgwr更新),發(fā)生變化所產(chǎn)生的一個時間點標(biāo)志。不是提交的標(biāo)志,只是由于提交也是系統(tǒng)的變化之一更新數(shù)據(jù)文件頭與操縱文件。位到日志文件(歸檔日志文件)與具體的位置。假如一個事務(wù)包含多個dml,則只有第一個初始產(chǎn)生dmlscn候又是一個scn;假如一個事務(wù)只有一個dml,拿看起來就是dml產(chǎn)生一個scn,提交或2.第二次檢查對數(shù)據(jù)文件頭中的開始SCN與SCNSCN等于開始SCN,則不需要對那個文件進(jìn)行恢復(fù)開數(shù)據(jù)庫,作為打開過程的一部分,要將結(jié)束SCN重新設(shè)置為1當(dāng)數(shù)據(jù)庫用ABORT強(qiáng)制關(guān)閉數(shù)據(jù)庫時,數(shù)據(jù)庫不進(jìn)行檢查點處理,而結(jié)束SCN仍然為無窮大。在下次啟動期間,發(fā)現(xiàn)開始SCN與結(jié)束SCN不一致,需要進(jìn)行線程恢復(fù)。修改回滾段頭的事務(wù)表狀態(tài)測試--insertinto前后、commit后及Checkpoint后的變化:commit后Checkpoint后更新數(shù)據(jù)文件頭更新更新上表只是為了測試scn的變化,關(guān)于其他信息未做說明(如塊地址變化等);commit的時候只修改回滾段事務(wù)表,目前無法直觀看到,實例啟動的時候會根據(jù)回滾段中未提交的heartbeat--------是ckpt每3秒將當(dāng)前dbwr寫的進(jìn)度(scn)寫到操縱文件中從其中批量地寫到數(shù)據(jù)文件。由于這里有一個順序dbwr量的,寫到哪個buffer的時候該buffer的首次變化時候的scn就是當(dāng)前所有數(shù)據(jù)文件度(scn)寫入數(shù)據(jù)文件頭與操縱文件,這就是檢查點scn。數(shù)據(jù)庫中的數(shù)據(jù)時,使用加鎖以防止另一個用戶做同樣的修改V$1og從操縱文件中提取有關(guān)重做日志組的信息V$logfile有關(guān)實例重做日志組文件名及其位V$process當(dāng)前進(jìn)程的信息V$rowcache內(nèi)存中數(shù)據(jù)字典活動/性能信息V$sesstat在V$session中報告當(dāng)前會話的統(tǒng)計信息V$sqlarea共享池中使用當(dāng)前光標(biāo)的統(tǒng)計信息。光標(biāo)是一塊內(nèi)存區(qū)V$waitstat出現(xiàn)一個以上會話訪問數(shù)據(jù)庫的數(shù)據(jù)時的全面情況。當(dāng)有一個數(shù)據(jù)對象號相對文件號塊號位置號 被寫在由參數(shù)USERDUMPDEST或者者BACKGROUNDDUMPDEST所指定的位置。后臺進(jìn)程失敗經(jīng)常在數(shù)據(jù)庫的alert.log文件中寫入一項,或者者寫到它們各自的追蹤文件.Vprocessbgprocesssession------2.監(jiān)控共享SQL區(qū)V$sqlarea,V$sqltext,V$sqltextwithnewlines,selectp.spidthread,s.username,andss.sid=s.sidandss.statistic#=12在UNIX下能夠用grep命令把a(bǔ)lertorasid.log里出現(xiàn)的錯誤儲存到另一個文件。RACLEBASEadminorasidbdumplistener的日志文件也需要周期地listener 種:排它鎖(Exclusivelocks記為X鎖)與共享鎖(Sharelocks記為S鎖)。注1)(表注1)TM被修改表的標(biāo)識(objectid)0T以十進(jìn)制數(shù)值表示該事務(wù)所以十進(jìn)制數(shù)值X占用的回滾段號與該事務(wù)在該回中所占用的槽號(slotnumber,可懂得為記錄號)。其構(gòu)成形式為:0xRRRRSSSS(RRRR=RBSnumber,SSSS=slot)。表示圍繞(wrap)次數(shù),即該槽(slot)被重用的次數(shù); 用時,它將進(jìn)行自旋(等待),然后再次請求latch。該latch將繼續(xù)重復(fù)這一過程,直到自 SPINCOUNT之后,還沒有得到latch,它將進(jìn)入睡眠,然后在一厘秒(百分之一秒)之SPINCOUNT之后睡眠兩倍長的時間(即二厘秒)。這個過程之后,它每次的睡眠時間將發(fā)起gets,計數(shù)加1得latch后,它將一直持有該latch直到它不再使用此數(shù)據(jù)結(jié)構(gòu),這時latch才會被釋放??赏ㄟ^latch名稱來區(qū)分它所保護(hù)的不一致數(shù)據(jù)結(jié)構(gòu)Latch保護(hù)SGA中的數(shù)據(jù)結(jié)構(gòu)被多個用戶同時訪問,假如一個進(jìn)程不能立即得到所需latch,它就務(wù)必等待,這就導(dǎo)致了CPU的額外負(fù)擔(dān)與系統(tǒng)的速度降低。額外的CPU使用是進(jìn)程‘spining'導(dǎo)致的,‘spining'是指進(jìn)程定時地重復(fù)嘗試獲取latch,在連續(xù)兩次常見Latch問題使用綁定變量;調(diào)整SHAREDPOOLSIZE使用綁定變量;調(diào)整SHAREDPOOLSIZE最大程度減少重做日志生成并避免不必要的提交增加LOGSIMULTANEOUScopies使用DBBLOCKLRULRULATCHES或者多個緩沖池SQLNET.AUTHENTICATIONSERVICES=(NTS)---(容許使用操作系統(tǒng)的身份驗證))(SID=orcl)----SERVICENAME,SID二取其一)____audittrailtransactionauditingbooleanstringSQL>audittable;_ 即:<語言><比特位數(shù)><編碼>nlscsscanFULLYFROMCHARZHSGBKTOCHARUSASCIILOGUScheCAPTUREYARRAYPROCESScontrolfileparallelwrite9,41211,689.17logfileparallelwrite9,7804,722.07__ROUNDBUFFERGETSDISKREADSBUFFERGETROUNDDISKREADSEXECUTIONSReadsperru 什么是綁定變量?硬解析,需要使用綁定變量(bindvariable)。它是用戶放入p會包含等待LGWR進(jìn)程把一個會話事務(wù)的日志記錄信息從日志緩沖區(qū)中寫到磁盤上的重做日等待問題說明有許多全表掃描:調(diào)優(yōu)代碼;存儲較小的表。DB文件順序說明有許多索引讀?。赫{(diào)優(yōu)代碼(特別是連接)。釋放緩沖區(qū)增大DBCACHESIZE;縮短檢查點;調(diào)優(yōu)代碼。段頭部:增加自由列表或者自由列表組。數(shù)據(jù)塊:分離"熱"數(shù)據(jù);利用反向鍵索引與/或者較小的塊。數(shù)據(jù)塊:增大initrans與/或者maxtrans。回退段頭部塊:增加回滾段或者區(qū)域。回退段非頭部塊:增大提交頻率;使用更大的回滾段或者區(qū)全面研究latch。Enqueue—ST利用LMT或者預(yù)分配較大的區(qū)域。W對高于最高水位標(biāo)記的區(qū)域進(jìn)行預(yù)分配。Enqueue—T增大與表或者索引有關(guān)的initrans與/或者maxtrans。Enqueue—TM對外來關(guān)鍵字進(jìn)行索引,檢查鎖定表的應(yīng)用程序。日志緩沖空間增大日志緩沖;利用較快的磁盤進(jìn)行重做日志。日志文件轉(zhuǎn)換歸檔磁盤變慢或者已滿;增加更多或者更大的重做日志。日志文件同步一次提交更多的記錄;利用更快的重做日志磁盤或者原始設(shè)空閑事件忽略常見空閑事件空閑事件類型鎖定管理器等待遠(yuǎn)程消息PX空閑等待并行查詢并行查詢并行查詢什么是瓶頸?一旦熟悉了系統(tǒng)的等待事件,就能夠把握問題的關(guān)鍵,并能夠用相應(yīng)的方法去處理堵塞系統(tǒng)的瓶頸,一定不要隨意的進(jìn)行優(yōu)化,否則一波不息一波又起,能夠通過session的實時信息,最重要的是:它顯示了等待事件與相應(yīng)資源的更深入信息,可確定出--求等待事件及其對應(yīng)的latch ____ ____適的索引,我們可能需要檢查這些數(shù)據(jù)表已確定是否進(jìn)行了正確的設(shè)置,或者增加SQL*NetmoredatafromclientSQLPLUSQSORACLEHOMErdbdbmslogmnraddlogfileLdbmslogmnrstartlogmnrdictFileNametmResponseTime=ServiceTime+WaitTimeWaitTime=IdleTime+Non-IdleTimeNon-IdleTime=I/0Waits+OtherWaits順序讀取全部索引OandcanbeparallelizedjuAnindexjoinisahashjoinofseveralindexesthattogethIndexJoinHintsYoucanspeci___ toretrievedatafromeachtaJoinMethodTojoineachpairofrowsourcesOraclemustperformajoJoinmethodsincludenestedloopsortmergecartJoinOrderToexecuteastatementthatofthetablesandthenjoinstheresultingrowsourcetothcontinueduntilalltablesarejoinedintothecostaccesscostofAaccesscostocostaccesscostofAtaccesscoThecostofahashjoiniscalculatedbythefollowingformula:Hashjoin盤MergejoinTheoptimizercanchooseasortmeramountsofdataifanyofthefollowingconditionThejoinconditionbetweentwotablesi nTheoptimizerthinksthatthec SELECTCHOSEEMPNOEMPNAMDATINFROMB________SELECTFULLEMPNOEMPNAMFROMBSEMPMSAWHERSELECTROWIDBSEMPMSFROMBSEMPMSWHEREROWIDAAA提示明確說明對指定表選擇簇掃描的訪問方法,它只對簇對象有效.SELECTCLUSTERBSEMPMS__WHEREDPTNOTECANDBSEMPMSDPTNOBSDPTMSDPTN___說明對表選擇索引的掃描方法.SELECTINDEXASCBSEMPMSPKBSEMPMSFROMBSE 為指定表選擇位圖訪問路經(jīng),假如INDEXCOMBINE中沒有提供作為參數(shù)的索引,將選擇出位圖索引的布爾組合方式.SELECTINDEXDESCBSEMPMSPKBSEMPMSFROMB對指定的表執(zhí)行快速全索引掃描,而不是全表掃描的辦法.SELECTINDEXFFSBSEMPMSINEMPNAMFROM提示明確進(jìn)行執(zhí)行規(guī)劃的選擇,將幾個單列索引的掃描合起來.EMPNO='SCOTT’ANDDPTNO='TDC___對查詢中的WHERE后面的OR條件進(jìn)行轉(zhuǎn)換為UNIONALL的組合查詢.SELECTUSECONCATFROMBS__ 擴(kuò)展.能夠?qū)σ晥D的各個查詢進(jìn)行相應(yīng)的合并. 關(guān)于有可合并的視圖不再合并._根據(jù)表出現(xiàn)在FROM中的順序,ORDERED使ORACLE依此順序?qū)ζ溥B接.oradered表示根據(jù)from后面表的順序,從左到右join,左表做驅(qū)動表,3個或者3個以上最有用將指定表與嵌套的連接的行源進(jìn)行連接,并把指定表作為內(nèi)部表.SELECTRDEREDUSENLBSEMPMSBSDPTMSDPTNOBSEMPMSEMPNOBS__將指定的表與其他行源通過合并排序連接方式連接起來.BSEMPMSDPTNOBSDPTMSDPTNO__將指定的表與其他行源通過哈希連接方式連接起來.BSEMPMS.DPTNO=BSDPTMS.DPTNO__強(qiáng)制與ORACLE所選擇的位置不一致的表進(jìn)行查詢執(zhí)行.BSEMPMSDPTNODEPTDPTNO__將指定的表作為連接次序中的首表.當(dāng)進(jìn)行全表掃描時,CACHE提示能夠?qū)⒈淼臋z索塊放置在緩沖區(qū)緩存中最近最少列表LRU的最近使用端SELECTFULLBSEMPMSCAHEBSEMPMSEMPNA當(dāng)進(jìn)行全表掃描時,CACHE提示能夠?qū)⒈淼臋z索塊放置在緩沖區(qū)緩存中最近最少列表LRU的最近使用端SELECTFULLBSEMPMSNOCAHEBSEMPMSEMPNA直接插入到表的最后,能夠提高速度.通過在插入語句生存期內(nèi)停止并行模式來啟動常規(guī)插入.logicio=buffergets是在內(nèi)physicalio=physicalreads是先從磁盤讀到SGA,然后在SGA中讀內(nèi)存塊(buffergets)buffergets=dbblockgets+consistentgetdbblockgets:以currentmode方式讀塊(即只關(guān)心塊的最新狀態(tài)),update、insert、delete等更新操作使用該方式讀塊。它會給數(shù)據(jù)塊帶來最新的改變,因此它并關(guān)心此數(shù)據(jù)塊當(dāng)前是否一致。dbblockgets:currentmode,不管這個塊上的數(shù)據(jù)是否可能存在beforeimage,也就是說不管是否存在回滾中數(shù)據(jù)能夠回滾,只看見當(dāng)前最新塊的數(shù)據(jù),即使別人正在更新,也看見別人更新狀態(tài)的數(shù)據(jù),比如dml的時候就不需要看見別人更換前的數(shù)據(jù),而是看見正在更換的,當(dāng)然同時,若操作相同數(shù)據(jù)則被lock住。也就是說一次查詢中看見的數(shù)據(jù)可能不在同一個時間點上。consistentget:以querymode方式讀塊(關(guān)心塊關(guān)于當(dāng)前session的一致性),select操作使用該方式讀塊。聯(lián)合使用數(shù)據(jù)buffer與回滾buffer來構(gòu)造出一致的數(shù)據(jù)。consistentgets是oracle在查詢開始的時候,所獲得的數(shù)據(jù)務(wù)必是在時間點上一致的。假定查詢開始的時候所有數(shù)據(jù)都是已經(jīng)提交的,查詢開始之后,若數(shù)據(jù)發(fā)生了變化,則查詢需要去從回滾段中獲得變化前的數(shù)據(jù),而若數(shù)據(jù)沒有發(fā)生變化,則不用去回滾段中讀了。不管是否去回滾段中讀,在概念上來講,這種數(shù)據(jù)獲取方式都叫consistentgets。這僅僅表示一種期望,需要獲得一致的時間點的數(shù)據(jù),為此可能需要去回滾段中獲得數(shù)據(jù)但并不表示一定從回滾段中的到數(shù)據(jù)。consistentgets是衡量SQL性能的最重要指標(biāo)!buffergets就能夠懂得為對buffercache中buffer的訪問buffer*次,也能夠看做訪問的buffer數(shù)量,當(dāng)然可能存在著一個buffer被訪問多次的情況buffergets,假如你對10個block總共訪問了500次,關(guān)于統(tǒng)計信息來說就是500buffer是指的一個塊的某個狀態(tài)印像,也就是說任何時候同一個數(shù)據(jù)塊只有一個currentmode,不管user有多少,或者者有多少人在修改同一個塊當(dāng)某個用戶獲取了這個currentmode的時候,只有這個用戶能操作該塊,但同一個塊中假設(shè)刪除5條記錄有5dbblockgets,是考慮到可能有其他用戶進(jìn)程在等待對這個塊的操作,不能較長時間的有自己占用。我想這應(yīng)該是行鎖的一個最基本的機(jī)制?否則并發(fā)的時候就實質(zhì)上是相當(dāng)于對整個塊的鎖了,別人總要等待你對該塊操作完才能進(jìn)行操作。假如你們要考究如何計算出來的,那是另外一個話題在8i中讀數(shù)據(jù)字典信息,大約FTS要加上4dbblockgets在9i中由于cachebufferchains的訪問對只讀訪問不再互斥,則數(shù)據(jù)字典的獲取不再是physicalreadsTotalnumberofdata
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 茅臺酒戰(zhàn)略市場規(guī)劃報告
- 前期接入服務(wù)合同范本模板
- 公租房置換合同范本
- 歷制作合同范本
- 廚房冰箱轉(zhuǎn)讓合同范例
- 食堂托管經(jīng)營合同范本
- 云南公路合同范本
- 獸醫(yī)傳染病學(xué)試題庫含答案
- 醫(yī)療服務(wù)合同范例隱私
- 司機(jī)補(bǔ)充協(xié)議合同范本
- 《節(jié)水評價技術(shù)導(dǎo)則》
- 課件:《中華民族共同體概論》第一講 中華民族共同體基礎(chǔ)理論
- 2024年貴州省貴陽市中考生物試題(含答案逐題解析)
- 常用橋牌詞語(中英文對照)
- 加盟招商方案PPT模板
- 中石油HSE培訓(xùn)試題集(共33頁)
- 噴(烤)漆房VOCs治理設(shè)施日常運行臺賬
- 往復(fù)式壓縮機(jī)組單機(jī)試運方案
- 區(qū)域環(huán)境概況
- 爆破片面積計算
- 設(shè)備安裝檢驗批表格
評論
0/150
提交評論