数据库管理员可以在数据库处于开启(open)状态时令除 SYSTEM 表空间(tablespace)之外的任何表空间联机(online)(可访问)或脱机(offline)(不可访问)。SYSTEM 表空间在数据库处于开启(open)状态时总是处于联机状态,因为Oracle需要使用其中的数据字典(data dictionary)。

表空间(tablespace)通常处于联机(online)状态,以便数据库用户访问其中的数据。但是数据库管理员可以在对表空间进行维护,备份或恢复操作时,令表空间脱机(offline)。

令表空间脱机

当一个表空间(tablespace)脱机(offline)后,Oracle不允许任何SQL语句继续引用此表空间内的对象(schema object)。如果一个活动事务(activetransaction)中的 SQL 语句正好在使用被置为脱机状态的表空间内的对象,其事务性也不会被破坏。Oracle使用 SYSTEM 表空间内的延迟回滚段(deferred rollback segment)为此事务中已完成的 SQL 语句保存回滚信息(rollback data)。当脱机表空间被重新置位联机(online)状态后,Oracle会在需要时应用这些回滚信息。

表空间(tablespace)联机(online)或脱机(offline)时,SYSTEM 表空间内的数据字典(data dictionary)会进行记录。如果用户关闭(shut down)一个数据库时某个表空间处于脱机状态,那么这个表空间在数据库下次被装载(mount)、打开(open)后依旧保持脱机状态。

用户只能将一个表空间(tablespace)联机(online)到创建她的数据库中,因为只有这个数据库的 SYSTEM 表空间中才保存着与此表空间相关的必要的数据字典(data dictionary)信息。一个脱机(offline)的表空间不能被Oracle之外的工具打开或编辑。因此脱机表空间不能被移动到其他数据库中。

当某些错误发生时,Oracle会自动地将相关的联机表空间(online tablespace)切换到脱机(offline)状态。例如,当数据库写入进程(database writerprocess,DBWn)多次尝试向表空间的数据文件(datafile)写入失败后,Oracle就会将此表空间切换到脱机状态。此时尝试访问脱机表空间内数据表的用户将会得到错误信息。如果是介质故障(media failure)导致此次磁盘 I/O 失败,用户必须在处理故障后恢复(recover)受影响的表空间。

特殊情况下的表空间使用

用户可以将不同类型的数据分开存储在不同的表空间(tablespace)中。当用户因为某些任务而令某个表空间脱机(offline)后,其余表空间仍保持联机(online)状态,其中的数据对用户依然可用。但是表空间脱机后也会导致特殊情况发生。例如,有两个表空间分别用于存储表及此表对应的索引,将出现以下问题:● 如果包含索引的表空间脱机,那么查询依旧可以访问表数据,因为对表数据的访问并不一定需要索引数据。

● 如果包含表的表空间脱机,那么查询将无法访问表数据,因为脱机表空间内的对象无法被引用。

如果Oracle能够从联机(online)表空间(tablespace)中获得执行一个SQL语句的足够的信息,那么语句就将被执行。如果相关信息必须从脱机(offline)的表空间中获得,那么语句将失败。

只读表空间

使用只读表空间(read-only tablespace)的主要目的是为了避免对静态、且容量大的数据库内容进行备份和恢复操作。Oracle不会更新只读表空间内的数据,因此这类表空间的数据文件(datafile)可以放置在 CD-ROM 或 WORM之类的只读介质(read-only media)上。

提示:用户只能将一个表空间(tablespace)联机(online)到创建她的数据库,因此只读表空间(read-only tablespace)技术不适用于存档工作(archiving)。

只读表空间(read-only tablespace)不能被修改。如需更新一个只读表空间,首先要使表空间可读写。在更新后,还可以将表空间恢复到只读状态。

因为只读表空间(read-only tablespace)不能被修改,只要没有将只读表空间置于可读写状态,就无需对其进行重复的备份操作。当用户需要恢复数据库时,也没必要恢复只读表空间,原因同前所述。

