关于表空间及数据文件的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状态
![](file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Application%20Data/YNote/Data/410327107%40qq.com/1e946fef3d384e88a8022f5f8901e0eb/600adcb2f8ee4466af57a17bf6826541.jpg)
![](file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Application%20Data/YNote/Data/410327107%40qq.com/1e946fef3d384e88a8022f5f8901e0eb/600adcb2f8ee4466af57a17bf6826541.jpg)
二、表空间的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子句
在对单个数据文件做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状态
![](file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Application%20Data/YNote/Data/410327107%40qq.com/1e946fef3d384e88a8022f5f8901e0eb/600adcb2f8ee4466af57a17bf6826541.jpg)
![](file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Application%20Data/YNote/Data/410327107%40qq.com/1e946fef3d384e88a8022f5f8901e0eb/600adcb2f8ee4466af57a17bf6826541.jpg)
二、表空间的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子句
相关文章推荐
- 关于表空间及数据文件的offline与online
- offline或是online表空间和数据文件
- 将单个数据文件offline或online
- Data Guard 主端OFFLINE数据文件和表空间
- 关于DSP哈佛结构的数据空间和程序空间及CMD文件的理解
- 如何删除offline数据文件/表空间上的分区
- ORACLE数据库表空间迁移--关于数据文件
- 关于移动表空间中的数据文件
- 数据文件、表空间offline用法及区别
- oracle数据文件和表空间offline
- 关于sqlite断电或者存储空间不足造成的数据文件损坏问题-转
- 关于创建表空间的数据文件的限制
- 数据文件online和offline
- 关于丢失表空间数据文件的处理方式
- java关于读取数据后简单写入一个文件中的总结
- 创建表空间,表空间增加和删除数据文件,表空间只读模式,表空间下线与上线
- 【表空间支持的最大数据文件大小的算法】【数据库限制】【数据文件文件头保留数据块数】
- Oracle 表空间与数据文件
- 表空间、数据文件对应关系
- 关于游戏中文件数据和系统文件和程序调用的几个技术方案