表空间的状态(一) - ONLINE和OFFLINE

前几天问一个表空间状态的问题,也暴露了自己基础知识的薄弱,之所以总结如下两篇博文,主要还是让自己静下心来,补一下相关知识点,并通过实践强化自己的理解。

主要参考:

《11g Concept》

《11g Administrator's Guide》

表空间的ONLINE和OFFLINE状态

1. 只要数据库处于OPEN状态,除了SYSTEM表空间外的其他表空间,都可以将其置为online或offline状态。SYSTEM表空间之所以不能置为offline,是因为其中保存的数据字典需要一直使用。将表空间置为offline,可能的原因包括维护、备份以及恢复等目的。

3. 如果表空间处于offline状态,那么Oracle不会允许任何对该表空间中对象的SQL执行。表空间置为offline时仍处于活动状态的语句在交易级别并不会受影响。Oracle会保存这些尚未完成语句相关的回滚数据到SYSTEM表空间。当表空间置为online时,如果有必要,那么Oracle会应用这些回滚数据。

3. 除了Oracle外,没有任何应用能够读取或编辑offline的表空间。因此,offline的表空间更不能导到其他数据库。

4. Oracle在一些场景下会自动切换表空间状态从online到offline。例如,当数据库写进程DBWn,尝试几次仍不能写入表空间的数据文件中。用户访问offline表空间时会收到一个报错。如果造成这种磁盘IO失败的问题是介质错误,解决这问题之后需要恢复表空间。

5. 将表空间置为offline可能包含如下原因:

(1) 需要禁止访问一部分数据库的场景。

(2) 执行一次offline表空间备份(尽管表空间可以在online和使用情况下备份)。

(3) 当更新或维护应用时,需要让应用和对应的表临时不能访问。

(4) 重命名或重分配表空间中的数据文件。

当表空间置为offline,数据库会将关联的所有数据文件都置为offline状态。但是如下表空间不能置为offline:

> SYSTEM

> UNDO表空间

> 临时表空间

6. 将表空间置为offline之前,若有用户设置该表空间为其默认表空间,需要考虑是否需要改变其默认表空间。之所以这样做,是因为这些用户将不能访问offline表空间中的对象。

7. 使用ALTER TABLESPACE ... OFFLINE语句可以添加如下参数:

NORMAL:如果表空间的任何数据文件没有出现错误,表空间能够正常地置为offline。如果出现写错误,那么表空间中的数据文件不会被置为offline。当明确使用OFFLINE NORMAL,数据库会对所有数据文件进行一次checkpoint检查点事件,NORMAL是默认设置。

TEMPORARY:表空间能够临时置为offline状态,即使一个或多个文件出现错误。当使用OFFLINE TEMPORARY,数据库会将还没有置为offline的数据文件进行置位操作,并执行检查点事件。

如果没有文件是offline,但使用了temporary语句,那么当将表空间置为online时不需要介质恢复。然而,如果表空间的一个或多个文件由于写入错误因此导致offline状态,能够临时将表空间置为offline状态,恢复online之前需要对表空间进行恢复操作。

IMMEDIATE:表空间能够立即设置为offline状态,数据库不会进行任何数据文件的检查点事件。当使用OFFLINE IMMEDIATE,那表空间置为online之前需要对表空间进行介质恢复操作。但是如果数据库处于NOARCHIVELOG模式,表空间就不能立即置为offline状态。

8. 如果必须设置表空间为offline状态,建议首先使用默认的NORMAL语句。他会确保当表空间置为online前不需要执行恢复操作,尽管在不完全恢复之后,使用LATER DATABASE OPEN RESTLOGS语句重置了redo日志sequence。

仅仅当不能使用NORMAL方式将表空间置为offline时,可以使用TEMPORARY。使用TEMPORARY后,在表空间置为online前,仅需要恢复那些出错的offline文件。

如果NORMAL和TEMPORARY都失败时,才可以选择使用IMMEDIATE选项。

9. 如果表空间没有“干净地”置为offline(也就是没有使用NORMAL语句执行的offline操作),那么置为online前需要首先对该表空间执行介质恢复操作。否则数据库会报错,表空间仍处于offline状态。

实验:

1. 设置表空间DCSOPEN_TBS为offline

SQL> alter tablespace dcsopen_tbs offline;

Tablespace altered.

2. 查询数据文件状态

select file#, name, status from v$datafile;

file  #name 
status
---  ------------------------------------------------------ ----------

11   /oracle/oradata_petest/petest/dcsopen_tbs02.dbf OFFLINE

DCSOPEN_TBS使用的数据文件状态已经置为OFFLINE。

3. 尝试查询已OFFLINE表空间

SQL> select * from test;
select * from test
              *
