ORA-01148: cannot refresh file size for datafile *

1 版本信息

  • 操作系统版本:
-bash-3.00$ uname -a
SunOS boss-db1 5.10 Generic_138888-06 sun4u sparc SUNW,SPARC-Enterprise
  • 数据库版本:
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Solaris: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

2 错误信息

ORA-01110: data file 254: '+DATA2/so_35.dbf'
ORA-00376: file 254 cannot be read at this time

3 收集错误信息

  • 查找数据库trace信息
-bash-3.00$ cd $ORACLE_BASE/admin/boss/bdump
-bash-3.00$ grep -i so_35 ./*
./boss1_dbw0_25404.trc:ORA-01110: data file 254: '+DATA2/so_35.dbf'
./boss1_dbw0_25404.trc:file 254: +DATA2/so_35.dbf
./boss1_diag_25354.trc: fname=+DATA2/so_35.dbf
  • 确认文件的最后修改时间与问题出现时间一致
-bash-3.00$ ls -la boss1_dbw0_25404.trc
-rw-rw---- 1 oracle oinstall 442294 Apr 14 15:25 boss1_dbw0_25404.trc
  • 查看trace提供的信息
........(省略)
{***} 2017-04-14 15:20:05.747
ORA-01148: cannot refresh file size for datafile 254
ORA-01110: data file 254: '+DATA2/so_35.dbf'
ORA-09817: Write to audit file failed.
SVR4 Error: 28: No space left on device =========================> 审计文件所在路径为$ORACLE_BASE/admin/$ORACLE_SID/adump, 空间充足
Automatic datafile offline due to media error on =========================> 数据文件被offline
file 254: +DATA2/so_35.dbf
........(省略)

4 故障恢复

  • 查看文件状态
SQL> COL FILE_NAME FOR A40
SQL> SELECT FILE_NAME,STATUS,BYTES FROM DBA_DATA_FILES WHERE FILE_ID=254; FILE_NAME STATUS BYTES
---------------------------------------- --------- ----------
+DATA2/so_35.dbf AVAILABLE =======================================> 文件大小为空! SQL> COL NAME FOR A17
SQL> SELECT FILE#,STATUS,ERROR,RECOVER,FUZZY,BYTES,NAME FROM V$DATAFILE_HEADER WHERE FILE#=254; FILE# STATUS ERROR REC FUZ BYTES NAME
---------- ------- ------------------------------ --- --- ---------- -----------------
254 OFFLINE NO YES 1.8765E+10 +DATA2/so_35.dbf ====> status=offline 与trace文件中处理结果一致。
这里我们可以看到文件本身的状态是available,但是文件头已经是offline状态,与trace 文件内容一致。
  • 尝试恢复数据文件
SQL> ALTER DATABASE RECOVER DATAFILE 254;

Database altered.
  • online 数据文件
SQL> ALTER DATABASE DATAFILE 254 ONLINE;

Database altered.

SQL> SELECT FILE_NAME,STATUS,BYTES FROM DBA_DATA_FILES WHERE FILE_ID=254;

FILE_NAME                                STATUS         BYTES
---------------------------------------- --------- ----------
+DATA2/so_35.dbf AVAILABLE 1.8765E+10 ===========================================> 文件大小已正常刷新!
NOTES
数据库最好是在归档状态,如果问题处理不及时,redo 文件被覆盖而又没有开启归档,这种处理方式不会奏效的.

5 问题总结

从现象上来看,是由于物理磁盘空间不足引起的。此问题,目前发现的,只有10G,SUNOS 操作系统中会出现。
经确认,此问题,属于BUG(Bug 9357097),在数据库版本11.2.0.2 之后得以解决。

6 建议

由于此BUG Oracle官方未提供任何补丁及规避方案。因此,将数据库最低升级至11.2.0.4 版本,以避免Oracle 10G 中诸多BUG.

7 高屋建瓴

数据库,是一个超级复杂的程序,里面的各种逻辑关系,让人想起来就头皮发麻。在一个复杂到要一个人花数年时间去研究其中的逻辑的程序中,肯定会存在各种各样的问题,包括尚未完善的甚至是缺失的功能。
Oracle官方在这一点上也做的不错,就是在推广应用、维护的过程中,收集问题,处理问题,优化逻辑,收集BUG,弥补过失。尽力使自己的产品功能完善,减少问题,并尽力跟随世界发展的趋势.
毕竟这样一个庞大的数据库想要做体系架构的变动实在是难。
新的版本数据,解决了旧版本中各种的BUG,新添加了很多的增强的功能,一方面使数据库性能得以提升,同时,更加便于维护管理。
那么我们的客户使用对方的产品,我们作为Oracle的一个合作商,是否有这种魄力,推动客户去做数据库升级呢?而同时,这会又是一个新的项目基点。
哪怕没有此种问题,我们是否有向客户提供打补丁的建议?以提高客户满意度?

Author: AsiaInfo Techenology(China) Co. Ltd. 部门: PMO 工程师:李海波

Created: 2019-06-22 Sat 11:47

Validate

ORA-01148:cannot refresh file size for datafile ***的更多相关文章

  1. ORA-27092: size of file exceeds file size limit of the process

    停数据库时遇到下述问题: $ ./addbctl.sh stop You are running addbctl.sh version 120.1 Shutting down database UAT ...

  2. [Intellij IDEA]File size exceeds configured limit(2560000). Code insight features are not available

    在使用 IDEA, 发现一个问题File size exceeds configured limit (2560000). Code insight features not available.

  3. How to calculate a good InnoDB log file size

    Peter wrote a post a while ago about choosing a good InnoDB log file size.  Not to pick on Peter, b ...

  4. [Mon Feb 10 15:21:06 2014] [notice] child pid 7101 exit signal File size limit exceeded (25)

    今天遇到的问题: LAMP的LOG里报如下错误. 然后IE和FIREFOX里显示连接被重置或是无法访问. 但自己建一个正常的PHP测试探针倒可以. 原来是PHP错误日志太多,无法写入LOG导致. [r ...

  5. Github 修正上传时“this exceeds GitHub’s file size limit of 100 MB”错误

    自己的项目的版本控制用的是Git,代码仓库在github托管.项目里用到了IJKMediaFramework 想把代码push到github上,结果出错了,被拒绝,具体信息是: Total 324 ( ...

  6. 值得一提:关于 HDFS 的 file size 和 block size

    转 http://blog.csdn.net/samhacker/article/details/23089157?utm_source=tuicool&utm_medium=referral ...

  7. ES部署报错 max file size 和 kibana 报错File size limit exceeded

    启动失败一 ERROR: [2] bootstrap checks failed [1]: max file descriptors [4096] for elasticsearch process ...

  8. linux下core file size设置笔记

    现象说明:突然发现一台测试机器的java程序莫名其妙地没了,但是没有core dump!这就需要打开服务器的core文件生成的功能了,(即core dump文件),方便程序调试.1)core文件简介c ...

  9. 解决访问 jar 包里面的字体报错:OTS parsing error: incorrect file size in WOFF header

    前言:jar 包里面的字体加载,浏览器 console 中报警告信息,这里记录一下解决方案. 附:自己的一个 jar 包源码 https://github.com/yuleGH/querydb 错误问 ...

随机推荐

  1. 【转】vm ubuntu14.04 建立共享文件夹

    第一步:启动Ubuntu 14.04(其他版本的Ubuntu操作差不多)       1. 在VMware虚拟机界面,点VM->Install VMware Tools.之后,显示如下图:   ...

  2. 如何使用ProcessOn制作思维导图

    新建一张思维导图之后你是不是有点茫然? 不是因为脑海里没思路,而是不知道怎么把脑海里的思路呈现出来?看到一个孤零零的中心主题和看起来有些简单的页面一时间有点无所适从? 很多人觉得思维导图好看但学起来难 ...

  3. Hive动态分区和分桶(八)

    Hive动态分区和分桶 1.Hive动态分区 1.hive的动态分区介绍 ​ hive的静态分区需要用户在插入数据的时候必须手动指定hive的分区字段值,但是这样的话会导致用户的操作复杂度提高,而且在 ...

  4. CNN for NLP(2)

    参考链接: 卷积神经网络(CNN)在句子建模上的应用, 卷积神经网络CNN在自然语言处理中的应用, CNN在NLP中的应用.

  5. Android异常与性能优化相关面试问题-内存管理面试问题详解

    内存管理机制概述: 分配机制:操作系统会为每一个进程分配一个合理的内存大小,从而保证每一个进程能够正常的运行,不至于内存不够使用,或者某个进程占用过多的内存. 回收机制:在系统内存不足的时候,系统有一 ...

  6. Python中json的简单读写操作

    Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...

  7. Python模块struct(二进制数据服务)

    struct模块 Python没有专门处理字节的数据类型.但由于b'str'可以表示字节,所以,字节数组=二进制str. 而在C语言中,我们可以很方便地用struct.union来处理字节,以及字节和 ...

  8. Mac常用设置备忘

    1.显示隐藏文件 1>命令行方式 显示:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏:defaults writ ...

  9. Struts2标签:s:password 修改时密码为空的问题

    s:password 有个属性showPassword默认为false,想要密码显示,设置标签属性 showPassword="true" 即可.

  10. vmware centos 桥接和NAT的IP配置

    先初始化VM, 桥接模式: [root@out network-scripts]# cat ifcfg-ens33 TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesP ...