当前位置:首页 » 文件管理 » 表空间文件可以删除吗
扩展阅读
怎样改动移动数据 2025-05-16 17:43:26

表空间文件可以删除吗

发布时间: 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可以重建的时候来剔除这个不正确的文件。