綠色資源(yuán)網:您身邊最放心(xīn)的安全下載站! 最新軟件|熱門排行|軟件(jiàn)分類|軟件專題|廠商大全

綠色資源網

技術教(jiāo)程(chéng)
您的位置:首頁數據庫類Oracle → Oracle 數據庫碎片整理

Oracle 數據庫碎片(piàn)整理

我要評論 2009/05/12 12:01:37 來源:綠色資源網 編輯:編輯整理(lǐ) [ 小(xiǎo)] 評論:0 點擊(jī):346次

我們知道,oracle作為一種大型(xíng)數據庫,廣泛應用於金融、郵電、電力、民航等數據吞吐量巨大,計算機網絡廣泛普及的重要部門。對於係統管理員來(lái)講,如何保證網絡穩定運行,如何提(tí)高數據庫性能,使其更加安全高效,就顯得尤為(wéi)重要。作為影響數據庫性能的一大因素--數據庫碎片,應當引(yǐn)起dba的足夠重(chóng)視,及(jí)時 發現並整理碎片乃是dba一項基本維(wéi)護內容。  
---- 1、碎片(piàn)是如何產生的  

---- 當生成一(yī)個數據庫時,它會分成稱為表空間(tablespace)的(de)多個邏輯段(segment),如係統(system)表空間,臨時(temporary)表空間等。一個(gè)表空間可以包含多(duō)個數(shù)據範圍(extent)和一個(gè)或多個自由範圍塊,即自由空間(free space)。  

---- 表空間、段、範圍、自由空間的邏輯(jí)關係如(rú)下:  

---- 當表空間中生成一個段時,將從(cóng)表空間有效自由空間(jiān)中為這個段的初始範圍分配(pèi)空間。在這些初始(shǐ)範圍充滿數據(jù)時,段會請求增加另一個範圍。這(zhè)樣(yàng)的擴展過程會一直繼續(xù)下去,直(zhí)到達到最大的範圍值,或者在表空間中已經沒有自由(yóu)空間(jiān)用於下一個範圍。最理想的狀態就是一個(gè)段的數據可(kě)被(bèi)存在單(dān)一的一個(gè)範圍(wéi)中 。這樣,所有(yǒu)的數據存儲時靠近段內其它數據(jù),並且尋(xún)找數據可少用一些指針。但是一個(gè)段包含多個(gè)範圍的情況是大量存在的,沒有任何措施可以保證這些範圍(wéi)是相鄰存儲(chǔ)的,如圖〈1〉。當要滿足一個(gè)空間要求時,數(shù)據庫(kù)不再合並相鄰的自由範圍(除非別無選擇), 而是尋找(zhǎo)表空間中最大的自由範圍來使用。這樣(yàng)將(jiāng)逐漸形成越來越多的離散(sàn)的、分隔的、較小(xiǎo)的自由空間,即碎片。例如:  

---- 2、碎(suì)片(piàn)對係統的影響  

---- 隨著時間推移(yí),基於數據庫的應用係統的廣泛使用,產生的碎片會越來越多,將對數據(jù)庫有(yǒu)以下兩點(diǎn)主要影響:  

---- (1)導致係統(tǒng)性能減弱  

---- 如上所述,當要(yào)滿足一個空間要求時,數據庫將首先查找當前最大的自(zì)由範圍,而"最大"自由範圍逐漸變(biàn)小,要找到一個足(zú)夠大的自由範圍已(yǐ)變得越來越困(kùn)難,從而導致表空間(jiān)中(zhōng)的速度障礙,使數據庫的(de)空(kōng)間分配愈發遠離理想狀態;  


---- (2)浪費大(dà)量的表(biǎo)空間  

---- 盡管有一(yī)部分自由範圍(如表空間的pctincrease為非0)將會被smon(係統監控)後台進程周(zhōu)期性地合並,但始終有一部分自由範圍無法得以(yǐ)自動合並,浪費了大(dà)量的表空間。  

---- 3、自由範圍的碎片計算  

