表空間概述
Oracle的表空間屬於Oracle中的存儲結構,是一種用於存儲數據庫對象(如:數據文件)的邏輯空間,是Oracle中信息存儲的最大邏輯單元,其下還包含有段、區、數據塊等邏輯數據類型。表空間是在數據庫中開辟的一個空間,用於存放數據庫的對象,一個數據庫可以由多個表空間組成。可以通過表空間來實現對Oracle的調優。(Oracle數據庫獨特的高級應用)
表空間的分類
永久表空間:存儲數據庫中需要永久化存儲的對象,比如二維表、視圖、存儲過程、索引。
臨時表空間:存儲數據庫的中間執行過程,如:保存order by數據庫排序,分組時產生的臨時數據。操作完成后存儲的內容會被自動釋放。臨時表空間是通用的,所的用戶都使用TEMP作為臨時表空間。一般只有tmp一個臨時表空間,如果還需要別的臨時表空間時,可以自己創建。
UNDO表空間:保存數據修改前的副本。存儲事務所修改的舊址,即被修改之前的數據。當我們對一張表中的數據進行修改的同時會對修改之前的信息進行保存,為了對數據執行回滾、恢復、撤銷的操作。
查看system用戶的默認表空間和臨時表空間:
select DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where username='SYSTEM';
默認表空間
用戶在登陸后創建數據庫對象時,如果沒有指定表空間,那么這些數據就會存儲到默認表空間。
查看默認的永久表空間
注意:如果創建用戶時,不指定其永久表空間,則會使用默認的表空間。
SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES;
查看默認的TEMP表空間
系統管理員:
SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
普通用戶:
SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS
查看默認的表空間類型
注意:如果不指定表空間類型,就會默認使用DEFAULT_TBS_TYPE參數指定的表空間類型。
SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TBS_TYPE';
邏輯結構到物理結構的映射
表空間與數據文件:表空間實際上是由若干個數據文件來構成的,數據文件的位置和大小可以由我們自己來決定。數據被存放在表空間中的數據文件中。
注意:表空間是一種邏輯數據結構,其下最小的數據塊會映射到物理結構的磁盤塊中,一個數據塊由若干個磁盤塊組成。
或者由下圖來理解:表空間邏輯上有若干個段組成,物理上由多個數據文件組成。
對表空間的操作
表空間的操作方式:
字典管理:Oracle中的數據字典可以存儲所有的表空間分配信息,但是如果數據庫中所有的空間分配都放在數據字典中。容易引起字典爭用,而導致性能問題,這是Oracle調優的方向之一。
本地管理:表空間分配不放在數據字典,而在每個數據文件頭部的第3到第8個塊的位圖塊,來管理空間分配。