Oracle删除客户端APP文件夹,删除数据文件

在我们详细介绍之前,我们必须说清楚一点: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

2where tablespace_name='USERS';

FILE_ID FILE_NAMETABLESPACE_NAME

------- --------------------------------------------------------------

4 /u01/app/oracle/oradata/orcl/users01.dbfUSERS

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

2where tablespace_name='USERS';

FILE_ID FILE_NAMETABLESPACE_NAME

--------------------------------------------------- -------------------

4/u01/app/oracle/oradata/orcl/users01.dbfUSERS

9/u01/app/oracle/oradata/orcl/users02.dbfUSERS

sys@ORCL>drop table test;

Table dropped.

sys@ORCL>create table test tablespace users

2as

3select * from dba_objects;

Table created.

sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents

2where file_id=9;

SEGMENT_NAMEFILE_IDBLOCKS

--------------------------------------------------

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST98

TEST9128

TEST9128

17 rows selected.

sys@ORCL>alter table test move tablespace PERFSTAT; --把表移动到其它表空间

Table altered.

sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents

2where 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

2where tablespace_name='USERS';

FILE_ID FILE_NAMETABLESPACE_NAME

------- -----------------------------------------------------------------

4/u01/app/oracle/oradata/orcl/users01.dbfUSERS

三、oracle 10g可以删除临时表空间的文件

alter database tempfile '/home/oracle/temp01.dbf' drop including datafiles;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值