當前位置:成語大全網 - 書法字典 - 梳理數據字典

梳理數據字典

壹.碎片是如何形成的

在創建數據庫實例時,它將被分成幾個稱為表空間的邏輯段,例如系統表空間和臨時表空間。壹個表空間可以包含多個數據區和壹個或多個自由範圍塊,即自由空間。

表空間、段、範圍和空閑空間之間的邏輯關系如下:

在表空間中生成段時,將從表空間的有效空閑空間中為該段的初始範圍分配空間。當這些初始範圍充滿數據時,該段將請求添加另壹個範圍。這個擴展過程將壹直持續,直到達到最大範圍值,或者表空間中沒有空閑空間用於下壹個範圍。

理想狀態是壹個段的數據可以存儲在單個範圍內。這樣,所有數據都存儲在靠近段中其他數據的位置,並且可以少用壹些指針來查找數據。然而,在很多情況下,壹個段包含多個範圍,並且沒有措施來確保這些範圍被相鄰地存儲。當要滿足壹個空間需求時,數據庫將不再合並相鄰的空閑範圍(除非沒有其他選擇),而是在表空間中找到最大的空閑範圍來使用。這樣就會逐漸形成越來越多的離散的、分離的、更小的自由空間,也就是碎片。

表空間段區塊關系

按下=y

grants = y indexes = y tables =(table 1,table 2);

導出成功後,刪除庫中的這兩個表,並導入數據:

imp用戶/密碼文件=exp.dmp commit=y buffer=64000表=(table1,table 2);

除了exp/imp,還可以使用shrink table或alter table tbname move。

具體參考:

Oracle 10g收縮表的詳細說明

/天樂軟件/archive/2009/11/03/4764254 . aspx

壹個小腳本:

-1.清理空間碎片;

tmp _ val varchar 2(500);

開始

對於REC IN(從用戶表中選擇表名)

tmp_val:='ALTER TABLE '||user。TABLE _ NAME | | ' MOVE

開始

立即執行tmp _ val

DBMS _ output . put _ line(tmp _ val);

例外

當別人

然後

DBMS_OUTPUT.put_line('錯誤:' || tmp_val || '!');

結束;

結束循環;

(2)索引段的碎片整理

重建索引(碎片整理後,很多索引會變得不可用,重建後,讓它變成void)

對於REC IN(SELECT INDEX _ NAME FROM USER _ INDEXES)-其中STATUS='UNUSABLE '

tmp_val:='ALTER INDEX '||REC。INDEX _ NAME | | ' REBUILD

開始

立即執行tmp _ val

DBMS _ output . put _ line(tmp _ val);

例外

當別人

然後

DBMS_OUTPUT.put_line('錯誤:' || tmp_val || '!');

結束;

結束循環;

結束;