oracle怎么将数据删除文件,oracle删除数据文件

在我们详细介绍之前,我们必须说清楚一点:Oracle不提供如删除表、视图一样删除数据文件的方法,数据文件是表空间的一部分,所以不能“移走”表空间。

一、使用offline数据文件的方法

非归档模式使用:alter database datafile '...' offline drop;

归档模式使用:  alter database datafile '...' offline;

说明:

1)         以上命令只是将该数据文件OFFLINE,而不是在数据库中删除数据文件。该数据文件的信息在控制文件种仍存在。查询v$datafile,仍显示该文件。

2)         归档模式下offline和offline drop效果是一样的

3)         offline后,存在此datafile上的对象将不能访问

4)         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.

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 “高水位”所致,那么怎么把这些数据文件的大小降下来呢?解决办 ...

linux删除数据文件无备份恢复

参考 : http://www.lunar2013.com/2013/06/linux-%E8%AF%AF%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E6%81%A2%E ...

oracle删除日志文件

oracle删除日志文件 删除日志文件的语法例如以下: alter database drop logfile member logfile_name; 删除日志文件须要注意例如以下几点: 1.该日志 ...

Oracle-11g 从表空间删除数据文件

从表空间删除数据文件前提条件 如果欲从表空间中删除数据文件,那么该数据文件必须为空,否则将报出"ORA-03262: the file is non-empty"的错误.   从表 ...

Oracle单个数据文件超过32G后扩容

Oracle单个数据文件超过32G后扩容   表空间数据文件容量与DB_BLOCK_SIZE的设置有关,而这个参数在创建数据库实例的时候就已经指定.DB_BLOCK_SIZE参数可以设置为4K.8K. ...

oracle删除数据后表空间仍过大问题解决方法

-----亲测有效------- --一.备份原始数据库库--1.备份空表--在plsql里面执行一下这句话 然后把结果集 再执行一把 再导数据select 'alter table '||table ...

oracle rename数据文件的两种方法

oracle rename数据文件的两种方法 2012-12-11 20:44 10925人阅读 评论(0) 收藏 举报  分类: oracle(98)  版权声明:本文为博主原创文章,未经博主允许不 ...

Oracle误删数据文件后出现oracle initialization or shutdown in progress解决

一.错误分析 1.首先本人在出现这种情况的背景是执行如下SQL语句后生成的表空间 --自定义表空间 数据表空间 临时表空间 CREATE TEMPORARY TABLESPACE HOUSE_TEMP ...

随机推荐

计算Div标签内Checkbox个数或已被disabled的个数

先看下面的html: 计算div内的checkbox个数:$('#divmod input[type="checkbox"]').length 计算div内checkbox被dis ...

UVA10325 The Lottery(容斥原理)

题意: 给n,m,和m个数(k1~km).求1~n中有多少个数不是(k1~km)中任意一数的倍数. 题解: 容斥模板题.反面考虑,a的倍数有n/a个:既是a,也是b的倍数,即lcm(a,b)的倍数有n ...

PHP 图片上传工具类(支持多文件上传)

====================ImageUploadTool======================== <?php class ImageUploadTool { private ...

工厂食堂3D指纹考勤系统解决方案

指纹考勤就餐管理系统利用3D活体指纹技术完成对正式员工就餐管理.就餐者只需办理完入职手续,并登记考勤指纹,就可通过考勤指纹在工厂食堂领餐. 大多数工厂食堂就餐是福利性的,只准员工就餐,不准员工带亲戚朋 ...

轻量级ORM框架 Dapper快速学习

好在有师兄师姐一起带着做,所以开始没那么困难,但是由于大学涉猎范围有限,往往有很尴尬的时候,不懂构造方法重载,去“请教”,本来以为师兄会帮忙写好,结果“我念,你来写”,被深深的激励了一把,后来就早出晚 ...

WordPress翻译中 &lowbar;&lowbar;&lpar;&rpar;、&lowbar;e&lpar;&rpar;、&lowbar;x、&lowbar;ex 和 &lowbar;n 的用法及区别

编译函数 WordPress使用了下面几个函数来方便语言本地化. __() _e() _x() _ex() _n() 以上所列的函数是用来包含所需翻译的字符串的,根据字符串的不同参数和输出类型,需要使 ...

java读取properties配置文件信息

一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...

SpringContextHolder 静态持有SpringContext的引用&lpar;如何取得Spring管理的bean &rpar;

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

重新安装Ubuntu12&period;04

重新安装Ubuntu12.04 之所以我重新安装Ubuntu,因为我第一次给根目录分配的空间过小,好像是20GB吧~结果编译Android的时候,编译了3个小时候直接中止掉了.郁闷.这个也告诉我们一定 ...

C&num;代码实现,确保windows程序只有一个实例(instance)

static class Program { /// /// 应用程序的主入口点. /// [STAThread] static vo ...

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中,删除带有数据数据文件可以是一项非常危险的操作。这是因为,如果您不小心删除了一个包含数据数据文件,将导致您的数据库出现损坏或无法启动。 如果您需要删除某个数据文件,您应该首先确定该数据文件是否包含在任何表空间中。您可以使用以下SQL语句查询: SELECT file_name, tablespace_name FROM dba_data_files WHERE file_name = 'xxxxx'; 在此SQL语句中,“xxxxx”是您要删除数据文件的名称。如果此查询返回结果,则意味着该数据文件正被某个表空间使用。 那么,您需要将该数据文件从任何使用它的表空间中删除。您可以使用以下SQL语句来查询哪些表空间正在使用该数据文件: SELECT tablespace_name FROM dba_data_files WHERE file_name = 'xxxxx'; 一旦您确定了哪些表空间使用该数据文件,您需要将该数据文件从这些表空间中删除。您可以使用以下SQL语句从表空间中删除数据文件: ALTER TABLESPACE xxxxx OFFLINE; ALTER DATABASE DATAFILE 'xxxxx' OFFLINE; DROP TABLESPACE xxxxx INCLUDING CONTENTS AND DATAFILES; 在此SQL语句中,“xxxxx”是表空间的名称和数据文件的名称。 最后,您可以使用以下SQL语句删除数据文件: ALTER DATABASE DATAFILE 'xxxxx' OFFLINE; DROP DATAFILE 'xxxxx'; 在此SQL语句中,“xxxxx”是要删除数据文件的名称。 需要注意的是,在执行此操作之前,我们建议您备份您的数据库,以便在发生任何意外情况时可以轻松地恢复数据文件。此外,不要在生产数据库上进行这些操作,最好在测试数据库上进行测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值