新聞中心
Oracle還是比較常用的,于是我研究了一下Oracle用戶表空間,在這里拿出來和大家分享一下,希望對大家有用。在我們?yōu)槲④浀腘TFS分區(qū)格式中的用戶磁盤配額鼓掌的時候,Oracle數(shù)據(jù)庫中也已經(jīng)實現(xiàn)了用戶磁盤配額的技術??梢越柚砜臻g,來對用戶進行磁盤配額管理。利用表空間的用戶磁盤配額,可以實現(xiàn)很多功能。

如可以利用用戶磁盤配額,來管理用戶創(chuàng)建數(shù)據(jù)庫對象的能力。我們都知道,若用戶想要在某個表空間中創(chuàng)建方案對象的話,必須同時滿足兩個對象。一是用戶具有數(shù)據(jù)庫系統(tǒng)中CREATE TABLE等相關的權限;二是在這個方案對象使用的表空間中具有配額。因為這兩個條件必須同時滿足,用戶才能夠成功的建立對象。所以,若我們可以不給用戶某個表空間的配額,如此的話,就可以限制用戶的相關操作。
另外,我們也可以利用磁盤配額來對用戶進行數(shù)據(jù)大小的限制。因為有時候我們可能在同一臺數(shù)據(jù)器重會運行多個應用服務。如筆者以前在同一臺服務器里同時運行郵箱與Oracle數(shù)據(jù)庫系統(tǒng)。為了讓減少這個兩個系統(tǒng)對硬盤空間的過渡應用,所以,有必要對他們進行磁盤配額的限定。故,如用數(shù)據(jù)庫管理員需要將資源限制作為自己數(shù)據(jù)庫安全策略的一部分的話,就可以考慮為每個用戶設置表空間配額。
總之,筆者認為,表空間配額是一個很不錯的輔助管理工具。筆者在這方面管理上,稍有心得,跟有識之士,討論討論。
一、給用戶分配表空間。
在Oracle數(shù)據(jù)庫中,對于用戶的磁盤配額是通過表空間來實現(xiàn)的。給某個用戶分配了多少的表空間,這個用戶就有多少的磁盤配額。所以,對于用戶進行磁盤配額的管理,就是對用戶進行表空間的限制。
在創(chuàng)建用戶的時候,若沒有關聯(lián)表空間,則其一般情況下,就屬于默認的表空間。而其擁有表空間的大小,則是根據(jù)其所屬角色的不同而有所區(qū)別。如其屬于resource組的話,則其表空間是沒有大小限制的。
一般情況下,若數(shù)據(jù)庫管理員需要對表空間進行磁盤配額管理的話,則筆者建議,在用戶建立的時候,為用戶指定表空間,并設置表空間的大小。如我們可以利用如下這條命令配置用戶的磁盤空間配額:ALTER USER user_name QUOTA ** ON tablespace。其中參數(shù)User_name表示用戶名,而參數(shù)Tablespace表示用戶所屬的表空間。若我們參數(shù)設置為UNLIMITED的話,表示這個Oracle用戶表空間沒有限制,直到所有的空間用完為止。
所以,在一般情況下,兩種情形下的用戶具有無限制的磁盤配額。一是這個用戶屬于resource這個角色,因為這個角色默認情況下,其是沒有磁盤限額限制的。二是在用戶建立的時候,手工利用UNLIMITED指定該用戶不具有磁盤限額。不過,為了提高Oracle數(shù)據(jù)庫的安全性與靈活性,筆者是大力建議要對用戶進行磁盤配額管理。
創(chuàng)建錯誤:
若在對用戶進行磁盤限額后,數(shù)據(jù)庫管理員最容易犯的錯誤,就是忘記給用戶分配磁盤限額,導致對象創(chuàng)建失敗。如筆者***次接觸Oracle數(shù)據(jù)庫的時候,就犯過這方面的錯誤。我新建了一個用戶,并且賦予了其相關的權限??墒?,在建表的時候,系統(tǒng)提示錯誤信息,說“表空間權限不足”。筆者查了好久,***查詢Oracle用戶表空間確認配額的時候,發(fā)現(xiàn)該用戶的缺省配額沒有分配。利用命令更改了默認配額之后,就可以創(chuàng)建表了。
二、如何拓展Oracle用戶表空間?
若對用戶進行磁盤限額之后,有時候數(shù)據(jù)庫管理員會發(fā)現(xiàn)用戶的磁盤空間不足了,需要進行拓展。此時該如何處理呢?
若采用自動分配表空間大小的話,則Oracle數(shù)據(jù)庫會自動調(diào)整表空間的大小,以滿足用戶的需要。但是,現(xiàn)在由于采用了磁盤配額管理,所以數(shù)據(jù)庫管理員不得不進行手工的調(diào)整。不過在談這個話題之前,數(shù)據(jù)庫管理員有必要了解一下表空間區(qū)的分配方式。
若數(shù)據(jù)庫管理員能夠預測到表空間中存放的大部分對象都需要使用相同大小的區(qū)的話,那么就可以采用Uinform區(qū)的分配方式。采取這種方式的話,Oracle數(shù)據(jù)庫將為這個表空間中的所有數(shù)據(jù)庫對象分配數(shù)據(jù)庫管理員指定大小的區(qū)。這種方式的優(yōu)點是不會產(chǎn)生磁盤碎片,可以提高磁盤空間的利用率與數(shù)據(jù)庫的性能。
若數(shù)據(jù)庫管理員能夠預測到表空間中存放的大部分對象需要使用的區(qū)的大小是不同的話(往往都是不同的),則需要采用AUTOALLOCAT的區(qū)分配方式。這種分配方式下,將由Oracle數(shù)據(jù)庫自動為表空間的對象分配一定大小的區(qū),而不是有用戶指定。這種方式的優(yōu)點就是可以節(jié)省數(shù)據(jù)庫管理員的工作量。缺點是會產(chǎn)生比較多的磁盤碎片。不過總的來說,比起數(shù)據(jù)庫管理員的工作量來說,這點磁盤碎片還是容易接受的。筆者在創(chuàng)建表空間的時候,基本上都是采用這個方式的。
故在拓展表空間的時候,其采用的是原先表空間的分配方式。也就是說,原先表空間采用的是什么區(qū)分配方式,則拓展空間也采用原先的分配方式。則是拓展表空間時必須要注意的問題。
當表空間不足,需要進行拓展的時候,筆者常用的方法是通過增加數(shù)據(jù)文件的方式來實現(xiàn)的。因為表空間是其相關數(shù)據(jù)文件大小的總和。所以,為表空間增加新的數(shù)據(jù)文件,是最常用的增加表空間的方式。
如當數(shù)據(jù)庫管理員發(fā)現(xiàn)TEST1 表空間大小不足的時候,我們可以利用命令ALTER TABLESPACE TEST1 ADD DATEFILE ‘數(shù)據(jù)文件存放路徑’ SIZE 500M。我們可以利用這個命令增加表空間的大小,然后再增加用戶的磁盤配額。如此,就可以對Oracle用戶表空間進行拓展。
筆者建議:
雖然數(shù)據(jù)庫管理員可以通過圖形界面的方式對Oracle數(shù)據(jù)庫進行類似的管理。但是,若在數(shù)據(jù)庫管理專家面前,采用圖形化的管理界面的話,則這個數(shù)據(jù)庫管理員可能會被他們認為是菜鳥。這主要是因為圖形管理化的界面效率并不是很高。一方面要從眾多的菜單欄中找到相關的功能,會浪費數(shù)據(jù)庫管理員一定的時間;而且,其語句執(zhí)行的效率,也比命令行要低。故,筆者建議,Oralce數(shù)據(jù)庫管理員還是需要學會命令行的管理方式。
三、磁盤配額管理的幾個建議。
1、當在創(chuàng)建表空間對象的時候,出現(xiàn)“超出表空間的空間限量”錯誤提示的處理思路。這種情況一般是由很多種情況所造成的。筆者在遇到這種問題的時候,一般的處理思路是,先查看該用戶的磁盤配額,看其是否滿足空間上的需求。若該用戶沒有磁盤配額管理的話,或者磁盤配額大小符合既定需求的話,則建議查看表空間的大小,看是否是因為表空間不足所造成的。若前兩步還是不能夠解決問題的,則看看表空間的管理方式。若是數(shù)據(jù)字典管理模式的話,則把他改為本地管理模式,一般就可以解決問題了。
2、若數(shù)據(jù)庫中存放著不同辦事處或者不同分公司的數(shù)據(jù)時,筆者建議對Oracle數(shù)據(jù)庫進行磁盤限額。這可以有效的防止因為硬盤空間的不足導致整個數(shù)據(jù)庫的崩潰。而若對用戶進行磁盤配額管理的話,那最多只是某個辦事處(某個用戶)數(shù)據(jù)庫操作出現(xiàn)故障而已。這也是提高Oracle數(shù)據(jù)庫可用性的一個有效手段。
【編輯推薦】
- 三分鐘搞定oracle用戶表空間
- 淺述Oracle用戶表空間關系
- 揭秘ADO.NET OracleClient命名空間對象
- 老鳥談Oracle用戶表空間
- Oracle用戶表空間兩步精通
新聞標題:詳聊Oracle用戶表空間寶典
URL地址:http://www.5511xx.com/article/dpdpisd.html


咨詢
建站咨詢
