Oracle 儲存結構二

2022-09-14 02:21:08 字數 4027 閱讀 6685

建立和管理表空間

建立表空間

典型語句:

1

create

smallfile tablespace "jwts"

2 datafile '

'3 size 100m autoextend on

next

10m maxsize 200m

4loggin

5default

nocompress

6online

7extent management local autoallocate

8 segment space management auto;

第1行:表空間使smallfile。這意味著,它可以由多個資料檔案組成。替換項是bigfile,在這種情況下,將無法在後來新增第二個資料檔案(但可以重新調整第乙個檔案的大小)。smallfile是預設值。

第2行:資料檔案的名稱和位置

第3行:建立的資料檔案大小是100mb,變滿時,可以自動擴大10mb,最大為200mb。預設方式下,不會啟用自動擴充套件

第4行:表空間中針對段的所有操作將生成重做內容,這是預設做法。可以為極少操作(如生成索引)僅用重做的生成

第5行:表空間中的物件未壓縮。這是預設方式

第6行:表空間將立即聯機(可供使用)。這是預設方式

第7行:表空間使用點陣圖來分配空間,其大小會自動設定,這是預設方式

第8行:表空間中的段將使用點陣圖來跟蹤塊的使用情況,這是預設方式

更改表空間

1.重新命名表空間及其資料檔案

alter  tablespace oldname rename to newname;

可以在表空間使用期間對其進行重新命名,但要重新命名資料檔案,資料檔案必須處於離線狀態。

2.使表空間聯機或離線

alter  tablespace tablespacename offline [ normal | immediate | temporary ];

alter  tablespace tablespacename online;

3.將表空間標記為唯讀

alter  tablespace tablespacename [ read only | read write ];

將表空間標記為唯讀後,將不能使用dml語句來更新其中的任何物件。但是可以刪除它們,刪除表並不對錶產生實際影響,它是針對資料字典的事務,會刪除描述表及其列的行:資料字典位於system表空間,此表空間並不是唯讀的。 

4.重新調整表空間的大小

要重新調整表空間的大小,可以向其新增資料檔案,也可以調整現有資料檔案的大小。如果在建立檔案時使用autoextend語法,則可以根據需要自動向上重新調整資料檔案的大小。否則,必須使用命令手動更改:

alter  database datafile 'filename' resize n[ m | g | t ];

新增資料檔案:

alter  database add datafile 'filename' size n[ m | g | t ];

建立檔案時,可以新增自動擴充套件子句:

alter  database datafile 'filename' autoextend on next n[ m | g | t ] maxsize n[ m | g | t ] ;

刪除表空間

drop tablespace tablespacename [ include contents [ and datafiles ] ];

如為指定include contents關鍵字,但表空間中包含任何物件,那麼刪除操作將失敗。使用這些關鍵字指示oracle首先刪除物件,然後刪除表空間。即便如此,在一些環境下同樣會失敗,如果表空間包含的表與另乙個表空間的表存在外來鍵關係,而且此表是父表,則刪除將失敗。

如果未指定and datafiles關鍵字,則將刪除表空間及其內容,但資料檔案仍儲存在磁碟上。oracle將不了解它們位於何處,必須使用作業系統命令刪除它們。

區間管理

區間管理方法為每個表空間設定,應用於表空間中的所有段。字典管理已不建議使用。

本地區間管理使用在每個資料檔案中儲存的點陣圖。點陣圖中的每個位覆蓋乙個塊的範圍,在分配空間時,適當的位從0變成1。在建立本地管理的表空是,乙個重要的選項是unform size。如果指定了此選項,那麼,在表空間中分配的每個區間將使用此大小。這極大地提高了空間管理效率,因為每個位覆蓋的塊範圍可以更大:每個區間只需一位。

預設語法:

create tablespace any_tabs

datafile 'any_tabs_01.dbf' size 10g

extent management local autoallocate;

在表空間中建立多個段時,oracle將分配乙個8塊(64kb)的區間。隨著段的增長,將需要更多區間,oracle最多可分配16個這樣大小的區間,之後它會分配128塊(1mb)的區間。因此,在不斷增加的塊中為快速增長的段提供空間。

