`
frank1998819
  • 浏览: 733838 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

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.

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;

 

ALTER DATABASE 与 ALTER TABLESPACE OFFLINE的区别

一.DataFile脱机或联机的两种方法:

① ALTER DATABASE 语句修改单独的DataFile

② ALTER TABLESPACE 语句修改所有的DataFile

1、在ARCHIVRLOG模式下的更改DataFile状态

ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' ONLINE;

ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' OFFLINE;

或者用文件号来表示 :

ALTER DATABASE DATAFILE 5 ONLINE;

ALTER DATABASE DATAFILE 5 OFFLINE;

注:只有在ARCHIVELOG模式下才可使用ALTER DATABASE来更改DataFile

 

2、在NOARCHIVELOG模式下使DataFile脱机

由于在NOARCHIVELOG模式下,数据文件脱机后会造成数据的遗失,所以只能使用ALTER DATABASE语句下带有DATAFILE和OFFLINE DROP子句的选项将该DataFile直接取消,例如该DataFile只包含临时段数据,并没有备份时

 

ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users3.dbf' OFFLINE DROP;

3、修改TableSpace中所有DataFile或TempFile的可用性

ALTER TABLESPACE ... DATAFILE {ONLINE|OFFLINE}

ALTER TABLESPACE ... TEMPFILE {ONLINE|OFFLINE}

 

注:修改某TableSpace中的所有数据文件,但是TableSpace本身的状态不改变。

总结:

① ALTER TABLESPACE可以在数据库装载状态时发布,无需打开

② 涉及到系统表空间、撤销表空间、默认临时表空间时,必须是未打开的数据库

③ ALTER DATABASE DATAFILE 语句中必须填入文件全名

 

二. 表空间 与 数据文件 脱机的区别

1. ALTER TABLESPACE ... OFFLINE

Does a checkpoint on the datafiles

Takes the datafiles offline

表空间Offline时,数据文件的SCN会被冻结,而且表空间的数据文件offline/online时又会发生文件检查点,使单个数据文件SCN和数据库其他问题不一致。

表空间online时,Oracle会取得当前SCN,解冻offline文件SCN,和当前SCN同步。

tablespace offline有几种选项可供选择normal, temporary,immediate, for recovery,而在datafile中则没有这些选项。

 

2.  ALTER DATABASE DATAFILE ... OFFLINE

单纯的offline datafile,将不会触发文件检查点,只有针对offline tablespace的时候才会触发文件检查点,这也是为什么online datafile需要media recovery而online tablespace不需要。

注:只有在ARCHIVELOG模式下才可使用ALTER DATABASE来更改DataFile

分享到:
评论

相关推荐

    oracle数据文件的删除命令

    oracle数据文件的删除命令,方便学习oracle的新手自己处理错误

    Oracle必杀技物理删除数据文件恢复

    Oracle必杀技物理删除数据文件恢复,详解了实用的Oracle物理表空间删除修复命令。

    Oracle 主要配置文件介绍

    保护数据考虑的 尤其在 CAMS 双机应用模式下 能够保证数据的一致性 具体的修改操作可参考 Linux与 Oracle 安装手册 初始化参数文件是一个包含实例配置参数的文本文件 这些参数被设置为特 定的值 用于...

    最全的oracle常用命令大全.txt

    ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...

    oracle10g表空间操作命令

    包括:表空间的创建,调整表空间,删除表空间,删除数据文件,增加数据文件,维护表空间的自动扩展属性,设置表空间脱机,联机,读写 移动表空间 查看表空间使用情况

    oracle10g教程从入门到精通.doc

    不知有没有帮助二: Oracle的基本使用--基本命令 5 连接命令 5 文件操作命令 5 交互式命令 5 显示和设置环境变量 6 三:oracle用户管理 6 创建用户 6 给用户修改密码 6 删除用户 6 用户管理的综合案例 6 使用profile...

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

    程序设计,第5~9章分别介绍了Oracle11g的体系结构、表空间与数据文件的管理、启动和关闭数据库、网络服务与管理,第10—13章介绍了有关安全的几个内容(权限、角色、概要文件、用户的管理),第14—17章介绍了几种...

    ORACLE字符集及数据泵远程备份命令.bat

    windows环境下,远程数据泵备份ORACLE数据库,按时间命名文件,并自动定期删除本地文件的批处理,设置为计划任务即可,##后面的注释可删除

    DOS命令卸载oracle数据库

    还在为无法卸载oracle数据库而烦恼吗,还在为不知道用什么方法卸载oracle数据库而苦恼吗,还在为安装此数据库一次次的重装系统而烦心吗,面对这此烦心事,我方的这个文件可以帮助您解决卸载oracle数据库时遇到的种种...

    如何找回“丢失”的数据(Oracle 10g)

    我们在进行数据库操作时,可能会因为不小心而导致误删除大量的有价值的数据. 在ORACLE10G数据库运行正常的性况下,我们需要掌握这个极为实用的技术来弥补这个错误. 本资料提供了完整的PPT,操作指南相关的命令,相关操作...

    Oracle11g从入门到精通2

    1.3.2 数据文件 1.3.3 控制文件 1.3.4 日志文件 1.3.5 表空间 1.3.6 段 1.3.7 区 1.3.8 数据块 1.4 Oracle 11g的新特性 1.4.1 数据库管理部分 1.4.2 PL/SQL部分 1.4.3 其他部分 第2章 Oracle...

    oracle实用教程-韩顺平

    2.Oracle 的基本使用--基本命令 3.oracle 用户管理 4.oracle 表的管理(数据类型,表创建删除,数据 CRUD 操作) 5.oracle 表查询(1) 6.oracle 表查询(2) 7.java 操作 oracle 8.oracle 中事务处理 9.oracle 的函数 10...

    Oracle数据库学习指南

    30. 没有备份、只有归档日志,如何恢复数据文件 31. 哪些初始化参数最影响Oracle系统性能 32. 如何查看数据库的字符集 33. 如何启动ARCHIVELOG模式 34. 如何使‘CREATE TABLE AS SELECT’能支持ORDER BY ? 35....

    Oracle11g从入门到精通

    1.3.2 数据文件 1.3.3 控制文件 1.3.4 日志文件 1.3.5 表空间 1.3.6 段 1.3.7 区 1.3.8 数据块 1.4 Oracle 11g的新特性 1.4.1 数据库管理部分 1.4.2 PL/SQL部分 1.4.3 其他部分 第2章 Oracle在Windows...

    oracle实验报告

    例3 建立一个批命令文件对查询到的数据以报表的形式输出并将其保存到指定的文件中。 处理方法:利用SQL*PLUS语言工具(也可以使用其他文本编辑器)建立批命令的.SQL文件。在“SQL>”提示符下,使用EDIT命令在”E:\”...

    oracle 12c 数据库 教程

    数据文件(data file) 4 联机日志文件(online redo log file) 4 控制文件(control file) 5 归档模式:冷备份,离线备份,热备份,联机备份 6 Spfile:二进制,9i 之后 Pfile:文本,9i 之前 ...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    8-14 缺省临时表空间 8-15 缺省临时表空间的限制 8-16 脱机状态 8-17 只读表空间 8-19 删除表空间 8-20 改变表空间的大小 8-21 允许数据文件的自动增长 8-22 手工改变数据文件的大小 8-23 给表空间添加数据文件 8-24...

    Oracle.11g.从入门到精通 (2/2)

    1.3.2 数据文件 1.3.3 控制文件 1.3.4 日志文件 1.3.5 表空间 1.3.6 段 1.3.7 区 1.3.8 数据块 1.4 Oracle 11g的新特性 1.4.1 数据库管理部分 1.4.2 PL/SQL部分 1.4.3 其他部分 第2章 Oracle在Windows平台上的安装...

    Oracle数据库管理员技术指南

    7.8.2 包含活动回退段的数据文件的丢失 7.8.3 其他数据文件的丢失 7.8.4 执行表空间恢复 7.8.5 执行数据文件恢复 7.8.6 在没有数据文件备份时怎样进行 恢复 7.8.7 恢复丢失的临时表空间 7.8.8 只读表空间丢失...

Global site tag (gtag.js) - Google Analytics