表空間是資料庫的邏輯劃分,一個表空間隻能屬于一個資料庫。所有的資料庫對象都存放在指定的表空間中。但主要存放的是表, 是以稱作表空間。Oracle資料庫中至少存在一個表空間,即SYSTEM的表空間。
SQL Server資料庫與Oracle資料庫之間最大的差別要屬表空間設計。Oracle資料庫開創性地提出了表空間的設計理念,這為Oracle資料庫的高性能做出了不可磨滅的貢獻。可以這麼說,Oracle中很多優化都是基于表空間的設計理念而實作的。
典型應用一:控制使用者所占用的表空間配額
在一些大型的資料庫應用中,我們需要控制某個使用者或者某一組使用者其所占用的磁盤空間。這就好像在檔案伺服器中,需要為每個使用者設定磁盤配額一樣,以防止硬碟空間耗竭。是以,在資料庫中,我們也需要限制使用者所可以使用的磁盤空間大小。為了達到這個目的,我們就可以通過表空間來實作。
我們可以在Oracle資料庫中,建立不同的表空間,為其設定最大的存儲容量,然後把使用者歸屬于這個表空間。如此的話,這個使用者的存儲容量,就受到這個表空間大小的限制。
典型應用二:控制資料庫所占用的磁盤空間
有時候,在Oracle資料庫伺服器中,可能運作的不止一個服務。除了資料庫伺服器外,可能還有郵件伺服器等應用系統伺服器。為此,就需要先對Oracle資料庫的磁盤空間作個規劃,否則,當多個應用程式服務所占用的磁盤空間都無限增加時,最後可能導緻各個服務都因為硬碟空間的耗竭而停止。是以,在同一台伺服器上使用多個應用程式服務,我們往往需要先給他們進行磁盤空間的規劃和配置設定。各個服務都不能夠超過我們配置設定給他的最大限額,或者超過後及時的提醒我們。隻有這樣,才能夠避免因為磁盤空間的耗竭而導緻各種應用服務的崩潰。
典型應用三:靈活放置表空間,提高資料庫的輸入輸出性能
資料庫管理者還可以将不同類型的資料放置到不同的表空間中,這樣可以明顯提高資料庫輸入輸出性能,有利于資料的備份與恢複等管理工作。因為我們資料庫管理者在備份或者恢複資料的時候,可以按表空間來備份資料。如在設計一個大型的分銷系統背景資料庫的時候,我們可以按省份建立表空間。與浙江省相關的資料檔案放置在浙江省的表空間中,北京發生業務記錄,則記錄在北京這個表空間中。如此,當浙江省的業務資料出現錯誤的時候,則直接還原浙江省的表空間即可。很明顯,這樣設計,當某個表空間中的資料出現錯誤需要恢複的時候,可以避免對其他表空間的影響。
另外,還可以對表空間進行獨立備份。當資料庫容量比較大的時候,若一下子對整個資料庫進行備份,顯然會占用比較多的時間。雖然說Oracle資料庫支援熱備份,但是在備份期間,會占用比較多的系統資源,進而造成資料庫性能的下降。為此,當資料庫容量比較大的時候,我們就需要進行設定多個表空間,然後規劃各個表空間的備份時間,進而可以提高整個資料庫的備份效率,降低備份對于資料庫正常運作的影響。
典型應用四:大表的排序操作
我們都知道,當表中的記錄比較多的時候,對他們進行查詢,速度會比較慢。第一次查詢成功後,若再對其進行第二次重新排序,仍然需要這麼多的時間。為此,我們在資料庫設計的時候,針對這種容量比較大的表對象,往往把它放在一個獨立的表空間,以提高資料庫的性能。
典型應用五:日志檔案與資料檔案分開放,提高資料庫安全性
預設情況下,日志檔案與資料檔案存放在同一表空間。但是,這對于資料庫安全方面來說,不是很好。是以,我們在資料庫設計的過程中,往往喜歡把日志檔案,特别是重做日志檔案,放在一個獨立的表空間中,然後把它存放在另外一塊硬碟上。如此的話,當存放資料檔案的硬碟出現故障時,能夠馬上通過存放在另一個表空間的重做日志檔案,對資料庫進行修複,以減少企業因為資料丢失所帶來的損失。
下面來看一個執行個體
第1步 建立臨時表空間
create temporary tablespace user_temp
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
第2步 建立資料表空間
create tablespace test_data
logging
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'
第3步 建立使用者并指定表空間
create user username identified by password
default tablespace user_data
temporary tablespace user_temp;
第4步 給使用者授予權限
grant connect,resource,dba to username;
原帖位址
<a href="http://baike.baidu.com/view/70152.htm">http://baike.baidu.com/view/70152.htm</a>
<a href="http://www.cnblogs.com/netsql/articles/1745978.html">http://www.cnblogs.com/netsql/articles/1745978.html</a>