標籤:
一、修改和維護資料表空間
1、增加資料表空間容量
可以通過修改資料表空間資料檔案的大小或為資料表空間添加一個資料檔案的方式增加資料表空間的容量,另外我們還可以使用資料表空間的自動擴充選項為大檔案資料表空間增加容量。對於本地管理的暫存資料表空間,即無法它增加空間容量,也無法修改它的段空間管理方式。
a、小檔案資料表空間增加容量
# 通過為資料表空間添加資料檔案的方式增加資料表空間容量SQL> alter tablespace test 2 add datafile ‘/u01/app/oracle/oradata/stdb/test02.dbf‘ size 10m;Tablespace altered.# 使用RESIZE子句增加大檔案資料表空間的容量SQL> alter database datafile ‘/u01/app/oracle/oradata/stdb/test02.dbf‘ resize 20m;Database altered.
b、大檔案資料表空間增加容量
# 使用RESIZE子句增加大檔案資料表空間的容量SQL> alter tablespace bigtbs resize 20m;Tablespace altered.# 使用AUTOEXTEND子句增加大檔案資料表空間的容量SQL> alter tablespace bigtbs autoextend on next 10m;Tablespace altered.
2、修改本地管理的暫存資料表空間
可以使用alter tablespace語句為暫存資料表空間添加資料檔案,由於無法對暫存資料表空間執行離線操作,所以可以使用離線暫存資料表空間的臨時檔案的方法來替代。
# 增加暫存資料表空間容量SQL> alter tablespace lmttmp 2 add tempfile ‘/u01/app/oracle/oradata/stdb/temp03.dbf‘ size 20m;Tablespace altered.# 使暫存資料表空間中的資料檔案離線SQL> alter tablespace lmttmp tempfile offline;Tablespace altered.# 使暫存資料表空間中的資料檔案線上SQL> alter tablespace lmttmp tempfile online;Tablespace altered.# 刪除暫存資料表空間檔案SQL> alter database tempfile ‘/u01/app/oracle/oradata/stdb/temp03.dbf‘ drop including datafiles; Database altered.
3、收縮本地管理暫存資料表空間
由於執行大的排序操作可能會導致佔用相當大的暫存資料表空間,在完成排序後,這些額外的空間並不會被釋放,這些空間會被標記成空閑且可被重用的狀態。基於這一點,在資料庫中允許收縮暫存資料表空間中的未使用的空間。
使用alter tablespace ... shrink space語句可以執行收縮暫存資料表空間的操作,或者使用alter tablespace ... shrink tempfile語句收縮暫存資料表空間當中的臨時檔案。收縮使得暫存資料表空間有更多的空間可用,同時並不改變該資料表空間的其他屬性。使用keep子句保持暫存資料表空間或臨時檔案的最小大小。
4、重新命名資料表空間
使用alter tablespace old_new rename to new_name語句重新命名資料表空間,只能夠對永久資料表空間或暫存資料表空間進行重新命名的操作。重新命名資料表空間將會在資料字典、控制檔案、資料檔案的檔案頭中更新所有對該資料表空間的引用。資料表空間重新命名的操作不會更新資料表空間的ID號,所以當更新使用者的預設資料表空間時,通過dba_vusers視圖可以查詢到更新後的資訊。
下列情形將對錶空間重新命名操作產生影響:
- 相容性參數(compatible)必須被設定為10.2.0或者更高;
- 如果嘗試對system,sysaux資料表空間進行重新命名操作,將會產生一個錯誤;
- 如果資料檔案或資料表空間離線,資料表空間的命名操作不會成功,並且會產生一個錯誤;
- 如果資料表空間為唯讀狀態,此時資料字典和控制檔案被更新,但資料檔案頭將無法更新,這將會產生一條錯誤訊息寫入警示記錄檔;
- 如果是undo資料表空間,那麼重新命名資料表空間也會更新spfile的資訊,如果使用的是pfile的話,需要手動修改undo_tablespace參數;
5、刪除資料表空間
當刪除一個資料表空間時,與該資料表空間檔案相關的指標都將從資料庫的控制檔案中移除。在刪除資料表空間的操作過程中,可以選擇同時刪除資料檔案,如果僅刪除資料表空間而沒有刪除資料檔案的話,可以再刪除操作完成後,然後使用作業系統命令完成刪除。
不能在包含活動段的資料表空間上執行刪除資料表空間的操作。例如,如果資料表空間上的表當前正在被使用或者資料表空間包含復原未提交事務的撤銷資料,此時就無法執行刪除資料表空間的操作。在執行刪除資料表空間的操作時,資料表空間可以線上,也可以離線,但是最好在刪除操作之前使資料表空間離線。
刪除資料表空間及資料表空間上的段,如果資料表空間上的表的主鍵或唯一鍵被其他資料表空間上的表引用的話(存在外鍵約束),可以使用cascade constraints子句執行刪除資料表空間的操作。
drop tablespace ... including contentsdrop tablespace ... including contents cascade constraints
刪除資料表空間的同時刪除資料檔案:
drop tablespace ... including contents and datafiles //該操作將會在資料庫警示記錄檔裡產生一條記錄
二、管理SYSAUX資料表空間
當建立資料庫時,SYSAUX資料表空間被安裝,SYSAUX資料表空間作為SYSTEM的一個輔助表孔空間。以前各自使用單獨資料表空間的一些資料庫組件現在都被統一儲存在SYSAUX資料表空間中了。如果SYSAUX資料表空間不可用,資料庫的核心功能並不受影響,使用SYSAUX資料表空間的資料庫特性將無法使用或功能受到限制。
通過v$sysaux_occupants視圖可以實現對SYSAUX資料表空間的監控、將某些組件已入或移出SYSAUX資料表空間、組件空間使用率等資訊。SYSAUX資料表空間記憶體放的是一些資料庫組件,這些組件所佔空間的大小就構成了SYSAUX資料表空間的大小;反過來,組件所佔用的空間大小取決於資料庫使用了那些功能特性及資料庫的工作負載情況。
除此之外,EM(Oracle Enterprise Manager Repository)也會佔用較大的SYSAUX資料表空間。
Oracle資料表空間基礎(5)