您的位置:首页 > 其它

关于表空间及数据文件的offline与online

2013-12-24 13:50 281 查看
一、数据文件

在对单个数据文件做offline时,是立即offline,此时不会针对数据文件生成检查点,所以数据文件的终止SCN为无穷大,处于不一致状态,数据文件也需要recover,在v$recover_file视图也可以看到这个文件的信息,要想将数据文件online,必须先对文件执行recover操作,必,所以建议offline数据文件后应该立刻执行recover操作,使他处于一致状态,以免后面出现不必要的麻烦

foo表空间只有一个数据文件:/tmp/foo1.dbf(归档模式)

SQL> alter database datafile '/tmp/foo1.dbf' offline;

Database altered.

SQL> alter system checkpoint;

System altered.

SQL> alter database datafile '/tmp/foo1.dbf' online;

alter database datafile '/tmp/foo1.dbf' online

*

ERROR at line 1:

ORA-01113: file 8 needs media recovery

ORA-01110: data file 8: '/tmp/foo1.dbf'

查看一下数据文件的状态:

SQL> select FILE_NAME,ONLINE_STATUS from dba_data_files;

……

FILE_NAME

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

ONLINE_

-------

/u01/app/oracle/oradata/orcl2/ORCL2/datafile/o1_mf_liang_7b5c21fb_.dbf

ONLINE

/tmp/foo1.dbf

RECOVER

显示需要RECOVER。

将数据库启动到mount:

SQL> recover datafile '/tmp/foo1.dbf';

Media recovery complete.

SQL> alter database open;

再来查看数据文件的状态:

SQL> select FILE_NAME,ONLINE_STATUS from dba_data_files;

……

FILE_NAME

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

ONLINE_

-------

/u01/app/oracle/oradata/orcl2/ORCL2/datafile/o1_mf_liang_7b5c21fb_.dbf

ONLINE

/tmp/foo1.dbf

OFFLINE

此时变成了offline了,接下来就可以将它切换到online状态。

对于非归档模式下进行数据文件offline操作需要接上drop子句,他不会物理删除文件的,在归档模式下指定drop子句会被Oracle忽略

另外对于offline的数据文件,正常重起是不能对他进行recover的,因为他的状态是offline,数据库启动时是不检查offline文件的 SCN是否一致的,所以启动后你仍然可以在v$recover_file视图中看到他,需要手工对他进行recover才能恢复,如果应用的联机日志已经 switch掉,则要从归档中进行恢复,没有归档的话,文件就只能一直处于recover状态





二、表空间的offline

在对表空间进行offline时,oracle需要针对这个表空间生成检查点,刷新表空间中数据文件的相关事务,更新数据文件头SCN,数据文件 SCN,文件终止SCN,达到一致状态,当表空间被再次ONLINE时,oracle会捕捉online时刻的SCN,更新上面各个位置的SCN(当然文件结束SCN号会置为无穷大),将数据文件都打开

表空间为read only或offline时,虽然不能修改保存在表空间里面表的内容,但是能对表进行drop操作(简单的理解就是drop table 是将表的定义从数据字典里面清除)。

同时需要注意下面几点:

1、 从数据字典里删除表空间信息,删除表空间时可以是ONLINE,也可以OFFLINE

建议在OFFLINE后删除,这样确保没有相关事务的SQL语句在表空间运行

2、如果表空间不为空,你必须使用INCLUDING CONTENTS将其内容也删除

对于分区表分布在不同表空间上将不允许删除表空间,必须 MOVE PARTITION TABLESPACE。

3、如果表空间表有参考完整性约束在别的表空间,将使用CASCADE CONSTRAINTS子句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: