
在Oracle中,若数据库发生写错误(非SYSTEM表空间文件),则Oracle是如何处理相关数据文件的?
在Oracle 11.2.0.2版本之前,如果数据库运行在归档模式下,并且写错误发生在非SYSTEM表空间文件,那么Oracle数据库会将发生错误的文件离线(OFFLINE)。但是,从Oracle 11.2.0.2开始,数据库会以Crash实例替代相关数据文件的OFFLINE。需要注意的是,在非归档模式下或者SYSTEM文件遭受错误时,数据库会直接崩溃。
从Oracle 11.2.0.2版本开始,一个新的隐含参数“_datafile_write_errors_crash_instance”被引入,该参数的默认值为TRUE,表示当Oracle数据库发生数据文件写错误时,Oracle会直接Crash数据库实例。
为什么要引入这个参数呢?因为在归档模式下,当发生数据文件(非SYSTEM文件)写错误时,如果Oracle将数据文件离线,那么这会造成很多灾难,类似的错误日志可能是这样的:
Fri Jan 13 19:32:21 2013
KCF: write/open error block=0xf1fa6 online=1
file=73 dev/rods_gm05
error=27063 txt: 'IBM AIX RISC System/6000 Error: 22: Invalid argument
Additional information: -1
Additional information: 557056'
Automatic datafile offline due to write error on
file 73: dev/rods_gm05
鉴于很多用户遇到的困境,Oracle做出了修正,这一修正在MOS上以BUG形式被提交,其内容为:Bug 7691270 Crash the DB in case of write errors (rather than just offline files)。
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:230161599
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。