进行此操作必须具有ALTER TABLESPACE 或 MANAGE TABLESPACE 系统权限,GRANT ALTER TABLESPACE TO "USER";

GRANT MANAGE TABLESPACE TO "USER";(双引号内必须大写)

也可以使表空间中所有的数据文件或临时文件脱机,然后还能联机,而不影响表空间自己的脱机或联机状态。

脱机表空间的原因

● 使数据库的一部分失效,同时允许对数据库剩余部分进行正常访问。

● 进行脱机表空间备份(尽管表空间在联机并正使用的情况下也能备份)

● 在升级或维护应用程序时,使应用程序和它的那组表临时不可用。

脱机表空间选项

NORMAL

如果表空间所有数据文件都没有错误,表空间可以正常脱机。写入错误导致表空间所有数据文件都不能脱机。当指定OFFLINE NORMAL时,Oracle对所有数据文件一边进行检查一边将他们脱机。

TEMPORARY

表空间能临时脱机,即使表空间的一个或多个数据文件有错误。当指定OFFLINE TEMPORARY选项时,Oracle将还没脱机的数据文件脱机,同时对他们进行检查。如果没有数据文件脱机,然后用临时选项脱机,当联机表空间时不需要介质恢复。但是,如果有表空间的文件因写入错误脱机,然后将表空间临时脱机,在将表空间联机之前需要介质恢复。

IMMEDIATE

表空间能立即脱机,不等Oracle对任何数据文件做检查。在指定OFFLINE IMMEDIATE的情况下,当联机表空间时需要介质恢复。如果数据库运行在NOARCHIVELOG模式下,表空间不能立即脱机。

FOR RECOVER

将在恢复集中的数据库表空间脱机,以便进行时间点恢复。

注意:

如果必须脱机表空间,尽量用NORMAL选项(默认)。这将保证表空间联机时不需要恢复。尽管部分恢复后用ALTER DATABASE OPEN RESETLOGS语句重置了重做日志序列,依然不需要恢复。只有当不能正常脱机表空间的时候才指定TEMPORARY选项。这种情况下,只有因错误被脱机的文件在表空间联机时才需要恢复。只有当指定NORMAL和TEMPORARY都不行的情况下才用IMMEDIATE选项。

脱机表空间前的考虑:

  • 验证表空间不含有活动的回滚段,这样的表空间不能脱机。
  • 你可能想改变表空间的位置,这个表空间的用户已经将它指定为默认的或临时的表空间。这是明智的,因为当脱机时,他们不能访问表空间的对象,不能排序表空间区域(sort areas in the tablespace)。

联机表空间

只要数据库打开,Oracle数据库的表空间都能恢复联机。如果要联机的表空间不是“干净”脱机(即用NORMAL选项的ALTER TABLESPACE OFFLINE语句),在联机之前必须先对表空间进行介质恢复。否则,Oracle返回错误并保持表空间脱机。

改变数据文件或临时文件的可用性

ALTER TABLESPACE语句的子句能改变表空间中所有数据文件或临时文件的联机或脱机状态。影响联机/脱机状态的特定语句:

  • ALTER TABLESPACE ... DATAFILE {ONLINE|OFFLINE}
  • ALTER TABLESPACE ... TEMPFILE {ONLINE|OFFLINE}

你只需要输入表空间名称,不是单独的数据文件或临时文件。所有数据文件或临时文件都受到影响,但表空间自己的联机/脱机状态不变。大多数情况下,上面ALTER TABLESPACE语句能执行,只要数据库挂载,即使没有打开。如果是SYSTEM表空间,重做表空间,或默认临时表空间,数据库一定不能打开。ALTER DATABASE DATAFILE 和 ALTER DATABASE TEMPFILE语句也有ONLINE/OFFLINE子句,但在那些语句里需要输入所有表空间的文件名。语法与改变表空间可用性的ALTER TABLESPACE … ONLINE|OFFLINE语句不同,因为那是不同的操作。ALTER TABLESPACE语句将数据文件和表空间脱机,但不能用于改变临时表空间或它的临时文件。