ERROR at line 1:
ORA-00376: file 7 cannot be read at this time
ORA-01110: data file 7: '/oracle/oradata_petest/petest/dcsopen_tbs01.dbf'

报错,提示此时数据文件不能读。

4. 将表空间置为online

SQL> alter tablespace dcsopen_tbs online;

Tablespace altered.

file  #name 
status
---  ------------------------------------------------------ ----------

11   /oracle/oradata_petest/petest/dcsopen_tbs02.dbf ONLINE

未完待续。。。

To be continued ...

时间: 2024-09-20 22:56:58

表空间的状态(一) - ONLINE和OFFLINE的相关文章

表空间的状态(二) - read/write

表空间状态-READ ONLY.READ WRITE 1. 只读表空间的主要用途就是为了消除对数据库大部分静态数据的备份和恢复的需要.Oracle不会更新只读表空间爱你的文件,因此这部分文件可以存储于只读介质中,例如CD-ROM或WORM drives. 2. 只读表空间并不是为了满足归档的要求.只读表空间不能修改.如果需要修改只读表空间中的记录,则需要先将表空间置为read/write.更新表空间后,可以重置为只读. 3. 由于只读表空间不能修改,所以只要没有置为read/write,就不需要

数据文件、表空间offline用法及区别

对数据库的脱机包括数据文件的脱机和对表空间的脱机,表空间脱机实际就是表空间对应的所有数据文件脱机. 1.         数据文件OFFLINE 数据文件添加到表空间之后不能够被删除的,没有语法支持这么做,如果想不使用该数据文件,唯一是将数据文件设置为OFFLINE状态.执行以下步骤将数据文件设置为OFFLINE状态: 1)         如果是归档模式可以执行如下SQL设置数据文件的状态为OFFLINE: ALTER DATABASE DATAFILE 'XXXX.DBF' OFFLINE;

测试2——表空间管理 段空间管理 段收缩测试

表空间的管理  --简要语法:     CREATE [BIGFILE | SMALLFILE] [TEMPORARY] TABLESPACE tablespace name     DATAFILE datafile spec | TEMPFILE tempfile spec     [MINIMUM EXTENT minimum extent size]     [BLOCKSIZE blocksize]     [[COMPRESS|NOCOMPRESS] DEFAULT STORAGE

AG阅读总结10.1.1——表空间管理*

原文转自一沙弥的世界:http://blog.csdn.net/robinson_0612/article/details/5611738 一.概念     表空间:是一个或多个数据文件的逻辑集合     表空间逻辑存储对象:永久段-->如表与索引                         临时段-->如临时表数据与排序段                         回滚段-->用于事物回滚或闪回内存的撤销数据     表空间分类:系统表空间(system.sysaux),非系

Oracle 表空间与数据文件

--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念     表空间:是一个或多个数据文件的逻辑集合     表空间逻辑存储对象:永久段-->如表与索引                         临时段-->如临时表数据与排序段                      回滚段-->用于事物回滚或闪回内存的撤销数据     表空间分类:系统表空间(sys

探索ORACLE之RMAN_07整个业务表空间丢失恢复

探索ORACLE之RMAN_07整个业务表空间丢失恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com   1.     整个业务表空间丢失恢复 注意:以下的所有实验,都是基于上面的全库备份来做的恢复. 2.1 删除wwl表空间的所有数据文件 [root@wwldb ~]# cd /DBData/WWL/ [root@wwldb WWL]# rm -rf wwl* [root@wwldb WWL]#

ORACLE表空间管理维护

1:表空间概念   在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示,一个数据库由对应一个或多个表空间,表空间逻辑上有一个或多个段(Segment)组成,物理上由一个或多个os file组成.       1.1基本的表空间   系统中默认创建的几个表空间:     SYSTEM     SYSAUX     USERS     UNDOTBS1     EXAM

Oracle 表空间详解

目录 目录 表空间概述 表空间的分类 默认表空间 查看默认的永久表空间 查看默认的TEMP表空间 查看默认的表空间类型 逻辑结构到物理结构的映射 对表空间的操作 查看表空间使用情况 查看数据库拥有的表空间 查看表空间中的数据文件 查看用户拥有的表空间 创建表空间 修改表空间 修改用户的默认和临时表空间 修改表空间的状态 修改表空间的数据文件 删除表空间 用户表空间限额 表空间概述 Oracle的表空间属于Oracle中的存储结构,是一种用于存储数据库对象(如:数据文件)的逻辑空间,是Oracle

【DB2学习】查看一个数据的表空间详情

db2 => list tablespaces show detail            当前数据库的表空间  表空间标识                        = 0  名称                       = SYSCATSPACE  类型                                       = 数据库管理空间  内容                                = 所有持久数据.常规表空间.  状态