資料庫管理員可以在資料庫處於開啟(open)狀態時令除 SYSTEM 資料表空間(tablespace)之外的任何錶空間聯機(online)(可訪問)或離線(offline)(不可訪問)。SYSTEM 資料表空間在資料庫處於開啟(open)狀態時總是處於聯機狀態,因為Oracle需要使用其中的資料字典(data dictionary)。
資料表空間(tablespace)通常處於聯機(online)狀態,以便資料庫使用者訪問其中的資料。但是資料庫管理員可以在對錶空間進行維護,備份或恢複操作時,令資料表空間離線(offline)。
令資料表空間離線
當一個資料表空間(tablespace)離線(offline)後,Oracle不允許任何SQL語句繼續引用此資料表空間內的對象(schema object)。如果一個活動事務(activetransaction)中的 SQL 陳述式正好在使用被置為離線狀態的資料表空間內的對象,其事務性也不會被破壞。Oracle使用 SYSTEM 資料表空間內的延遲復原段(deferred rollback segment)為此事務中已完成的 SQL 陳述式儲存復原資訊(rollback data)。當離線資料表空間被重新置位聯機(online)狀態後,Oracle會在需要時應用這些復原資訊。
資料表空間(tablespace)聯機(online)或離線(offline)時,SYSTEM 資料表空間內的資料字典(data dictionary)會進行記錄。如果使用者關閉(shut down)一個資料庫時某個資料表空間處於離線狀態,那麼這個資料表空間在資料庫下次被裝載(mount)、開啟(open)後依舊保持離線狀態。
使用者只能將一個資料表空間(tablespace)聯機(online)到建立她的資料庫中,因為只有這個資料庫的 SYSTEM 資料表空間中才儲存著與此資料表空間相關的必要的資料字典(data dictionary)資訊。一個離線(offline)的資料表空間不能被Oracle之外的工具開啟或編輯。因此離線資料表空間不能被移動到其他資料庫中。
當某些錯誤發生時,Oracle會自動地將相關的聯機資料表空間(online tablespace)切換到離線(offline)狀態。例如,當資料庫寫入進程(database writerprocess,DBWn)多次嘗試向資料表空間的資料檔案(datafile)寫入失敗後,Oracle就會將此資料表空間切換到離線狀態。此時嘗試訪問離線資料表空間內資料表的使用者將會得到錯誤資訊。如果是介質故障(media failure)導致此次磁碟 I/O 失敗,使用者必須在處理故障後恢複(recover)受影響的資料表空間。
特殊情況下的資料表空間使用
使用者可以將不同類型的資料分開儲存在不同的資料表空間(tablespace)中。當使用者因為某些任務而令某個資料表空間離線(offline)後,其餘資料表空間仍保持聯機(online)狀態,www.bkjia.com其中的資料對使用者依然可用。但是資料表空間離線後也會導致特殊情況發生。例如,有兩個資料表空間分別用於儲存表及此表對應的索引,將出現以下問題:● 如果包含索引的資料表空間離線,那麼查詢依舊可以訪問表資料,因為對錶資料的訪問並不一定需要索引資料。
● 如果包含表的資料表空間離線,那麼查詢將無法訪問表資料,因為離線資料表空間內的對象無法被引用。
如果Oracle能夠從聯機(online)資料表空間(tablespace)中獲得執行一個SQL語句的足夠的資訊,那麼語句就將被執行。如果相關資訊必須從離線(offline)的資料表空間中獲得,那麼語句將失敗。
唯讀資料表空間
使用唯讀資料表空間(read-only tablespace)的主要目的是為了避免對靜態、且容量大的資料庫內容進行備份和恢複操作。Oracle不會更新唯讀資料表空間內的資料,因此這類資料表空間的資料檔案(datafile)可以放置在 CD-ROM 或 WORM之類的唯讀介質(read-only media)上。
提示:使用者只能將一個資料表空間(tablespace)聯機(online)到建立她的資料庫,因此唯讀資料表空間(read-only tablespace)技術不適用於存檔工作(archiving)。
唯讀資料表空間(read-only tablespace)不能被修改。如需更新一個唯讀資料表空間,首先要使資料表空間可讀寫。在更新後,還可以將資料表空間恢複到唯讀狀態。
因為唯讀資料表空間(read-only tablespace)不能被修改,只要沒有將唯讀資料表空間置於可讀寫狀態,就無需對其進行重複的備份操作。當使用者需要恢複資料庫時,也沒必要恢複唯讀資料表空間,原因同前所述。
進行此操作必須具有ALTER TABLESPACE 或 MANAGE TABLESPACE 系統許可權,GRANT ALTER TABLESPACE TO "USER";
GRANT MANAGE TABLESPACE TO "USER";(雙引號內必須大寫)
也可以使資料表空間中所有的資料檔案或臨時檔案離線,然後還能聯機,而不影響資料表空間自己的離線或聯機狀態。