當前位置:首頁 » 文件管理 » 表空間文件可以刪除嗎
擴展閱讀
怎樣製作日期樓號表格 2025-05-16 13:28:51

表空間文件可以刪除嗎

發布時間: 2023-04-19 20:23:26

⑴ 如何刪除表空間的數據文件

如果不是Oracle11gR2版本,數據文件是無法刪除的,要刪除數據文件連同表空間一起刪除。
Oracle11gR2版可以刪除數據文件。但你給的題目沒有正確答案。
Oracle11gR2版刪除數據文件的步驟如下:
1、保證表空間處在聯機狀態;
2、通過SQL語句刪除數據文件;
3、刪除數據文件語法:ALTER TABLESPACE 表空間名 DROP DATAFILE 數據文件名;

⑵ dorp了表空間的名字如何刪除表空間文件

步驟如下:

1,導出該表空間中液或的所有姿埋慶內容;

2,刪除表空間:DROPTABLESPACE <tablespace_name> INCLUDING CONTENTS;

3,重新創建新的表空間及其數跡握據文件;

4,將導出的數據導入表空間。

⑶ 如何從表空間中「刪除」數據文件

1.查看數據文件:
SQL> select name from v$datafile;
NAME
+DATA/orcl/system01.dbf
+DATA/orcl/undotbs01.dbf
+DATA/orcl/sysaux01.dbf
+DATA/orcl/users01.dbf
+DATA/orcl/undotbs02.dbf
/oracle/u01/app/oracle/oradata/orcl/SMS.dbf
/oracle/u01/app/oracle/oradata/orcl/WEBDB.dbf
7 rows selected.
2.查看數據文件狀態

SQL> select file#,status,name from v$datafile where name like '%SMS%';
FILE# STATUS
NAME
6 ONLINE
/oracle/u01/app/oracle/oradata/orcl/SMS.dbf
1 rows selected.
3.確認操作系統上SMS數據文件已經不存在,u01文件夾都沒有

[oracle@db1 ~]$ ll /oracle/
總計 6778872
drwxr-xr-x 2 oracle oinstall 4096 12-16 17:07 bak
-rw-rw-r-- 1 oracle oinstall 170 12-19 15:41 IMPORT.LOG
4.此時查看數據文件狀態,狀態沒有異常
sec@ora10g> select file#,status,name from v$datafile where name like '%SMS%';
FILE# STATUS NAME
6 ONLINE /oracle/u01/app/oracle/oradata/orcl/SMS.dbf
5.手工將誤刪除的文件offline drop,成功

SQL> alter database datafile '/oracle/u01/app/oracle/oradata/orcl/SMS.dbf' offline drop;
Database altered.
6.此時,該文件的狀態為「RECOVER」
SQL> select file#,status,name from v$datafile where name like '%SMS%';
FILE# STATUS NAME
6 RECOVER /oracle/u01/app/oracle/oradata/orcl/SMS.dbf
7.演示刪除表空間,成功。

SQL> alter database datafile '/oracle/u01/app/oracle/oradata/orcl/SMS.dbf' offline drop;

Database altered.
8.最後確認,刪除得很徹底。
SQL>select file#,status,name from v$datafile where name like '%SMS%';
no rows selected
SQL> select name from v$datafile;
NAME
+DATA/orcl/system01.dbf
+DATA/orcl/undotbs01.dbf
+DATA/orcl/sysaux01.dbf
+DATA/orcl/users01.dbf
+DATA/orcl/undotbs02.dbf
/oracle/u01/app/oracle/oradata/orcl/WEBDB.dbf
6 rows selected.

⑷ 如何刪除表空間的數據文件

新增加的表空間數據文件誤刪除(利用創建表空間前的控制文件)
===========================================================

利用表空間文件創建前的備份控制文件恢復,10g會自動創建丟失的數據文件恢復
--利用控制文件的不完全恢復,要利用刪除文件或表空間前備份的控制文件恢復

利用創建前的控制文件恢復

PENG(sys)>select* from v$version;

BANNER
----------------------------------------------------------------
OracleDatabase 10g Enterprise Edition Release 10.2.0.1.0- Prod
PL/SQLRelease 10.2.0.1.0 - Proction
CORE10.2.0.1.0 Proction
TNSfor 32-bit Windows: Version 10.2.0.1.0 - Proction
NLSRTLVersion 10.2.0.1.0 - Proction

RMAN>backup database ;

PENG(sys)>createtablespace ts_back datafile 'C:ORACLEPRODUCT10.2.0ORADATAORCLTS_BACK.DBF'size 1m autoextend on;

表空間已創建。

PENG(sys)>createtable test(a varchar2(10)) tablespace ts_back;

表已創建。

PENG(sys)>insertinto test values('test');

