客户的数据库出现问题,启动后过会自动关闭掉。
查看alert 日志,发现大量600的错误,
类似: ORA-00600: internal error code, arguments: [4194], [#], [#], [], [], [], [], []
由于内网环境无法将具体将alert信息贴出来,只好大概描述一番。
实例被dbwn进程中止。
类似:DBW0:terminating instance due to error 471
instance terminated by DBW0,pid=7070
查看了最近的alert日志情况,发现在上周五的时候,数据库自动重启过,然后看了下当天的操作系统日志,发现系统断电重启。
所以推断大致原因应该是由于断掉导致数据库意外崩溃,然后来电重启后出现故障。
ora-600 [4194] 这个错误和undo表空间相关,metalink上有相关文档对此问题的解释:
This error indicates that a mismatch has been detected between redo records and rollback (undo) records.
意思是数据库崩溃后重启,oracle要做前滚和回滚,发现redo和undo记录的信息不匹配,undo记录出现错误,导致抛出ora-600 [4194]的错误,应该是DBWn进程发现undo坏块的情况,于是中止了数据库。
推断应该不是很准确,但大概流程应该是如此的。
对于这个问题,oracle给出的解决方案是建一个新的undo表空间来替换原有的。我也是这么做的,ora-600 [4194]的错误可以解决掉。
大致步骤:
1、创建新的UNDO表空间,如undo_01
create undo tablespace 'undo_01'
DATAFILE 'undo_01.dbf' SIZE 100m;
2、修改default undo表空间
alter system set undo_tablespace='undo_01';
3、修改参数文件init.ora 中的表空间项:
undo_tablespace='undo_01'
4、重起数据库
5、删除旧undo表空间
drop tablespace undo
-----------------------------------------------------------------------------------------
后来其他库也出现类似情况,也是数据库启动后,一会儿自动关闭,抛出的是ora-600 [4193]的错误,也是和undo相关,用上面方法同样解决掉。
ora-600 [4193] [4194] 错误,参考metalink相关文档: Doc ID 1428786.1 ID 281429.1