詳聊Oracle使用者表空間寶典

2021-08-30 09:16:03 字數 3005 閱讀 2113

oracle還是比較常用的,於是我研究了一下oracle使用者表空間,在這裡拿出來和大家分享一下,希望對大家有用。在我們為微軟的ntfs分割槽格式中的使用者磁碟配額鼓掌的時候,oracle資料庫中也已經實現了使用者磁碟配額的技術。可以借助表空間,來對使用者進行磁碟配額管理。利用表空間的使用者磁碟配額,可以實現很多功能。

如可以利用使用者磁碟配額,來管理使用者建立資料庫物件的能力。我們都知道,若使用者想要在某個表空間中建立方案物件的話,必須同時滿足兩個物件。一是使用者具有資料庫系統中create table等相關的許可權;二是在這個方案物件使用的表空間中具有配額。因為這兩個條件必須同時滿足,使用者才能夠成功的建立物件。所以,若我們可以不給使用者某個表空間的配額,如此的話,就可以限制使用者的相關操作。

另外,我們也可以利用磁碟配額來對使用者進行資料大小的限制。因為有時候我們可能在同一臺資料器重會執行多個應用服務。如筆者以前在同一臺伺服器裡同時執行郵箱與oracle資料庫系統。為了讓減少這個兩個系統對硬碟空間的過渡應用,所以,有必要對他們進行磁碟配額的限定。故,如用資料庫管理員需要將資源限制作為自己資料庫安全策略的一部分的話,就可以考慮為每個使用者設定表空間配額。

總之,筆者認為,表空間配額是乙個很不錯的輔助管理工具。筆者在這方面管理上,稍有心得,跟有識之士,討論討論。

一、給使用者分配表空間。

在oracle資料庫中,對於使用者的磁碟配額是通過表空間來實現的。給某個使用者分配了多少的表空間,這個使用者就有多少的磁碟配額。所以,對於使用者進行磁碟配額的管理,就是對使用者進行表空間的限制。

在建立使用者的時候,若沒有關聯表空間,則其一般情況下,就屬於預設的表空間。而其擁有表空間的大小,則是根據其所屬角色的不同而有所區別。如其屬於resource組的話,則其表空間是沒有大小限制的。

一般情況下,若資料庫管理員需要對錶空間進行磁碟配額管理的話,則筆者建議,在使用者建立的時候,為使用者指定表空間,並設定表空間的大小。如我們可以利用如下這條命令配置使用者的磁碟空間配額:alter user user_name quota ** on tablespace。其中引數user_name表示使用者名稱,而引數tablespace表示使用者所屬的表空間。若我們引數設定為unlimited的話,表示這個oracle使用者表空間沒有限制,直到所有的空間用完為止。

所以,在一般情況下,兩種情形下的使用者具有無限制的磁碟配額。一是這個使用者屬於resource這個角色,因為這個角色預設情況下,其是沒有磁碟限額限制的。二是在使用者建立的時候,手工利用unlimited指定該使用者不具有磁碟限額。不過,為了提高oracle資料庫的安全性與靈活性,筆者是大力建議要對使用者進行磁碟配額管理。

建立錯誤:

若在對使用者進行磁碟限額後,資料庫管理員最容易犯的錯誤,就是忘記給使用者分配磁碟限額,導致物件建立失敗。如筆者第一次接觸oracle資料庫的時候,就犯過這方面的錯誤。我新建了乙個使用者,並且賦予了其相關的許可權。可是,在建表的時候,系統提示錯誤資訊,說「表空間許可權不足」。筆者查了好久,最後查詢oracle使用者表空間確認配額的時候,發現該使用者的預設配額沒有分配。利用命令更改了預設配額之後,就可以建立表了。

二、如何拓展oracle使用者表空間?

若對使用者進行磁碟限額之後,有時候資料庫管理員會發現使用者的磁碟空間不足了,需要進行拓展。此時該如何處理呢?

若採用自動分配表空間大小的話,則oracle資料庫會自動調整表空間的大小,以滿足使用者的需要。但是,現在由於採用了磁碟配額管理,所以資料庫管理員不得不進行手工的調整。不過在談這個話題之前,資料庫管理員有必要了解一下表空間區的分配方式。