已創建 1 行。

PENG(sys)>commit;

提交完成。

PENG(sys)>select* from test;

A
----------
test

PENG(sys)>selectdbms_flashback.get_system_change_number from al;

GET_SYSTEM_CHANGE_NUMBER
------------------------
1878113

PENG(sys)>droptablespace ts_back including contents and datafiles;

表空間已刪除。

PENG(sys)>select* from test;
select* from test
*
第 1 行出現錯誤:
ORA-00942:表或視圖不存在

PENG(sys)>shutdownimmediate;
資料庫已經關鋒帆拍閉。
已經卸載資料庫。
ORACLE常式已經銀羨關閉。

C:>rmantarget sys/sys@orcl36

恢復管理器:Release 10.2.0.1.0 - Proction on 星期五 8月 17 13:57:452007

Copyright(c) 1982, 2005, Oracle. All rights reserved.

已連接到目標資料庫 (未啟動)

RMAN>startup nomount;

已連接到目標資料庫 (未啟動)
Oracle實例已啟動

系統全局區域總計167772160 位元組

FixedSize 1247900 位元組
VariableSize 75498852 位元組
DatabaseBuffers 88080384 位元組
RedoBuffers 2945024 位元組

--找到了alert.log 的一段,需要用到創建表空間前的控制轎豎文件進行恢復C:ORACLEBACKC-497086482-20040820-04
--資料庫的dbid是497086482

FriAug 20 11:03:58 2004
Thread1 advanced to log sequence 3
Currentlog# 3 seq# 3 mem# 0: C:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG
FriAug 20 11:04:02 2004
Startingcontrol autobackup
FriAug 20 11:04:04 2004
Errorsin file c:oracleproct10.2.0adminorclumporcl_ora_3276.trc:

FriAug 20 11:04:04 2004
Errorsin file c:oracleproct10.2.0adminorclumporcl_ora_3276.trc:

FriAug 20 11:04:04 2004
Errorsin file c:oracleproct10.2.0adminorclumporcl_ora_3276.trc:

Controlautobackup written to DISK device
handle'C:ORACLEBACKC-497086482-20040820-04'
FriAug 20 11:05:20 2004

RMAN>set dbid 497086482

正在執行命令:SET DBID

RMAN>startup nomount;

Oracle實例已啟動

系統全局區域總計167772160 位元組

FixedSize 1247900 位元組
VariableSize 75498852 位元組
DatabaseBuffers 88080384 位元組
RedoBuffers 2945024 位元組

RMAN>restore controlfile from 'C:ORACLEBACKC-497086482-20040820-04' ;

啟動restore 於20-8月 -07
使用目標資料庫控制文件替代恢復目錄
分配的通道:ORA_DISK_1
通道ORA_DISK_1: sid=157 devtype=DISK

通道ORA_DISK_1: 正在復原控制文件
通道ORA_DISK_1: 恢復完成, 用時: 00:00:04
輸出文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL01.CTL
輸出文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL02.CTL
輸出文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL03.CTL
完成restore 於20-8月 -07

RMAN>sql 'alter database mount';

sql語句: alterdatabase mount
釋放的通道:ORA_DISK_1

/*
run{
setuntil scn 1878113;
restoredatabase;
recoverdatabase;
}

*/
C:Documentsand SettingsAdministrator>sqlplus sys/sys@orcl36 as sysdba

idle>selectfile#,name from v$datafile;

FILE#
----------
NAME
----------------------------------------------------------------------------
1
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF

2
C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS02.DBF

3
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF

4
C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF

5
C:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF

6
C:ORACLEPRODUCT10.2.0ORADATAORCLPERFSTAT.DBF

7
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_ROW.DBF

8
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART1.DBF

9
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART2.DBF

10
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART3.DBF

11
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART4.DBF

12
C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS02.DBF

已選擇12行。

RMAN>run{
2>set until scn 1878113;
3>restore database;
4>recover database;
5>}

正在執行命令:SET until clause

啟動restore 於20-8月 -07
啟動implicit crosscheck backup 於20-8月 -07
分配的通道:ORA_DISK_1
通道ORA_DISK_1: sid=155 devtype=DISK
已交叉檢驗的 6 對象
完成implicit crosscheck backup 於20-8月 -07

啟動implicit crosscheck 於20-8月 -07
使用通道ORA_DISK_1
已交叉檢驗的 2 對象
完成implicit crosscheck 於20-8月 -07

搜索恢復區域中的所有文件
正在編制文件目錄...
沒有為文件編制目錄

使用通道ORA_DISK_1

