读书频道 > 数据库 > Oracle > Oracle DBA手记4:数据安全警示录
ORA-600 4194错误UNDO故障消除
2012-08-25 21:08:46     我来说两句 
收藏    我要投稿   
这是一本写给大家看的数据安全之书,不仅仅是给技术人员,更重要的是给企业数据管理者,如果不看这些案例,你也许永远不会理解数据库为何会遭遇到灭顶之灾,你也许永远无法理解为何千里之堤一朝溃于蚁穴。当然,...  立即去当当网订购

接下来是因为一致性被破坏而出现的ORA-600 4194数据库内部错误,这与UNDO回滚有关。

Sat Dec 31 16:07:14 2011
Errors in file /opt/app/oracle/admin/dma/udump/dma_ora_4379.trc:
ORA-00600: 内部错误代码, 参数: [4194], [42], [30], [], [], [], [], []
Doing block recovery for file 2 block 16237
Block recovery from logseq 1, block 111 to scn 12508018507983
Sat Dec 31 16:07:18 2011
Recovery of Online Redo Log: Thread 1 Group 4 Seq 1 Reading mem 0
  Mem# 0 errs 0: /dma_sys/sysdata/dma/redo04a.log
  Mem# 1 errs 0: /dma_sys/sysdata/dma/redo04b.log
Block recovery stopped at EOT rba 1.1008.16
Block recovery completed at rba 1.1008.16, scn 2912.1073742029
Doing block recovery for file 2 block 441
Block recovery from logseq 1, block 111 to scn 12508018507979
Sat Dec 31 16:07:18 2011
Recovery of Online Redo Log: Thread 1 Group 4 Seq 1 Reading mem 0
  Mem# 0 errs 0: /dma_sys/sysdata/dma/redo04a.log
  Mem# 1 errs 0: /dma_sys/sysdata/dma/redo04b.log
Block recovery completed at rba 1.112.16, scn 2912.1073742028
以上日志提示了恢复到达的SCN位置和RBA信息。
以下提示说明在恢复文件2 block 45224时出现了错误,这是对于UNDO的恢复尝试.
Sat Dec 31 16:08:25 2011
Errors in file /opt/app/oracle/admin/dma/udump/dma_ora_4379.trc:
ORA-00600: 内部错误代码, 参数: [4194], [66], [60], [], [], [], [], []
Sat Dec 31 16:08:27 2011
DEBUG: Replaying xcb 0xc00000046193d230, pmd 0xc0000000a79a88d0 for failed op 8
Doing block recovery for file 2 block 45224
No block recovery was needed
Sat Dec 31 16:09:35 2011
Errors in file /opt/app/oracle/admin/dma/udump/dma_ora_4379.trc:
ORA-00600: 内部错误代码, 参数: [4194], [66], [60], [], [], [], [], []
ORA-00600: 内部错误代码, 参数: [4194], [66], [60], [], [], [], [], []
Sat Dec 31 16:09:37 2011
DEBUG: Replaying xcb 0xc00000046193d230, pmd 0xc0000000a79a88d0 for failed op 8
Sat Dec 31 16:09:37 2011
Errors in file /opt/app/oracle/admin/dma/udump/dma_ora_4379.trc:
ORA-00600: 内部错误代码, 参数: [4194], [66], [60], [], [], [], [], []
ORA-00600: 内部错误代码, 参数: [4194], [66], [60], [], [], [], [], []
Doing block recovery for file 2 block 45224
No block recovery was needed
Sat Dec 31 16:10:44 2011
Errors in file /opt/app/oracle/admin/dma/bdump/dma_smon_4365.trc:
ORA-00600: 内部错误代码, 参数: [4194], [66], [60], [], [], [], [], []
Sat Dec 31 16:10:46 2011
DEBUG: Replaying xcb 0xc00000046193d230, pmd 0xc0000000a79a88d0 for failed op 8
Doing block recovery for file 2 block 45224
No block recovery was needed
Sat Dec 31 16:10:46 2011
Fatal internal error happened while SMON was doing active transaction recovery.
Sat Dec 31 16:10:46 2011
Errors in file /opt/app/oracle/admin/dma/bdump/dma_smon_4365.trc:
ORA-00600: 内部错误代码, 参数: [4194], [66], [60], [], [], [], [], []
SMON: terminating instance due to error 474
Instance terminated by SMON, pid = 4365
最后数据库因为4914错误实例崩溃。通过内部参数强制打开数据库,就破坏了数据库的一致性,不可避免地会遇到一系列的内部错误。
ORA-600 [4194]错误的官方解释是:“Undo Record Number Mismatch While Adding Undo Record”,当数据库通过REDO恢复来增加UNDO记录时,发现UNDO记录的号码不匹配,也就是出现了不一致。
这可以通过重建UNDO表空间来解决。设置如下初始化参数。
*.undo_management='MANUAL'
然后启动数据库重建UNDO表空间。
SQL> startup pfile=initdma_eygle.ora
ORACLE 例程已经启动。
 
Total System Global Area 1.3640E+10 bytes
Fixed Size                  2115392 bytes
Variable Size            1889450176 bytes
Database Buffers         1.1744E+10 bytes
Redo Buffers                4259840 bytes
数据库装载完毕。
数据库已经打开。
SQL> drop tablespace undotbs1;
表空间已删除。
SQL> create undo tablespace undotbs1
  2  datafile '/dma_sys/sysdata/dma/undotbs202.dbf' size 500M;
表空间已创建。
在这之后可以修改undo_management参数。
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
最后重新启动数据库,此时数据库通常就可以正常无误地启动。
[oracle] % sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 12月 31 16:41:01 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
 
Total System Global Area 1.3640E+10 bytes
Fixed Size                  2115392 bytes
Variable Size            8264792256 bytes
Database Buffers         5368709120 bytes
Redo Buffers                4259840 bytes
数据库装载完毕。
数据库已经打开。
SQL> ! ls -l /dma_sys/sysdata/dma/ |grep temp
-rw-r-----   1 oracle     oinstall   16106135552 12月31日 16:41 perftemp01.dbf
-rw-r-----   1 oracle     oinstall   16106135552 12月30日 11:41 temp01.dbf
SQL>  ALTER TABLESPACE temp ADD TEMPFILE '/dma_sys/sysdata/dma/temp02.dbf' size 16G ;
表空间已更改。
SQL> create table test as select * from obj$;
表已创建。
SQL> drop table test purge;
表已删除。
SQL> alter database datafile '/dma_sys/sysdata/dma/undotbs202.dbf' 
   2  autoextend on next 200m maxsize 16G;
数据库已更改。
随后查询得到的文件名列表大致如下(这里的MISSING00181即丢失的文件,数据库默认以MISSING命名)。
NAME
---------------------------------------------------------------------------
/data2/userdata/d_wireless_dbs_2.dbf
/data2/userdata/d_wireless_dbs_18.dbf
/data2/userdata/d_wireless_dbs_17.dbf
/data2/userdata/d_wireless_dbs_15.dbf
/opt/app/oracle/product/10.2.0/dbs/MISSING00181
已选择181行。
这样就最终完成了恢复。在通过这些手段恢复之后,由于数据库的一致性和完整性被破坏,因此通常建议导出数据,重建数据库。在消除4194错误之后,数据库还可能遇到一些其他的ORA-600错误,不过这些错误通常都是可以解决和消除的。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:通过_minimum_giga_scn消除SCN异常
下一篇:灾难描述
相关文章
图文推荐
3.6 存储管理工具Ce
3.4.5 Interleaving
3.4 Exadata存储架构
3.3.3 SDP协议
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站