(一)OFFLINE TABLESPACE

ALTER TABLESAPCE OFFLINE可用选项包括NORMAL, TEMPORARY, IMMEDIATE, FOR RECOVERY

  1. OFFLINE NORMAL时该表空间的所有数据文件均要ONLINE状态,ONLINE不用RECOVER

Specify NORMAL to flush all blocks in all data files in the tablespace out of the system global area (SGA). You need not perform media recovery on this tablespace before bringing it back online. This is the default.

  1. OFFLINE TEMPORARY会对表空间ONLINE的数据文件做检查点,OFFLINE数据文件不做检查点。ONLINE表空间时可能需要RECOVER

Specify TEMPORARY, then Oracle Database performs a checkpoint for all online data files in the tablespace but does not ensure that all files can be written. Files that are offline when you issue this statement may require media recovery before you bring the tablespace back online.

  1. OFFLINE IMMEDIATE对表空间所有数据文件均不做检查点,ONLINE需要RECOVER

Specify IMMEDIATE, then Oracle Database does not ensure that tablespace files are available and does not perform a checkpoint. You must perform media recovery on the tablespace before bringing it back online.

NOTE: 没有offline drop的选项

(二)OFFLINE DATAFILE

  1. ALTER DATABASE DATAFILE OFFLINE可用选项只有DROP

OFFLINE DROP表示强行OFFLINE并不会实际DROP数据文件,但注意OFFLINE DROP不会去管数据库是否归档,归档模式下OFFLINE DROP可通过RECOVER后ONLINE; 非归档模式无法RECOVER此文件相当于DROP.

表空间OFFLINE一般会做CHECKPOINT,而数据文件OFFLINE不会,因此前者ONLINES可以不用恢复后者需要

表空间OFFLINE可以在归档以及非归档下使用,数据文件OFFLINE只能在归档下,非归档只能OFFLINE DROP但数据文件无法恢复ONLINE

  1. 表空间OFFLINE则所有DATAFILE均OFFLINE,某个或全部数据文件OFFLINE不影响表空间ONLINE,表空间某个数据文件OFFLINE,查询表空间的表时使用了此数据文件将报错,没有使用则没问题
  2. 表空间OFFLINE只能在OPEN下执行,数据文件OFFLINE可以在MOUNT/OPEN下执行
  3. 不能对临时表空间OFFLINE
  4. 使用ALTER TABLESPACE .. DROP DATAFILE时,以下状态的DATAFILE无法DROP:
  1. OFFLINE的数据文件无法被DROP

2) 所属表空间的第一个FILE是不允许被删除的
3) 非空文件是不允许被删除的

(三)Archivelog测试

SQL> create tablespace test datafile '/oracle/test01.dbf' size 10m,'/oracle/test02.dbf' size 10m ;

SQL> select file_name , file_id from dba_data_files where TABLESPACE_NAME='TEST';

FILE_NAME                      FILE_ID

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

/oracle/test01.dbf                 5

/oracle/test02.dbf                 6

1. 表空间

SQL> alter tablespace test offline;

SQL> select file#, checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#

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

1            1028044

2            1028044

3            1028044

4            1028044

5            1028606

6            1028606

在offline表空间时对此表空间进行了checkpoint

SQL> alter tablespace test online;

注:没有alter tablespace test offline drop;

  1. 数据文件

SQL> ALTER SYSTEM CHECKPOINT;    ---使上面的checkpoint_change#一致

SQL> Alter database datafile 5 offline;

SQL>  select file#, checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#

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

1            1028769

2            1028769

3            1028769

4            1028769

5            1028769

6            1028769

并未对单个文件进行checkpoint,另外test表空间状态还是online的

此时如果有表使用了此数据文件,查询时会报错ORA-00376:

$ oerr ora 00376

00376, 00000, "file %s cannot be read at this time"

// *Cause:  attempting to read from a file that is not readable. Most likely

//          the file is offline.

// *Action: Check the state of the file. Bring it online

如果有表使用了其它数据文件查询时则不会报错

SQL> Alter database datafile 5 online;

ORA-01113: file 5 needs media recovery

ORA-01110: data file 5: '/oracle/test01.dbf'

SQL> recover datafile 5;

SQL> Alter database datafile 5 online;

SQL>  select file#, checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#

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

1            1028769

2            1028769

3            1028769

4            1028769

5            1028851

6            1028769

)Noarchivelog测试

SQL> startup mount;

SQL>  alter database noarchivelog;

SQL> alter database open;

SQL> alter tablespace test offline;

SQL> alter tablespace test online;

SQL> alter database datafile 5 offline;

ORA-01145: offline immediate disallowed unless media recovery enabled

SQL> alter database datafile 5 offline drop;   --ok

SQL> alter database datafile 5 online;   ----恢复不回去了

ORA-01113: file 5 needs media recovery

ORA-01110: data file 5: '/oracle/test01.dbf'

这里注意下,即使未开归档还是可以通过redo log来recover的,如这里执行recover datafile5是可以恢复的,然后在online即可,如果这里多次执行alter system switch logfile; 肯定恢复不了了

SQL> select file_name , file_id from dba_data_files where TABLESPACE_NAME='TEST';

FILE_NAME                      FILE_ID

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

/oracle/test01.dbf                 5

/oracle/test02.dbf                 6

可以offline drop并不会实际drop数据文件, 可以看成是强行offline

SQL> alter tablespace test drop datafile 5;

ORA-03263: cannot drop the first file of tablespace TEST

不能删除数据文件只能删除表空间了

这里要恢复应该只能导出数据,删除表空间再重建导入了