通道ORA_DISK_1: 正在開始恢復數據文件備份集
通道 ORA_DISK_1:正在指定從備份集恢復的數據文件
正將數據文件00002恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS02.DBF
正將數據文件00003恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
正將數據文件00004恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
正將數據文件00006恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLPERFSTAT.DBF
正將數據文件00007恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_ROW.DBF
正將數據文件00008恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART1.DBF
正將數據文件00009恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART2.DBF
正將數據文件00010恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART3.DBF
正將數據文件00011恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART4.DBF
正將數據文件00012恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS02.DBF
通道ORA_DISK_1: 正在讀取備份段C:ORACLEBACKDB_FULL_PENG_20040820_534682924_225_71FTT79C_1_1.BAK
通道ORA_DISK_1: 已恢復備份段 1
段句柄 =C:ORACLEBACKDB_FULL_PENG_20040820_534682924_225_71FTT79C_1_1.BAK 標記 =TAG20040820T110203
通道ORA_DISK_1: 恢復完成, 用時: 00:00:55
通道ORA_DISK_1: 正在開始恢復數據文件備份集
通道ORA_DISK_1: 正在指定從備份集恢復的數據文件
正將數據文件00001恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
正將數據文件00005恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF
通道ORA_DISK_1: 正在讀取備份段C:ORACLEBACKDB_FULL_PENG_20040820_534682990_226_72FTT7BE_1_1.BAK
通道ORA_DISK_1: 已恢復備份段 1
段句柄 =C:ORACLEBACKDB_FULL_PENG_20040820_534682990_226_72FTT7BE_1_1.BAK 標記 =TAG20040820T110203
通道ORA_DISK_1: 恢復完成, 用時: 00:00:45
完成restore 於20-8月 -07

啟動recover 於20-8月 -07
使用通道ORA_DISK_1

正在開始介質的恢復

存檔日誌線程 1 序列 2 已作為文件C:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG 存在於磁碟上
存檔日誌線程 1 序列 3 已作為文件C:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG 存在於磁碟上
存檔日誌文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG 線程 =1 序列 =2
存檔日誌文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG 線程 =1 序列 =3
創建數據文件 fno= 13 名稱 =C:ORACLEPRODUCT10.2.0ORADATAORCLTS_BACK.DBF
存檔日誌文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG 線程 =1 序列 =3
介質恢復完成, 用時: 00:00:03
完成recover 於20-8月 -07

RMAN>sql 'alter database open resetlogs';

sql語句: alterdatabase open resetlogs

idle>connsys/sys@orcl36 as sysdba ;
已連接。
PENG(sys)>select* from test;

A
----------
test

--利用表空間文件創建前的備份控制文件恢復,10g會自動創建丟失的數據文件恢復

⑸ 怎樣刪除表空間里的某個數據文件

一班來講,當你刪除表空間時如果包含刪除數據文件時,數據文件會被刪除,
drop
tablespace

including
contents
and
datafiles...如果你在刪除表空間時沒有包含including
contents
and
datafiles,而你又確定沒有表空間用到這個數據文件的話,那你可以透過作業系統命令直接刪除其中數據文件(delete...)

⑹ 怎麼刪除用戶,表空間,數據文件

Oracle 使用時間長了, 新增了許多user 和tablespace. 需要清理一下
對於單個user和tablespace 來說, 可以使用如下命令來完成。

步驟一: 刪除user

drop user ×× cascade

說明: 刪除了user,只是刪除了該user下的schema objects,是不會刪除相應的tablespace的。

步驟二: 刪碼跡除tablespace
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;

但是,因為是供開發環境來使用的db, 需要清理的user 和 table space 很多。
思路孝謹:
Export出DB中所有的user和tablespace, 篩選出系統的和有用的tablespace,把有用的信息load到一張表中去。
然後寫巧模基常式循環,把不在有用表的tablespace刪掉
1. select username,default_tablespace from dba_users;
2.

create table MTUSEFULSPACE
(
ID Number(4) NOT NULL PRIMARY KEY,
USERNAME varchar2(30),

⑺ 如果要刪除某個表空間中的一個數據文件如何操作

1、先對數據進皮肢談行一次完整的備份。

⑻ Oracle 11G資料庫表空間中的數據文件是否能刪除

如果刪除表空間,那麼就可以刪除數據文件,如果僅僅刪除數據文件,還是不要做的好。

⑼ oracle可以手動刪除表空間嗎

可以手動刪除,drop tablespace {tablespace_name};
如果表空間中有敗亂數掘滾據對象,drop tablespace {tablespace_name} cascade; 此時表空察散檔間中的所有數據對象都會被刪除
如果刪除表空間的同時也刪除對應的數據文件:drop tablespace {tablespace_name} cascade including contents and datafiles;

⑽ 如何從表空間中「刪除」數據文件

存在兩種情況可能需要從表空間中「移走」數據文件。 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可以重建的時候來剔除這個不正確的文件。