如何從表空間中「刪除」資料檔案

2021-05-24 07:53:12 字數 2423 閱讀 5166

本文主要介紹如何從資料庫中刪除資料檔案。因為

alter database datafile offline drop

命令很容易引起刪除資料檔案的疑惑,所以本文也介紹

offline drop

命令的真正含義。

存在兩種情況可能需要從表空間中「移走」資料檔案。

1.你不小心給乙個表空間增加了乙個資料檔案,或者你把檔案大小設得過大,所以想把它刪掉。

2.你正在進行恢復,因為丟失了乙個資料檔案所以不能啟動資料庫。

本文主要處理第一種情況,有別的文章來講述由於丟失資料檔案而不能使用資料庫的恢復問題。

在我們詳細介紹之前,我們必須說清楚一點:

oracle

不提供如刪除表。檢視一樣刪除資料檔案的方法,資料檔案是表空間的一部分,所以不能「移走」表空間。

在對錶空間

/資料檔案進行任何離線、刪除之前,首先對資料庫進行乙個全備份。

如果資料檔案是所在表空間的唯一的資料檔案,你只要簡單地刪除表空間即可:

drop tablespace including contents;

你可以執行下面的命令來查詢表空間包含多少資料檔案。

select file_name, tablespace_name

from dba_data_files

where tablespace_name ='';

drop tablespace

命令從oracle

資料字典刪除表空間、資料檔案和表空間的內容。

oracle

不會再訪問該錶空間中的任何內容。物理地刪除檔案需要使用作業系統命令(

oracle

從不物理地刪除檔案

<

注:本文是針對

8i或者之前,

9i可以使用

including datafile

選項來刪除物理檔案

>

),依賴你的作業系統平台,有的作業系統需要

oracle

完全關閉才才可以刪除(例如在

windows nt

中需要關閉資料庫,停掉相應的服務,在有的情況下

oracle

還可能持有檔案鎖)。

如果你的表空間有多個資料檔案,而你不需要表空間中的內容,或者你可以很容易重新生產表空間的內容,你可以使用

drop tablespace including contents;

命令來從

oracle

資料字典刪除表空間、資料檔案和表空間的內容。

oracle

不會再訪問該錶空間中的任何內容。然後重新建立表空間並重新匯入資料。

如果你的表空間有多個資料檔案,而你還需保留該錶空間中的其它資料檔案中的內容,則你必須首先

export

出該表空間中的所有內容。為了確定表空間中包含那些內容,執行:

select owner,segment_name,segment_type

from dba_segments

where tablespace_name=''

export

出你想保留的內容。如果

export

結束,你可以使用

drop tablespace tablespace including contents.

,這樣永久刪除表空間的內容,使用作業系統命令物理刪除資料檔案,按所需資料檔案重新建立表空間,把資料

import

至表空間。

注意:alter database datafile offline drop

命令不能允許你刪除資料檔案,它的目的是離線該資料檔案以刪除表空間。如果在歸檔模式下,使用

alter database datafile offline drop

來代替offline drop

。一旦資料檔案離線,

oracle

不會再訪問該資料檔案的內容,但它仍然是表空間的一部分。這個資料檔案在控制檔案中標記

offline

,在資料庫啟動時不會對它與控制檔案進行

scn的比較。在控制檔案中保留這個資料檔案的入口是方便以後的恢復。

如果你不想按照上述方法來刪除表空間,還有其它一些解決方法。

1.如果你想刪除資料檔案的原因是因為分配了不合適的檔案大小,你可以考慮

resize

命令。

2.如果你不小心增加了乙個資料檔案,而這個檔案還沒有分配空間,你可以使用

alter database datafile resize;

命令使其小於

5個 oracle

塊大小,如果資料檔案的大小小於這個,

oracle

將不會進行擴充套件資料檔案。在以後,

oracle

可以重建的時候來剔除這個不正確的檔案。

如何收縮表空間中的資料檔案

我們知道,我們如果把一些物件刪除之後,如何 表空間中的資料檔案 我們看如下的查詢 sql view plain copy select upper f.tablespace name 表空間名 d.tot grootte mb 表空間大小 m d.tot grootte mb f.total byt...

oracle刪除資料檔案

在我們詳細介紹之前,我們必須說清楚一點 oracle不提供如刪除表 檢視一樣刪除資料檔案的方法,資料檔案是表空間的一部分,所以不能 移走 表空間。一 使用offline資料檔案的方法 非歸檔模式使用 alter database datafile offline drop 歸檔模式使用 alter ...

oracle刪除資料檔案

在我們詳細介紹之前,我們必須說清楚一點 oracle不提供如刪除表 檢視一樣刪除資料檔案的方法,資料檔案是表空間的一部分,所以不能 移走 表空間。一 使用offline資料檔案的方法 非歸檔模式使用 alter database datafile offline drop 歸檔模式使用 alter ...