閱讀700 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Oracle中的表空間

 

表空間是數據庫的邏輯劃分,一個表空間隻能屬於一個數據庫。所有的數據庫對象都存放在指定的表空間中。但主要存放的是表, 所以稱作表空間。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'
size 50m 
autoextend on 
next 50m maxsize 20480m 
extent management local;  
 
第3步 創建用戶並指定表空間
create user username identified by password 
default tablespace user_data 
temporary tablespace user_temp;  
 

第4步 給用戶授予權限
grant connect,resource,dba to username;

 

 

原帖地址

https://baike.baidu.com/view/70152.htm

https://www.cnblogs.com/netsql/articles/1745978.html

 

 

最後更新:2017-04-02 16:48:10

  上一篇:go 代碼審查最佳實踐
  下一篇:go Serializable與Parcelable傳遞對象詳解(activity間傳遞對象方式)