oracle 區管理和段空間管理小結

2021-08-27 07:03:12 字數 2175 閱讀 4674

作為一名dba,常見的乙個場景之一:

建立表空間:

create tablespace think 

autoextend on next 10m maxsize 4096m

extent management local uniform size 256k

segment space management auto;

建立使用者:

create user bin

default tablespace think

temporary tablespace temp;

授予許可權:

grant connect,resource to bin;

revoke unlimited tablespace from bin;

alter user bin quota unlimited on think;

在這個場景中,有兩條語句:

① extent management local uniform size 256k

② segment space management auto

其中,前者是區管理;後者則是段空間管理

㈠ 區管理

區管理實際上就是表空間的管理

8i以前,是字典管理表空間,當建立或刪除物件時,oracle的空間分配或**是通過資料字典來記錄和管理

在高併發系統中,這會導致效能衰減、空間碎片等難題

這已經是門過去的技術,這裡就不贅述了。

8i開始,oracle引入本地表空間管理

在每個表空間的資料檔案的頭部加入了乙個位圖區域

乙個段的第乙個區的第乙個塊是first level bitmap block

第二個塊是second level bitmap block

第三個塊才是段頭塊

這兩個塊是用來管理free block

語法:extent management local

是自動分配還是統一尺寸

若為自動分配,則oracle會按照遞增演算法來分配空間

如果選擇統一尺寸,還可以詳細指定每個區間的大小

dba_extents這個檢視可以看到哪些物件分配了多少區間

㈡ 段空間管理

oracle以區間為單位將空間分配給物件段,而段內則是以block為單位進行空間使用和管理

我們以幾個引數來理解段空間管理

sys@orcl> select extent_management,segment_space_management from dba_tablespaces;

extent_man segmen

---------- ------

local manual

local manual

local auto

local manual

local manual

從9i開始,段空間管理有兩種:

① mssm:由你設定freelists、freelist groups、pctused、pctfree、initrans等引數來控制如何分配、使用段中的空間

② assm:你只需控制乙個引數pctfree,其他引數即使建了也將被忽略

⑴ freelist

使用mssm表空間管理時,oracle會在freelist中為有自由空間的物件維護hwm以下的塊

freelist和freelist group在assm表空間中根本不存在,僅在mssm表空間使用這個技術

⑵ pctfree 和 pctused

pctfree告訴oracle:塊上應該保留多大的空間來完成將來的更新

對於mssm,她控制著塊何時放入freelist中,以及何時從freelist中取出。

如果大於pctfree,則這個塊會一直在freelist上

對於assm,因為assm根本不使用freelist。在assm中,pctused也將被忽略。

但她仍然會限制能否將乙個新行插入到乙個塊中

適當的設定pctfree有助於減小行遷移

⑶ initrans

無論是assm or mssm這個引數仍然有效

塊頭的事務槽的初始化大小有物件的initrans指定

Oracle 表空間的段管理

當使用者進行插入 更新和刪除操作時,段中的資料塊的空間會發生變化,塊的狀態也會發生變化。oracle使用兩種方法進行塊管理 手動管理 manual segment space management 自動管理 automatic segment space management,assm 1 手動管理...

表空間管理,段管理

字典表空間管理 用2個use free 2個表管理所有資料檔案中的所有區 本地表空間管理 每個資料檔案用位圖管理各自檔案內部的區 高併發 手動段管理 mssm 用freelist管理資料塊,但是很難控制freelist的個數,如果freelist太少會引起競爭,而且對資料塊的使用程度處理的不合理 自...

Oracle表空間 段 區和塊簡述

本文 自 在oracle學習過程中,儲存結構,表段區塊可能是每個初學者都要涉及到的概念。表空間 段 分割槽和資料塊分別表示了oracle進行資料儲存的不同層次和結構。了解清楚這幾個結構,有助於我們奠定乙個穩固的學習基礎,而且對於理解oracle工作原理也有重要作用。本文採用從小到大,逐步拓展的方式介...