如果資料庫從先前版本公升級而來,則可能包括字典管理的表空間,檢查語句:

select tablespace_name, extent_management from dba_tablespaces;

使用下面的pl/sql程式,將任何字典管理的表空間轉換為本地管理:

excute dbms_space_admin.tablespace_migrate_to_local ('tablespacename');

管理段空間

管理段空間的方法為每個表空間設定,應用於表空間中所有的段。不建議使用手動管理。

自動管理表空間方式建立的每個段都有一組位圖,位圖描述每個塊的滿度。每個段有5個位圖,乙個塊將恰好位於乙個點陣圖上。位圖跟蹤塊中使用的空間:乙個位圖用於全滿塊,多個位圖用於滿度為75%~100%的塊、50%~75%的塊、25%~50%的塊、0%~25%的塊。當搜尋在其中插入行的塊時,會話伺服器程序將首先檢視行的大小來確定要搜尋的點陣圖。例如,如果塊大小是4kb,而要插入的行是1500b,則將通過搜尋滿度為25%~50%的位圖來找到適當的塊。此位圖中的每個塊至少有2kb的可用空間。隨著行的插入或刪除,或通過更新更改大小,點陣圖將自動更新。

要檢視任何表空間是否在使用手動管理,執行此查詢:

select tablespace_name, segment_space_management from dba_tablespaces;

此查詢應返回的唯一表空間是system、撤銷表空間和臨時表空間。這些表空間中的段由oracle管理,不需要任何自動機制的幫助。無法將表空間從手動段空間管理轉換為自動段空間管理。唯一的解決方案是使用自動段空間管理方法新建表空間,將段移入其中(此時將生成位圖),並刪除舊的表空間。

omf

有了oracle管理的檔案(oracle-managed files,omf),dba將不必了解有關檔案系統的任何知識。將以完全自動的方式完成資料庫檔案的建立。要啟用omf,請設定一部分或所有下列例項引數:

db_create_file_dest

db_create_online_log_dest_1

db_create_online_log_dest_2

db_create_online_log_dest_3

db_create_online_log_dest_4

db_create_online_log_dest_5

db_recovery_file_dest

db_create_file_dest引數指定獨有資料檔案和聯機重做日誌檔案的預設位置。

db_create_online_log_dest_n引數指定聯機重做日誌檔案的預設位置,且優先於db_create_file_dest。

db_recovery_file_dest設定歸檔重做日誌檔案和rman備份檔案的預設位置。

除了預設檔案位置外,omf還生產檔名並在預設方式下設定檔案大小。設定這些引數可以極大地簡化與檔案相關的操作。啟用omf後,始終可以通過create tablespace命令上指定資料檔名執行重寫操作。

oracle儲存結構

oracle儲存結構 物理結構 資料檔案,日誌檔案,控制檔案 邏輯結構 從儲存結構分 物理儲存和邏輯儲存,物理儲存結構式檔案組成的。3種檔案 資料檔案dbf,控制檔案ctl,重做日誌檔案 log 資料檔案 dbf 頻繁訪問的資料會存在資料緩衝區中,oracle先從快取區中找,找不到從資料庫檔案中找,...

Oracle儲存結構

oracle資料庫的儲存結構分為邏輯儲存結構和物理儲存結構.邏輯儲存結構主要描述oracle資料庫的內部儲存結構,即從技術概念上描述在oracle資料庫種如何組織 管理資料.因此,邏輯儲存結構是和作業系統平台無關的,是由oracle資料庫建立和管理的.從邏輯上來看.資料庫是由乙個或者多個表空間等組成...

oracle儲存結構

分邏輯結構和物理結構兩條路線。邏輯結構從邏輯上來看.資料庫是由乙個或者多個表空間等組成。乙個表空間 tablespace 由一組段組成,乙個段 segment 由一組區組成,乙個區 extent 由一批資料庫塊組成,乙個資料庫塊 block 對應乙個或多個物理塊 表空間是最大的邏輯單位,塊是最小的邏...