正常状态下,表空间是处于联机联机状态,此时数据库用户可以访问该表空间中的数据。
有时,dba需要把表空间设置为脱机状态,进行数据库的维护:
*在数据库打开状态下移动数据文件。
*在数据库打开状态下恢复一个表空间或一个数据文件。
*执行对表空间的脱机备份
*使数据库的一部分不可以被访问,而其他部分可以正常被访问。
当数据库脱机时,用户访问不了该表空间上的数据。
同时,当一个表空间被设置脱机或联机的时候,Oracle会将这一事件记录在数据字典和控制文件中。也记录在报警文件中。
当表空间为脱机时,重启数据库,该表空间一样处于脱机状态。
当然,有一些表空间是不可以脱机的:
系统表空间
上面有活动的还原/回滚段的表空间
默认临时表空间
例如:假设longshen表空间出现了问题,需要维护
1.查询longshen表空间的状态
SQL> select tablespace_name,status,contents from dba_tablespaces where
2 tablespace_name like 'LONG%';
TABLESPACE STATUS CONTENTS
---------- --------- ---------
LONGSHEN ONLINE PERMANENT
LONGSHEN_T ONLINE TEMPORARY
EMP
LONGSHEN_U ONLINE UNDO
NDO
2.将longshen表空间置为脱机
SQL> alter tablespace longshen offline;
Tablespace altered.
3.查询一下是否脱机
SQL> select tablespace_name,status,contents from dba_tablespaces
2 where tablespace_name like 'LONG%';
TABLESPACE STATUS CONTENTS
---------- --------- ---------
LONGSHEN OFFLINE PERMANENT
LONGSHEN_T ONLINE TEMPORARY
EMP
LONGSHEN_U ONLINE UNDO
NDO
4.查询longshen表空间中的数据文件的状态
SQL> select file#,name,status from v$datafile
2 where name like '%longshen%';
FILE# NAME STATUS
----- ------------------------ -------
6 /oradata/law/law/longshe OFFLINE
n01.dbf
7 /oradata/law/law/longshe OFFLINE
n02.dbf
8 /oradata/law/law/longshe ONLINE
n_undo.dbf
5.重新把表空间设置为online
SQL> alter tablespace longshen online;
Tablespace altered.
6.查询一下是否online
SQL> select tablespace_name,status,contents from dba_tablespaces
2 where tablespace_name like 'LONGSHEN';
TABLESPACE STATUS CONTENTS
---------- --------- ---------
LONGSHEN ONLINE PERMANENT
SQL> select file#,name,status from v$datafile
2 where name like '%longshen%';
FILE# NAME STATUS
----- ------------------------ -------
6 /oradata/law/law/longshe ONLINE
n01.dbf
7 /oradata/law/law/longshe ONLINE
n02.dbf
8 /oradata/law/law/longshe ONLINE
n_undo.dbf