若資料庫管理員能夠**到表空間中存放的大部分物件都需要使用相同大小的區的話,那麼就可以採用uinform區的分配方式。採取這種方式的話,oracle資料庫將為這個表空間中的所有資料庫物件分配資料庫管理員指定大小的區。這種方式的優點是不會產生磁碟碎片,可以提高磁碟空間的利用率與資料庫的效能。

若資料庫管理員能夠**到表空間中存放的大部分物件需要使用的區的大小是不同的話(往往都是不同的),則需要採用autoallocat的區分配方式。這種分配方式下,將由oracle 資料庫自動為表空間的物件分配一定大小的區,而不是有使用者指定。這種方式的優點就是可以節省資料庫管理員的工作量。缺點是會產生比較多的磁碟碎片。不過總的來說,比起資料庫管理員的工作量來說,這點磁碟碎片還是容易接受的。筆者在建立表空間的時候,基本上都是採用這個方式的。

故在拓展表空間的時候,其採用的是原先表空間的分配方式。也就是說,原先表空間採用的是什麼區分配方式,則拓展空間也採用原先的分配方式。則是拓展表空間時必須要注意的問題。

當表空間不足,需要進行拓展的時候,筆者常用的方法是通過增加資料檔案的方式來實現的。因為表空間是其相關資料檔案大小的總和。所以,為表空間增加新的資料檔案,是最常用的增加表空間的方式。

如當資料庫管理員發現test1 表空間大小不足的時候,我們可以利用命令alter tablespace test1 add datefile 『資料檔案存放路徑』 size 500m。我們可以利用這個命令增加表空間的大小,然後再增加使用者的磁碟配額。如此,就可以對oracle使用者表空間進行拓展。

筆者建議:

雖然資料庫管理員可以通過圖形介面的方式對oracle資料庫進行類似的管理。但是,若在資料庫管理專家面前,採用圖形化的管理介面的話,則這個資料庫管理員可能會被他們認為是菜鳥。這主要是因為圖形管理化的介面效率並不是很高。一方面要從眾多的選單欄中找到相關的功能,會浪費資料庫管理員一定的時間;而且,其語句執行的效率,也比命令列要低。故,筆者建議,oralce資料庫管理員還是需要學會命令列的管理方式。

三、磁碟配額管理的幾個建議。

1、當在建立表空間物件的時候,出現「超出表空間的空間限量」錯誤提示的處理思路。這種情況一般是由很多種情況所造成的。筆者在遇到這種問題的時候,一般的處理思路是,先檢視該使用者的磁碟配額,看其是否滿足空間上的需求。若該使用者沒有磁碟配額管理的話,或者磁碟配額大小符合既定需求的話,則建議檢視表空間的大小,看是否是因為表空間不足所造成的。若前兩步還是不能夠解決問題的,則看看表空間的管理方式。若是資料字典管理模式的話,則把他改為本地管理模式,一般就可以解決問題了。

2、若資料庫中存放著不同辦事處或者不同分公司的資料時,筆者建議對oracle資料庫進行磁碟限額。這可以有效的防止因為硬碟空間的不足導致整個資料庫的崩潰。而若對使用者進行磁碟配額管理的話,那最多只是某個辦事處(某個使用者)資料庫操作出現故障而已。這也是提高oracle資料庫可用性的乙個有效手段。

Oracle 表空間 使用者

表空間刪除表空間 drop tablespace duke temp including contents and datafiles 執行完之後,找到對應的 dbf 檔案刪除。oracle 是以使用者為單位來管理的,所有的物件都依賴於使用者,因此 oracle 中工作的起步就是建立乙個自己的使用者...

Oracle建立表空間,使用者

注意點 1.如果在pl sql 等工具裡開啟的話,直接修改下面的 中 斜體加粗部分 執行 2.確保路徑存在,比如 d oracle oradata oracle9i 也就是你要儲存檔案的路徑存在 分為四步 第1步 建立臨時表空間 複製 如下 create temporary tablespace u...

oracle使用者預設表空間

alter database default tablespace 通過執行以上命令,可以設定系統的預設表空間。這樣的話,在建立新使用者時,如果不指定他的預設表空間,就會採用上面指定的系統預設表空間作為這個用的預設表空間。sql conn as sysdbasql create user test1...