问题描述
今天接收到一则Oracle 8i的数据库故障,恢复数据过程并不特别复杂,只是Oracle 8i的东西基本上快忘的差不多了。
数据库是在一个ORA-1631错误持续报出后出现的问题, Oracle的一个数据对象的最大区数量超过,数据段将无法扩展。
错误信息类似如下内容:
Thu Mar 10 08:17:13 2011 ORA-1631: max # extents 121 reached in table EXAM.EXAM_REPORT Thu Mar 10 08:17:14 2011 ORA-1631: max # extents 121 reached in table EXAM.EXAM_REPORT Thu Mar 10 08:17:15 2011 ORA-1631: max # extents 121 reached in table EXAM.EXAM_REPORT Thu Mar 10 08:17:16 2011 ORA-1631: max # extents 121 reached in table EXAM.EXAM_REPORT Thu Mar 10 08:17:17 2011 ORA-1631: max # extents 121 reached in table EXAM.EXAM_REPORT
专家解答
Oracle数据库早期版本为了控制空间分配,对最大区数有限制,而这一限制在Oracle 9i中已经不存在了:
$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Wed Apr 20 15:45:01 2011 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production With the Partitioning option JServer Release 9.2.0.4.0 - Production SQL> select distinct(MAX_EXTENTS) from dba_tables; MAX_EXTENTS ----------- 2147483645
由于某些数据无法插入,最后导致的问题是,表空间被强制离线,Oracle的某些事务一致性被破坏,而且无法成功回退,这就导致了数据库故障:
Wed Apr 20 10:51:36 2011 ORACLE Instance orcl (pid = 9) - Error 376 encountered while recovering transaction (10, 47) on object 25539. Wed Apr 20 10:51:36 2011 Errors in file D:\oracle\admin\orcl\bdump\orclSMON.TRC: ORA-00376: file 25 cannot be read at this time ORA-01110: data file 25: 'D:\ORACLE\ORADATA\ORCL\APORDADM.DBF'
从这一点看起来,Oracle的保护机制应该更严格一点。当然,这些问题在9i之后不存在了。
最后修改时间:2019-05-08 11:02:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。