建立和管理表空間
建立表空間
典型語句:
1create
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 對應乙個或多個物理塊 表空間是最大的邏輯單位,塊是最小的邏...