ITPub博客

首页 > 数据库 > Oracle > OFFLINE和DROP数据文件的理解

OFFLINE和DROP数据文件的理解

原创 Oracle 作者:lusklusklusk 时间:2016-05-06 12:20:21 0 删除 编辑

Offline仅是脱机操作,并不涉及删除,就算是offline for drop\offline drop也仅仅是脱机,和alter database datafile ‘XX’ offline一起

表空间脱机语法是alter tablespace XX offline

 

Drop才是删除操作,和alter tablespace XX drop datafile ‘XX’一起

表空间删除语法是drop tableapce XX INCLUDING CONTENTS AND DATAFILES

 

 

 

将表空间置为offline,可能的原因包括维护、备份以及恢复等目的

表空间处于offline状态,那么Oracle不会允许任何对该表空间中对象的SQL执行。

表空间置为offline时仍处于活动状态的语句在交易级别并不会受影响。

 

Offline后文件的scn会停止,这样就会导致offline文件的scn慢慢的越来越小于dbscn,这样导致只要在offline文件scndbscn期间的归档日志备份包永远不会显示obsolete

offline的数据文件在openrecover/backup的时候不会被check

但是obsolete的时候要被check,谁知道哪天你是不是要online这个datafile

 

 

 

 

一些实验现象

1.表空间有一个数据文件,表建立到表空间上,再drop删除数据文件,看表还存在吗(情况是表空间有一个数据文件已经满了,新建一个数据文件XX,再往新数据文件XX上建表,再drop数据文件XX则表不存在了),当然如果一个表的数据发布到多个数据文件上则某个数据文件被删除了,则select表的某行刚好在这个数据文件上会报错,如果不在这个数据文件上则不会报错

不存在了,提示ORA-00376: 此时无法读取文件 17

 

2.表空间有一个数据文件,表建立到表空间上,数据文件offline,看表还存在吗

不存在了,提示ORA-00376: 此时无法读取文件 17

 

3.表空间有一个数据文件,表建立到表空间上,表空间offline,看表还存在吗

不存在了,提示ORA-00376: 此时无法读取文件 17

 

 

A.表空间有一个数据文件,drop删除数据文件,表建立到表空间上,看表能创建吗(情况是表空间有一个数据文件已经满了,新建一个数据文件XX,再往新数据文件上建表并插入数据使它非空,再drop数据文件XX,再建表,如果第一个数据文件自动增长方式则这样的实验下表能创建)

不能,提示ORA-01658: 无法为表空间 TE123 中的段创建 INITIAL

 

B.表空间有一个数据文件,数据文件offline,表建立到表空间上,看表能创建吗

不能,提示ORA-01658: 无法为表空间 TE123 中的段创建 INITIAL

 

C.表空间有一个数据文件,表空间offline,表建立到表空间上,看表能创建吗

不能,提示ORA-01542: 表空间 'TE123' 脱机, 无法在其中分配空间

 

 

 

一.DB正常运行的过程中alter database datafile ‘XX’ offlinedba_data_files. ONLINE_STATUS对应的数据文件显示为RECOVERv$datafile_header.STATUS显示为offline,如果再把数据文件在OS上移动、改名、删除则v$datafile_header.ERROR显示为FILE NOT FOUND重启后依旧

 

二.DB正常运行的过程中alter tablespace offlinedba_data_files. ONLINE_STATUS表空间对应的数据文件显示为offlinev$datafile_header.STATUS显示为offline,如果再把数据文件在OS上移动、改名、删除则v$datafile_header.ERROR显示为FILE NOT FOUND,重启后依旧

 

三.DB正常运行的过程把数据文件在OS上移动、改名、删除短期内正常各种视图显示也正常如(v$datafile_header. ERROR)再shutdown abortshutdown immediate会报错),再startup会报错自动到mount状态,此时dba_data_files视图不可用,v$datafile_header.STATUS显示为online, v$datafile_header. ERROR显示为FILE NOT FOUND, alter database datafile ‘XX’ offline后再alter database open,发现dba_data_files.ONLINE_STATUS表空间对应的数据文件显示为RECOVERv$datafile_header.STATUS显示为offlinev$datafile_header.ERROR显示为FILE NOT FOUND,重启后依旧

 

综合上面的实验情况可以了解到http://www.itpub.net/thread-2057910-1-1.html32号文件dba_data_files.ONLINE_STATUS显示为offline肯定是直接把SOE表空间offline的结果。

 

 

 

 

 

1. 手工误删除数据文件,看能通过offlineopen
可以的,直接
startup会报错只能到mount状态,这是可以通过alter database datafile ‘XX’ offlinealter database open

 

2.  DB正常运行过程中对数据文件进行offline后再OS上进行删除,重启能正常open
可以的

 

3. Offlineoffline drop区别(offline drop offline for drop的简写)
归档模式下,
offline offline drop选项的作用相同。

非归档模式下,不允许直接 offline 数据文件,必须增加drop选项。

 

     4. 数据文件不能被删除(此处删除是代表文件从磁盘上并数据字典中删除)的三种情况(实验过在read only表空间的情况可以删除)
  采用的方式是:
alter tablesapce XX drop datafile 'XX'
alter
database  datafile 'XX'  offline drop以下三种情况都可以执行脱机。
offline
的数据文件是不允许被删除的
所属表空间的第一个
file是不允许被删除的
非空文件是不允许被删除的


      5.
alter tablesapce tablespace_name drop datafile 'datafile_name'
该语句会删除控制文件和磁盘上的文件,删除之后的原数据文件序列号可以重用。
dba_data_files视图中没有该文件信息了

     6.  alter database datafile 'file_name' offline drop

该语句不会删除数据文件,只是将数据文件的状态更改为recover offline drop命令相当于把一个数据文件至于离线状态,并且需要恢复,并非删除数据文件。 数据文件的相关信息还会存在数据字典dba_data_files和控制文件中












来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2094756/,如需转载,请注明出处,否则将追究法律责任。

上一篇: AWR--Cache size
请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。 Oracle OCM、Mysql OCP, 8年以上DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    438
  • 访问量
    792596