案例:

SELECT tablespace_name FROM dba_tablespaces

ALTER TABLESPACE users OFFLINE NORMAL;

ALTER TABLESPACE users ONLINE;

Oracle 表空间联机(online)与脱机(offline)的更多相关文章

  1. ORACLE表空间offline谈起,表空间备份恢复

    从ORACLE表空间offline谈起,表空间备份恢复将表空间置为offline,可能的原因包括维护.备份恢复等目的:表空间处于offline状态,那么Oracle不会允许任何对该表空间中对象的SQL ...

  2. ORACLE表空间管理维护

    1:表空间概念 在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示, ...

  3. Oracle表空间管理

    oracle表空间相关常用命令小结: 1.ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;              //修改表空间数据文件类型 2.ALT ...

  4. 【转】Oracle 表空间与数据文件

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

  5. ORACLE表空间

    在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示,一个数据库由对应 ...

  6. oracle表空间的管理

    1.创建表空间 CREATE TABLESPACE TBS_TR_DATA DATAFILE '/oradata/rTBS_TR_DATA_001.dbf' SIZE 64G EXTENT MANAG ...

  7. ORACLE表空间操作实例

    本文主要介绍oracle表空间常见的操作实例,包括创建.查询.增加.删除.修改.表空间和数据文件常用的数据字典和动态性能视图包括v$dbfile.v$datafile.v$tempfile.dba_s ...

  8. Oracle 表空间与数据文件

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

  9. oracle 表空间总结

                           表空间总结  一.认识表空间 1:表空间概念: 表空间是数据库中最大的逻辑单位,Oracle数据库采用表空间将相关的逻辑组件组合在一起,一个Oracle数 ...

随机推荐

  1. JUC.Condition学习笔记[附详细源码解析]

    目录 Condition的概念 大体实现流程 I.初始化状态 II.await()操作 III.signal()操作 3个主要方法 Condition的数据结构 线程何时阻塞和释放 await()方法 ...

  2. Flume整合Spark Streaming

    Spark版本1.5.2,Flume版本:1.6 Flume agent配置文件:spool-8.51.conf agent.sources = source1 agent.channels = me ...

  3. C# Mysql You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ????

    有几年没用过MySql数据了,今天在使用C#访问MySql数据库时出现了一个小插曲. 错误提示: You have an error in your SQL syntax; check the man ...

  4. NodeJS 错误处理最佳实践

    NodeJS的错误处理让人痛苦,在很长的一段时间里,大量的错误被放任不管.但是要想建立一个健壮的Node.js程序就必须正确的处理这些错误,而且这并不难学.如果你实在没有耐心,那就直接绕过长篇大论跳到 ...

  5. Google V8编程详解(三)Handle & HandleScope

    上一章简单的演示了一个Helloworld Demo.里面涉及到了V8的一些基本类型和概念,本章将围绕这个Demo对V8的基本类型和相关概念进行讲解. 这里还是先把Demo贴出来便于后面分析: #in ...

  6. 无向图的DFS遍历(方法之一)

    如果看不懂辅助解释在后面第点 1.录入方式: 输入 u - v  表示一边的2个端点 2.存储结构 struct edge { int from; int to; int next; } e[MAXN ...

  7. Net分布式系统之四:RabbitMQ消息队列应用

    消息通信组件Net分布式系统的核心中间件之一,应用与系统高并发,各个组件之间解耦的依赖的场景.本框架采用消息队列中间件主要应用于两方面:一是解决部分高并发的业务处理:二是通过消息队列传输系统日志.目前 ...

  8. 【转】NVelocity模板引擎初学总结

    转自:http://sunxitao88.blog.163.com/blog/static/68314439200861963326251/ 前不久,接触到.NET下的MVC-MonoRail,它推荐 ...

  9. javascript照片墙效果

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. php底层

    http://www.phpchina.com/member.php?mod=logging&action=login 我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的: ...