ORACLE的表索引失效,需要重建, 如何查看表里是否有臟數(shù)據(jù)?
創(chuàng)新互聯(lián)服務(wù)項目包括寧海網(wǎng)站建設(shè)、寧海網(wǎng)站制作、寧海網(wǎng)頁制作以及寧海網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,寧海網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到寧海省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
臟數(shù)據(jù)在 內(nèi)存里,只要是存在物理存儲設(shè)備上的數(shù)據(jù)都是干凈的。 ]
索引失效并不會影響表中的數(shù)據(jù)的。
臟數(shù)據(jù)就是已經(jīng)寫入到內(nèi)存里,但是還沒有寫入到硬盤上的數(shù)據(jù)。一般當(dāng)事物沒有提交的時候會產(chǎn)生,當(dāng)事物提交以后,臟數(shù)據(jù)就會被寫進硬盤的數(shù)據(jù)塊,這時他就不叫臟數(shù)據(jù)了。
A B 兩用戶,A 在10點更改X表的10到20 但一直未提交,B在10:30 要讀取X表的A更改的那條記錄的值,這時恰好B要讀取的塊在內(nèi)存里面(由于A更改需要把數(shù)據(jù)讀取到內(nèi)存)。這時候有幾種情況,假如此時ORACLE允許B讀取到A更改后但未提交的數(shù)據(jù),這時就發(fā)生了臟讀。另外就是不讓B讀取到A的更改,讀取到A更改以前的數(shù)據(jù),這時就發(fā)生了一致性讀。一致性讀會從現(xiàn)在的臟塊和undo記錄 構(gòu)造一個CR塊 構(gòu)造出來的CR塊與磁盤上的塊是一致的 我的理解是這樣的 當(dāng)然情況不只上面這一種,很多種情況 建議你看看 oracle隔離級別 相關(guān)的文章 應(yīng)該會有用
臟數(shù)據(jù)是相對于原數(shù)據(jù)而言的,是指被修改過的,與原數(shù)據(jù)不一樣的數(shù)據(jù)。
在oracle有SGA中,有個數(shù)據(jù)高速緩沖區(qū)(database buffer cache),由許多大小相等的緩存塊組成。這些塊根據(jù)使用情況不同,可分為臟緩沖塊、空閑緩存塊和命中緩存塊三類:
1. 臟緩存塊(dirty buffers):它保存的是已經(jīng)被修改過的數(shù)據(jù)。當(dāng)一條SQL語句對某個緩存塊中的數(shù)據(jù)進行修改后,這個緩存塊就被標(biāo)記為臟緩存塊。
2. 空閑緩存塊(free buffers):不包含任何數(shù)據(jù),它們等待后臺進程或服務(wù)器進程向其中寫入數(shù)據(jù)。當(dāng)oracle從數(shù)據(jù)文件中讀取數(shù)據(jù)時,將會尋找空閑緩存塊,以便將數(shù)據(jù)寫入其中。
3. 命中緩存塊(pinned buffers):是那些正被使用,或者被顯式地聲明為保留的緩存塊。這些緩存塊始終保留在數(shù)據(jù)高速緩沖區(qū)中,不會被換出。
一,臟數(shù)據(jù):
1,臟數(shù)據(jù)就是讀到database buffer cache做了修改但還沒有寫到datafile里面的數(shù)據(jù),只要沒有寫入數(shù)據(jù)文件,不管是否提交,都可以稱為臟數(shù)據(jù)。
2,另外一個表的外鍵,由于某些原因,這個外鍵關(guān)聯(lián)失效了,但是這個外鍵列沒有刪除,那么這一列數(shù)據(jù)也可以稱為臟數(shù)據(jù),就是沒有意思的或者冗余的數(shù)據(jù)都可以叫做臟數(shù)據(jù)。
二,臟塊
存放臟數(shù)據(jù)的數(shù)據(jù)塊(data block)就可以稱為臟塊。