在我们详细介绍之前,我们必须说清楚一点:Oracle不提供如删除表、视图一样删除数据文件的方法,数据文件是表空间的一部分,所以不能“移走”表空间。
一、使用offline数据文件的方法
非归档模式使用:alter database datafile '...' offline drop;
归档模式使用: alter database datafile '...' offline;
说明:
<!--[if !supportLists]-->1) <!--[endif]-->以上命令只是将该数据文件OFFLINE,而不是在数据库中删除数据文件。该数据文件的信息在控制文件种仍存在。查询v$datafile,仍显示该文件。
<!--[if !supportLists]-->2) <!--[endif]-->归档模式下offline和offline drop效果是一样的
<!--[if !supportLists]-->3) <!--[endif]-->offline后,存在此datafile上的对象将不能访问
<!--[if !supportLists]-->4) <!--[endif]-->noarchivelog模式下,只要online redo日志没有被重写,可以对这个文件recover后进行online操作
实际使用案例:
直接删除数据文件后无法进入系统的解决方案
正常情况下,删除表空间的正确方法为:
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
如果没有通过以上命令删除而直接删除了数据文件,将导致数据库无法打开。
如果直接删除了数据文件
普通用户登录时,则报错:
ORA-01033: ORACLE initialization or shutdown in progress
sys用户可以正常登录
但进行操作时(SELECT count(1) FROM user_tables),则会报错:
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
如果执行命令alter database open以打开数据库时,又报如下错:
ORA-01157: 无法标识/锁定数据文件 12 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 12: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TSTEST001.DBF'
说明数据库没找到这个数据文件
因为数据文件在没有被offline的情况下物理删除了,导致oracle的数据不一致,因此启动失败.
通过以下方法即可解决
解决方法:
sqlplus sys/orcl@orcl as sysdba;
SQL> alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TSTEST001.DBF' offline drop;
SQL> alter database open;
SQL> drop tablespace CTBASEDATA;
二、Oracle 10G R2开始,可以采用:Alter tablespace tablespace_name drop datafile file_name;来删除一个空数据文件,并且相应的数据字典信息也会清除:
sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files
2 where tablespace_name='USERS';
FILE_ID FILE_NAME TABLESPACE_NAME
------- -------------------------------------------- ------------------
4 /u01/app/oracle/oradata/orcl/users01.dbf USERS
sys@ORCL>alter tablespace users add datafile
2 '/u01/app/oracle/oradata/orcl/users02.dbf' size 5M autoextend off;
Tablespace altered.
sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files
2 where tablespace_name='USERS';
FILE_ID FILE_NAME TABLESPACE_NAME
------- -------------------------------------------- -------------------
4 /u01/app/oracle/oradata/orcl/users01.dbf USERS
9 /u01/app/oracle/oradata/orcl/users02.dbf USERS
sys@ORCL>drop table test;
Table dropped.
sys@ORCL>create table test tablespace users
2 as
3 select * from dba_objects;
Table created.
sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents
2 where file_id=9;
SEGMENT_NAME FILE_ID BLOCKS
------------------------------ ---------- ----------
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 128
TEST 9 128
17 rows selected.
sys@ORCL>alter table test move tablespace PERFSTAT; --把表移动到其它表空间
Table altered.
sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents
2 where file_id=9;
no rows selected
sys@ORCL>alter tablespace users drop datafile
2 '/u01/app/oracle/oradata/orcl/users02.dbf';
Tablespace altered.
sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files
2 where tablespace_name='USERS';
FILE_ID FILE_NAME TABLESPACE_NAME
------- -------------------------------------------- ---------------------
4 /u01/app/oracle/oradata/orcl/users01.dbf USERS
三、oracle 10g可以删除临时表空间的文件
alter database tempfile '/home/oracle/temp01.dbf' drop including datafiles;
相关推荐
### Oracle 数据文件删除命令详解 在Oracle数据库管理与维护的过程中,经常会遇到需要删除特定数据文件的情况。例如,当数据文件损坏或不再需要时,通过适当的命令进行删除是非常必要的。本文将详细介绍如何使用...
本篇文章将深入探讨Oracle数据库中物理删除数据文件的恢复方法,帮助你掌握这一关键的故障恢复技能。 首先,我们要理解数据文件物理删除的后果。一旦数据文件被物理删除,不仅文件本身消失,Oracle数据库可能无法...
在Oracle数据库管理中,删除表空间数据文件是一项关键操作,涉及到数据的安全性和系统的稳定性。本文将详细介绍如何正确地删除Oracle表空间数据文件,探讨OFFLINE和OFFLINE DROP的区别,以及在操作系统层面删除数据...
在Oracle数据库管理中,物理删除数据文件是一种严重的情况,可能导致数据丢失或系统不可用。本文将深入探讨如何在危机情况下进行Oracle数据文件的物理删除恢复。这个话题对于DBA(数据库管理员)来说至关重要,因为...
### Oracle 数据文件误删除后的灾难恢复策略 在日常的数据库管理工作中,误删除重要的 Oracle 数据文件是一种常见的且可能带来严重后果的操作失误。本文将详细探讨当遇到 Oracle 数据文件被误删除的情况时,如何...
Oracle 表空间与数据文件 Oracle 表空间是 Oracle 数据库中一个逻辑集合,包含一个或多个数据文件。表空间是 Oracle 数据库中的一个逻辑存储对象,用于存储永久段、临时段和回滚段等数据。 Oracle 表空间分类有...
在Oracle数据库管理中,了解和监控表空间及数据文件的状态对于数据库管理...同时,根据表空间和数据文件的使用情况,还可以调整表空间的大小,增加或删除数据文件,或者改变数据文件的存储位置,以满足不同的业务需求。
Oracle 定时删除数据 并释放空间 ,创建存储过程并使用job完成。
### Oracle 数据文件移动方法详解 #### 一、背景与目的 在Oracle数据库管理过程中,由于存储设备容量限制或为了优化性能等因素,有时需要对数据库的数据文件进行移动操作。本篇文章将详细介绍如何安全有效地将...
3. 删除实例数据文件和 dump 文件:删除实例数据文件和 dump 文件是删除 Oracle 实例的重要步骤。可以使用find 命令查找实例数据文件和 dump 文件,然后删除这些文件。 4. 删除其他配置文件:删除其他配置文件是...
1. **确认数据文件(DBF)存在**:首先确认原始数据库中的数据文件仍然存在,并且未被覆盖或删除。 2. **准备恢复环境**: - 安装相同版本的Oracle数据库软件。 - 创建一个与原始数据库名称相同的实例。 3. **备份...
以下将详细介绍标题和描述中提到的Oracle RAC集群数据文件改变目录的操作步骤。 **一、修改SPFILE位置** 1. **查看SPFILE信息**:通过SQL*Plus连接到RAC的任意实例,使用`SHOW PARAMETER spfile`命令查看当前...
4. **关闭并替换数据文件**:关闭Oracle服务,使用备份的数据文件覆盖新实例中的数据文件。同时,删除新生成的控制文件和重做日志文件。 5. **启动Oracle监听**:启动Oracle服务以确保监听器运行。 6. **以SYS用户...
ODU3.9版本是针对Oracle Data Pump的一项特定更新,它提供了一种直接从Oracle数据库中抽取数据文件的方法,适用于处理如意外删除数据(如`TRUNCATE`操作)或误删表等紧急情况。 Oracle Data Pump的工作原理基于数据...
本文将深入探讨如何应对"非常规删除ORACLE数据文件"的问题,并提供恢复策略。 首先,我们要理解在Oracle中删除数据文件的后果。数据文件是表空间的一部分,表空间则包含数据库的表、索引和其他对象。当数据文件被...
1. **Oracle 表空间(Tablespaces)**:表空间是Oracle数据库中存储数据的基本单位,它由一个或多个数据文件组成。每个表、索引和其他对象都会被分配到特定的表空间中。理解表空间的工作原理对于管理数据库空间至关...
在导入前,可能需要对CSV文件进行预处理,例如删除非法字符、转换数据格式等。导入后,可能需要进行数据校验、索引重建等后处理步骤。这些可以通过编写Shell脚本或PL/SQL程序来实现。 7. **性能优化** 在导入过程...
通过分析 Oracle 日志文件,可以追踪用户的恶意操作、恢复误删除的数据、执行事后审计等。Oracle 公司提供的 LogMiner 是一种effective且low-cost的方法来分析 Oracle 日志文件。 LogMiner 是一种工具,可以将 ...