English

表空間的典型應用

表空間是數據庫的邏輯劃分(fēn),一(yī)個表空間隻能屬于一(yī)個數據庫。所有的數據庫對象都存放(fàng)在指定的表空間中(zhōng)。但主要存放(fàng)的是表, 所以稱作表空間。

Oracle數據庫中(zhōng)至少存在一(yī)個表空間,即SYSTEM的表空間。SQL Server數據庫與Oracle數據庫之間最大(dà)的區别要屬表空間設計。Oracle數據庫開(kāi)創性地提出了表空間的設計理念,這爲Oracle數據庫的高性能做出了不可磨滅的貢獻。可以這麽說,Oracle中(zhōng)很多優化都是基于表空間的設計理念而實現的。

典型應用一(yī):

控制用戶所占用的表空間配額。在一(yī)些大(dà)型的數據庫應用中(zhōng),我(wǒ)們需要控制某個用戶或者某一(yī)組用戶其所占用的磁盤空間。這就好像在文件服務器中(zhōng),需要爲每個用戶設置磁盤配額一(yī)樣,以防止硬盤空間耗竭。所以,在數據庫中(zhōng),我(wǒ)們也需要限制用戶所可以使用的磁盤空間大(dà)小(xiǎo)。爲了達到這個目的,我(wǒ)們就可以通過表空間來實現。我(wǒ)們可以在Oracle數據庫中(zhōng),建立不同的表空間,爲其設置最大(dà)的存儲容量,然後把用戶歸屬于這個表空間。如此的話(huà),這個用戶的存儲容量,就受到這個表空間大(dà)小(xiǎo)的限制。

典型應用二:

控制數據庫所占用的磁盤空間。有時候,在Oracle數據庫服務器中(zhōng),可能運行的不止一(yī)個服務。除了數據庫服務器外(wài),可能還有郵件服務器等應用系統服務器。爲此,就需要先對Oracle數據庫的磁盤空間作個規劃,否則,當多個應用程序服務所占用的磁盤空間都無限增加時,最後可能導緻各個服務都因爲硬盤空間的耗竭而停止。所以,在同一(yī)台服務器上使用多個應用程序服務,我(wǒ)們往往需要先給他們進行磁盤空間的規劃和分(fēn)配。各個服務都不能夠超過我(wǒ)們分(fēn)配給他的最大(dà)限額,或者超過後及時的提醒我(wǒ)們。隻有這樣,才能夠避免因爲磁盤空間的耗竭而導緻各種應用服務的崩潰。

典型應用三:

靈活放(fàng)置表空間,提高數據庫的輸入輸出性能。數據庫管理員(yuán)還可以将不同類型的數據放(fàng)置到不同的表空間中(zhōng),這樣可以明顯提高數據庫輸入輸出性能,有利于數據的備份與恢複等管理工(gōng)作。因爲我(wǒ)們數據庫管理員(yuán)在備份或者恢複數據的時候,可以按表空間來備份數據。如在設計一(yī)個大(dà)型的分(fēn)銷系統後台數據庫的時候,我(wǒ)們可以按省份建立表空間。與浙江省相關的數據文件放(fàng)置在浙江省的表空間中(zhōng),北(běi)京發生(shēng)業務記錄,則記錄在北(běi)京這個表空間中(zhōng)。如此,當浙江省的業務數據出現錯誤的時候,則直接還原浙江省的表空間即可。很明顯,這樣設計,當某個表空間中(zhōng)的數據出現錯誤需要恢複的時候,可以避免對其他表空間的影響。另外(wài),還可以對表空間進行獨立備份。當數據庫容量比較大(dà)的時候,若一(yī)下(xià)子對整個數據庫進行備份,顯然會占用比較多的時間。雖然說Oracle數據庫支持熱備份,但是在備份期間,會占用比較多的系統資(zī)源,從而造成數據庫性能的下(xià)降。爲此,當數據庫容量比較大(dà)的時候,我(wǒ)們就需要進行設置多個表空間,然後規劃各個表空間的備份時間,從而可以提高整個數據庫的備份效率,降低備份對于數據庫正常運行的影響。

典型應用四:

大(dà)表的排序操作。我(wǒ)們都知(zhī)道,當表中(zhōng)的記錄比較多的時候,對他們進行查詢,速度會比較慢(màn)。第一(yī)次查詢成功後,若再對其進行第二次重新排序,仍然需要這麽多的時間。爲此,我(wǒ)們在數據庫設計的時候,針對這種容量比較大(dà)的表對象,往往把它放(fàng)在一(yī)個獨立的表空間,以提高數據庫的性能。

典型應用五:

日志(zhì)文件與數據文件分(fēn)開(kāi)放(fàng),提高數據庫安全性。默認情況下(xià),日志(zhì)文件與數據文件存放(fàng)在同一(yī)表空間。但是,這對于數據庫安全方面來說,不是很好。所以,我(wǒ)們在數據庫設計的過程中(zhōng),往往喜歡把日志(zhì)文件,特别是重做日志(zhì)文件,放(fàng)在一(yī)個獨立的表空間中(zhōng),然後把它存放(fàng)在另外(wài)一(yī)塊硬盤上。如此的話(huà),當存放(fàng)數據文件的硬盤出現故障時,能夠馬上通過存放(fàng)在另一(yī)個表空間的重做日志(zhì)文件,對數據庫進行修複,以減少企業因爲數據丢失所帶來的損失。當然,表空間的優勢還不僅僅這些,企業對于數據庫的性能要求越高,或者數據庫容量越大(dà),則表空間的優勢就會越大(dà)。

下(xià)面,我(wǒ)們就具體(tǐ)來看看Oracle數據庫中(zhōng)表空間的處理方式,看其在性能與安全性方面是否有足夠的優勢與SQL Server數據庫抗衡。在數據庫設計的時候,我(wǒ)們建議數據庫管理員(yuán)按如下(xià)順序設置表空間。

第一(yī)步:建立表空間。在設計數據庫的時候,首先需要設計表空間。我(wǒ)們需要考慮,是隻建立一(yī)個表空間呢,還是需要建立多個表空間,以及各個表空間的存放(fàng)位置、磁盤限額等等。到底設計多少個表空間合理,沒有統一(yī)的說法,這主要根據企業的實際需求去(qù)判斷。如企業需要對用戶進行磁盤限額控制的,則就需要根據用戶的數量來設置表空間。當企業的數據容量比較大(dà),而其又(yòu)對數據庫的性能有比較高的要求時,就需要根據不同類型的數據,設置不同的表空間,以提高其輸入輸出性能。

第二步:建立用戶,并制定用戶的默認表空間。在建立用戶的時候,我(wǒ)們建議數據庫管理員(yuán)要指定用戶的默認表空間。因爲我(wǒ)們在利用CREATE語句創建數據庫對象,如數據庫表的時候,其默認是存儲在數據庫的當前默認空間。若不指定用戶默認表空間的話(huà),則用戶每次創建數據庫對象的時候,都要指定表空間,顯然,這并不是很合理。另外(wài)要注意,不同的表空間有不同的權限控制。用戶對于表空間A具有完全控制權限,可能對于表空間B就隻有查詢權限,甚至連連接的權限的都沒有。所以,合理爲用戶配置表空間的訪問權限,也是提高數據庫安全性的一(yī)個方法。

聯系我(wǒ)們