SQL> drop tablespace test including contents and datafiles;

再重新建个新表空间测试下是否能drop第二个数据文件:

SQL> create tablespace lin datafile '/oracle/lin01.dbf' size 10m,'/oracle/lin02.dbf' size 10m ;

SQL> select file_name , file_id from dba_data_files where TABLESPACE_NAME='LIN';

FILE_NAME                      FILE_ID

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

/oracle/lin01.dbf                  7

/oracle/lin02.dbf                  8

SQL>  alter database datafile 8 offline drop;

SQL>  alter tablespace lin drop datafile 8;

ORA-03264: cannot drop offline datafile of locally managed tablespace

SQL> drop tablespace lin including contents and datafiles;

(五)是否只能在OPEN下使用

SQL> startup mount;

SQL> alter database archivelog;

SQL> alter tablespace test offline;

ORA-01109: database not open

SQL> alter database datafile 5 offline;    --ok, 注这里不开归档还是会报上面的错的

SQL> alter database datafile 5 online;     --ok

SQL> alter database datafile 5 offline drop;  --ok

SQL> alter database datafile 5 online;   --ok

OS执行:

$ mv test01.dbf test01.dbf.bak

$ mv test02.dbf test02.dbf.bak

SQL> alter database datafile 5 offline;

SQL> alter database datafile 6 offline;

SQL> alter database open;   --ok

SQL> select status from  dba_tablespaces where TABLESPACE_NAME='TEST';

STATUS

---------

ONLINE

可见非关键表空间只要offline掉数据文件还是可以open数据库的

ORACLE表空间与数据文件OFFLINE区别相关推荐

  1. oracle表空间于表数据啥意思,初识Oracle表空间与数据文件

    初识Oracle表空间与数据文件,描述oracle数据库的逻辑结构,创建表空间,改变表空间大小,为临时段分配空间,改变表空间状态,改 学习目标 1.描述Oracle数据库的逻辑结构 2.创建表空间 3 ...

  2. Oracle 表空间与数据文件

    --============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...

  3. Oracle表空间和数据文件

    读书使人充实,思考使人深邃,交谈使人清醒!-----------<富兰克林> 洒一屋的芬芳,画一幕的色彩,看一书的深远.从来没有什么事情是容易的,人最难得的永远是一颗永不停歇的心.学习Or ...

  4. [转]Oracle 表空间与数据文件

    转自: http://blog.csdn.net/robinson_0612/article/details/5611738 一.概念 表空间:是一个或多个数据文件的逻辑集合 表空间逻辑存储对象:永久 ...

  5. oracle表独立数据文件,oracle表空间及数据文件

    1. Oracle 的逻辑结构 数据库的物理结构是由数据库的操作系统文件所决定,每一个 Oracle 数据库是由三种类型的文件组成:数据文件.日志文件和控制文件.数据库的文件为数据库信息提供真正的物理 ...

  6. oracle 表空间的数据文件丢失或损坏的恢复

    表空间的数据文件丢失或损坏的恢复 select ts#,file#,name from v$datafile; 查看表空间和编号 删除一个表空间文件 此时关闭数据库 再开启时发现系统提醒缺少文件 使用 ...

  7. 续: [转]Oracle 表空间与数据文件

    续 http://nvd11.blog.163.com/blog/static/20001831220127710369356/ 五.数据文件 数据文件是数据库中最重要的一个要求,是所有的数据库内容存 ...

  8. oracle为表空间增加数据文件,创建Oracle表空间,增加数据文件的步骤

    经过长时间学习创建Oracle表空间,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西. 1.先查询空闲空间 select tablespace_name,file_id,blo ...

  9. Oracle表空间及数据文件操作

    查看所有表空间: sql> SELECT * FROM dba_tablespaces; 创建test表空间并创建数据文件test_01.dbf: test_01.dbf 初始大小为10m,开启 ...

最新文章

  1. Go 2将添加错误处理和泛型
  2. React Native组件开发指南
  3. linux2.6内核compat_ioctl函数
  4. Java笔记-WEB算术验证码
  5. date time 分开存储如何合并_如何将多个日期跨度合并/拆分为一个时间轴(Oracle 11g)?...
  6. Java多线程基本概念
  7. iOS启动页广告XHLaunchAd
  8. 人脸对齐(七)--JDA算法
  9. UML?类图中聚合和组合的区别
  10. 常用DOS命令及用法
  11. python编程基础-类的使用
  12. EXCEL中怎么把单元格中的数值提取出来?Excel提取单元格数字或某格式的字符串,支持正则式提取的绿色工具
  13. 交换机console是干什么的
  14. DS-5 csat简单使用-dump memory
  15. JavaScript闭包的粗浅理解
  16. 干货来袭!手动搭建高可用的Redis5-0分片集群
  17. how2j:JAVA学习笔记——DAY 8
  18. GitHub登录流程
  19. 生日祝福小程序_广告配音剪映零基础入门教程第二十六篇:如何给朋友制作生日祝福视频...
  20. 三种经典博弈(巴什博弈,威佐夫博奕,尼姆博奕)

热门文章

  1. 数组转字符串的方法(3种)
  2. redis经常遇到的三个问题以及解决方案
  3. 进程同步——临界区(操作系统)
  4. Android -- 贝塞尔曲线公式的推导和简单使用
  5. java读取共享文件_使用文件流,读写网络共享盘
  6. 用PC上的Chrome 模拟手机浏览器
  7. Feedthrough
  8. C++ 字符数组 :字符数组相互赋值
  9. 使用SLM方法降低PAPR
  10. python可视化工具之matplotlib(1)基本图表