---- 由於自由空間碎片是由幾部分組成,如範圍數量、最大範圍尺寸等,我們可用fsfi--free space fragmentation index(自由空間碎片索引)值來直觀體現(xiàn):  

fsfi=100*sqrt(max(extent)/sum(extents))*1/sqrt(sqrt(count(extents))) 

---- 可以看出(chū),fsfi的最大可能值為100(一個(gè)理(lǐ)想(xiǎng)的單文件表空間)。隨(suí)著範圍的增加,fsfi值緩慢下降,而隨著最(zuì)大範圍尺寸(cùn)的減少(shǎo),fsfi值(zhí)會迅(xùn)速下降。
  
---- 下麵的腳本可以用來計算(suàn)fsfi值:  

    rem    fsfi value compute 
    rem    fsfi.sql 
    column fsfi format 999,99 
    select tablespace_name,sqrt(max(blocks)/sum(blocks))* 
           (100/sqrt(sqrt(count(blocks)))) fsfi 
    from dba_free_space 
    group by tablespace_name order by 1; 
    spool fsfi.rep; 
    / 
    spool off; 

---- 比如,在某數據庫運行腳本fsfi.sql,得到以下fsfi值:  
    tablespace_name                   fsfi 
    ------------------------------ ------- 
    rbs                              74.06 
    system                          100.00 
    temp                             22.82 
    tools                            75.79 
    users                           100.00 
    user_tools                      100.00 
    ydcx_data                        47.34 
    ydcx_idx                         57.19 
    ydjf_data                        33.80 
    ydjf_idx                         75.55 

---- 統計出了數據庫的fsfi值(zhí),就可以把它(tā)作(zuò)為一個可比參數。在一個有著足夠(gòu)有效自由(yóu)空間,且fsfi值超過30的表空間中,很少會遇見有(yǒu)效自由空間的問題。當一個(gè)空間將要接近可比參數時,就需要做碎片整理了。  
---- 4、自由範圍的碎片整理  

---- (1)表空間的pctincrease值為非0  

---- 可以將表空間的缺省存儲參數pctincrease改為非0。一般將其設(shè)為1,如: 

       alter tablespace temp 
       default storage(pctincrease 1); 

---- 這樣smon便會(huì)將自由範圍(wéi)自動合並。也可以手(shǒu)工合並自由範圍:  
       alter tablespace temp coalesce; 

---- 5、段的碎片整理  
---- 我們知道,段由範圍組成。在有些情況下,有必要對段(duàn)的碎片進行整理(lǐ)。要查看段的有關信息,可查看數據字典dba_segments,範圍的信息可(kě)查看數據字典(diǎn)dba_extents。如果段的碎片過多, 將其數(shù)據壓縮(suō)到一個範圍的最簡單方法便是(shì)用正確的存儲參數將這個段重建,然後將舊表中的數據插入(rù)到新表,同時(shí)刪除舊表。這(zhè)個過程可以用import/export(輸入/輸出)工(gōng)具(jù)來完成。  

---- export()命令有一個(壓縮)標誌,這個標誌在讀表時會引發export確定該表所分配的(de)物理空間量,它會向輸出轉儲文件寫入一個新的初始化存儲參數-- 等(děng)於全部所分配空間。若這個表關閉, 則使用import()工具(jù)重新生成。這樣,它(tā)的數據會放入一個新的(de)、較大的初始段中。例如:  

exp user/password file=exp.dmp compress=y grants=y indexes=y 
        tables=(table1,table2); 

---- 若輸出成(chéng)功,則從庫中刪(shān)除已輸出的表,然後從輸出轉儲文件(jiàn)中輸入表: 

imp user/password file=exp.dmp commit=y buffer=64000 full=y 

---- 這種方法可用於整個數據庫。  
---- 以上(shàng)簡(jiǎn)單分

關鍵詞:Oracle,數據庫,碎片整理

閱讀本文後您有什麽(me)感想? 已有 人給出評價!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