1. 程式人生 > >oracle下正確刪除表空間的方法

oracle下正確刪除表空間的方法

oracle tablespace

Oracle因為本身的多重驗證機制所有在刪除表空間時不像MySQL中刪除database一樣,可以通過外部的刪除直接刪除掉database文件夾就可以刪除掉database,當然這兩者是2種不同的東西,在此僅用於舉例說明。在Oracle中表空間相當於系統中的硬盤,Oracle可以通過修改配置表空間來對Oracle下的數據進行存儲,所以在Oracle下表空間是非常重要的,尤其是在表空間文件處理不當都會造成Oracle的不穩定,在此就說一說如何正確的刪除Oracle的表空間。

刪除表空間時,需要確定在沒有數據使用時或者該表空間的數據確定不要時候才能繼續,所以在任何刪除之前,需要讓表空間離線,如下:

SQL> alter tablespace tablespace_name offline;

在使表空間正確的離線後,才能對表空間進行正確的刪除的操作,而刪除表空間又分為幾種情況,使用也很簡單,如下:

--刪除空的表空間,但是不包含物理文件
SQL> drop tablespace tablespace_name;
--刪除非空表空間,但是不包含物理文件
SQL> drop tablespace tablespace_name including contents;
--刪除空表空間,包含物理文件
SQL> drop tablespace tablespace_name including datafiles;
--刪除非空表空間,包含物理文件
SQL> drop tablespace tablespace_name including contents and datafiles;
--如果其他表空間中的表有外鍵等約束關聯到了本表空間中的表的字段,就要加上CASCADE CONSTRAINTS
SQL> drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

要註意的是這些操作都需要使用DBA用戶才能操作,而在需要刪除表空間的物理文件時需要格外的註意,不然一旦刪除表空間的物理文件,Oracle的數據是無法恢復的,Oracle的表空間物理文件的路徑在創建表空間時就有定義,當然如果忘記了,可以查詢Oracle的系統表來查詢:

SQL> select file_name,tablespace_name from dba_data_files;

當然,還有更多的查詢方式在以前有寫過Oracle下的常用的系統表和系統視圖,在此就不做過多的說明,需要的可以參看:http://jim123.blog.51cto.com/4763600/1947872

本文出自 “技術隨筆” 博客,謝絕轉載!

oracle下正確刪除表空間的方法