进行此操作必须具有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;