Oracle的表空間

本想先從創建用戶開始的 ,但是在創建過程中發現還需要給用戶分配表空間,既然如此,先做表空間好了。

oracle 在安裝時會有一句提醒,就是說表空間儘量不要和 oracle 程序放在同一個分區下以避免 I/O 資源的爭奪,所以說,有條件的話,表空間最好是放在不同分區上,以免在併發訪問時I/O資源發生爭搶降低效率。

oracle 的表空間,從文件上看就是幾個限定容量的數據文件,表空間內的表和數據都存放在這。至於擴展名,有的是DBF,有的是ORA,擴展名似乎是沒有什麼關係的,即使沒有擴展名也是可行的。就像一個 txt 文件,你給他改名成 ttt 或者沒有擴展名,同樣也可以用文本編輯器打開一樣。

並且一個表空間可以支持多個數據文件,應該是允許一個表空間的數據文件存放在不同的位置,方便其擴充,一般情況下如果需要對錶空間的大小做調整直接改表空間的數據文件的大小就可以了。

設定好表空間數據文件,還有幾個選項

狀態:

就“脫機”和“聯機”兩個項,但是有需要注意的地方,如果數據庫中存在打開的事務處理,或表空間中存在活動的回退段,則取消選中“只讀”選項。

類型:由於爲用戶指定表空間必須指定兩種,一種是永久表空間,一種是臨時表空間,如果沒有指定臨時表空間的話,系統會默認把 TEMP 表空間(幫助裏寫的是SYSTEM)作爲用戶的臨時表空間。不過,我創建之後系統默認是把TEMP設爲臨時表空間。

永久:指定表空間用於存放永久性數據庫對象。該選項爲默認值。

臨時:指定表空間僅用於存放臨時對象 (排序段)。任何永久性對象都不能駐留於臨時表空間中。

還原:指定該表空間爲支持事務處理回退的撤消表空間。

在存儲頁中可以看到“區管理”、“段空間管理”,幫助中說:如果應用程序連接到 Oracle8i。。。這是 8i的功能,簡單來看一下。

區管理:

本地管理:8i的功能,管理本身各區的表空間在每個數據文件中保留一個位圖,用來跟蹤記錄該數據文件中塊的空閒狀態或使用狀態。位圖中的每個位對應一個數據塊或一組數據塊。當一個區被分配或空閒並可以重複使用時,Oracle 會更改該位圖的各個值,顯示數據塊的當前狀態。因爲這些更改不更新數據字典中的表,所以不會生成回退信息 (特殊情況除外,如表空間限額信息)。基本上選擇自動分配,統一分配的話就爲一個區選擇大小,默認是1M。

本地管理表空間會有很多好處:

  1. 提高空間操作的速度和併發性,因爲空間的分配和回收主要改變本地管理的資源,而不需要在中心管理資源。
  2. 提高性能,有時在字典管理的空間分配期間需要的遞歸操作被取消。
  3. 允許可讀的備用數據庫。因爲臨時表空間是本地管理的,不會產生撤消或重作事件。
  4. 簡化空間分配,減少對數據字典的依賴,因爲信息都被存儲在位圖中了。

段空間:對錶空間中空閒的空間進行管理,值得一提的是段空間的管理方法選擇後就不能改變,只有永久的、本地管理的表空間能夠指定自動段空間管理,如果不是上述表空間類型則沒有該項。

重做日誌:還是需要選上創建的,否則一旦出現故障,將無法回滾,進行重做。

表空間創建語句

CREATE TABLESPACE ""
    LOGGING
    DATAFILE '/.ora' SIZE 5M EXTENT
    MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO

明天繼續表空間管理的學習,還有蠻多內容,今天只是創建一個最簡單的表空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章