ORA-01555错误的一次处理记录

简介:
ORA-01555 快照号过旧,回退段号26(名称为“_SYSSMU26_1271644566$”)过小的错误。
      刚开始以为是UNDO表空间太小,增加undo数据文件后,还是同样的错误,
      使用这个用户kms做了rollback操作也是同样错误。
因为这个是测试数据库,尝试重新启动数据数据库后,还是报一样的错误。
alert 日志文件记录如下:
Mon Jun 21 09:51:09 2010
Errors in file d:\oracle\diag\rdbms\gztest\gztest\trace\gztest_p000_4220.trc  (incident=57908):
ORA-00600: internal error code, arguments: [4198], [9], [], [], [], [], [], []
Incident details in: d:\oracle\diag\rdbms\gztest\gztest\incident\incdir_57908\gztest_p000_4220_i57908.trc
Mon Jun 21 09:51:10 2010
Trace dumping is performing id=[cdmp_20100621095110]
Mon Jun 21 09:51:15 2010
db_recovery_file_dest_size of 2048 MB is 8.00% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
Mon Jun 21 09:51:26 2010
Doing block recovery for file 8 block 249
Block recovery from logseq 8314, block 7858 to scn 1984143087
Recovery of Online Redo Log: Thread 1 Group 1 Seq 8314 Reading mem 0
  Mem# 0: D:\ORACLE\ORADATA\GZTEST\REDO01.LOG
Block recovery completed at rba 8314.7881.16, scn 0.1984143088
Doing block recovery for file 2 block 33719
Block recovery from logseq 8314, block 7901 to scn 1984143108
Recovery of Online Redo Log: Thread 1 Group 1 Seq 8314 Reading mem 0
  Mem# 0: D:\ORACLE\ORADATA\GZTEST\REDO01.LOG
Mon Jun 21 09:51:26 2010
ORA-01555 caused by SQL statement below (SQL ID: 95m1t3u7u198n, Query Duration=18 sec, SCN: 0x0000.76439f32):
Select A.* From DB_TESTRESULTINFO A Where A.f_Branchofficecode=:BranchofficeCode and A.f_Requestid=:RequestID
Block recovery completed at rba 8314.7902.16, scn 0.1984143110
Mon Jun 21 09:51:44 2010
     发帖请教网友后,知道4198错误是个UNDO出了问题了。需要删除这个undo表空间,重新建立新表空间。
新建立undotbs3表空间,删除Undotbs2时,提示如下错误
SQL> drop tablespace undotbs2 including contents and datafiles;
ORA-01548: 已找到活动回退段 '_SYSSMU26_1271644566$', 终止删除表空间
和开发人员提供的错误一样。都是26号回退段出问题了。

通过dba_rollback_segs看到26回退段需要recovery了。
SQL> select segment_name,status,tablespace_name from dba_rollback_segs;
SEGMENT_NAME                   STATUS           TABLESPACE_NAME
------------------------------ ---------------- ------------------------------
SYSTEM                         ONLINE           SYSTEM
_SYSSMU30_1271644566$          OFFLINE          UNDOTBS2
_SYSSMU29_1271644566$          OFFLINE          UNDOTBS2
_SYSSMU28_1271644566$          OFFLINE          UNDOTBS2
_SYSSMU27_1271644566$          OFFLINE          UNDOTBS2
_SYSSMU26_1271644566$          NEEDS RECOVERY   UNDOTBS2
_SYSSMU20_1277087777$          ONLINE           UNDOTBS3
_SYSSMU19_1277087777$          ONLINE           UNDOTBS3
_SYSSMU18_1277087777$          ONLINE           UNDOTBS3
_SYSSMU17_1277087777$          ONLINE           UNDOTBS3
 
ORA-01548错误的解决方法参考这个帖子解决。
http://blog.csdn.net/roland_wg/archive/2010/04/11/5471770.aspx
下面是具体的解决步骤。
1.创建一个pfile文件。
  SQL>  create pfile='d:\oracle\pfilegztest.ora' from spfile;
  文件已创建。
2.修改pfile文件的下面3个内容。
  *.undo_management=manual
  *.undo_tablespace='UNDOTBS3'
  _CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU26_1271644566$)  -
  -记录下损坏 的回退段。
3.关闭数据库
   SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
4调用pfile参数启动数据库,
SQL> startup pfile='d:\oracle\pfilegztest.ora';
ORACLE 例程已经启动。
Total System Global Area  945786880 bytes
Fixed Size                  1333956 bytes
Variable Size             469763388 bytes
Database Buffers          469762048 bytes
Redo Buffers                4927488 bytes
数据库装载完毕。
数据库已经打开。
5.删除有问题的undo表空间
SQL> drop tablespace undotbs2 including contents and datafiles;
查看回退段,已经删除了undotbs2的信息了。
SQL> select segment_name,status,tablespace_name from dba_rollback_segs;
 
SEGMENT_NAME                   STATUS           TABLESPACE_NAME
------------------------------ ---------------- ------------------------------
SYSTEM                         ONLINE            SYSTEM
_SYSSMU20_1277087777$          OFFLINE           UNDOTBS3
_SYSSMU19_1277087777$          OFFLINE           UNDOTBS3
_SYSSMU18_1277087777$          OFFLINE           UNDOTBS3
_SYSSMU17_1277087777$          OFFLINE           UNDOTBS3
_SYSSMU16_1277087777$          OFFLINE           UNDOTBS3
_SYSSMU15_1277087777$          OFFLINE           UNDOTBS3
_SYSSMU14_1277087777$          OFFLINE           UNDOTBS3
_SYSSMU13_1277087777$          OFFLINE           UNDOTBS3
_SYSSMU12_1277087777$          OFFLINE           UNDOTBS3
 
SEGMENT_NAME                   STATUS           TABLESPACE_NAME
------------------------------ ---------------- ------------------------------
_SYSSMU11_1277087777$          ONLINE           UNDOTBS3
 

6。关闭数据库,重新正常启动。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  945786880 bytes
Fixed Size                  1333956 bytes
Variable Size             469763388 bytes
Database Buffers          469762048 bytes
Redo Buffers                4927488 bytes
数据库装载完毕。
数据库已经打开。



本文转自 gjm008 51CTO博客,原文链接:http://blog.51cto.com/gaoshan/336611,如需转载请自行联系原作者
相关文章
|
Python
最近大量trc日志产生 ORA-00600: 内部错误代码, 参数: [17059]
最近大量trc日志产生 ORA-00600: 内部错误代码, 参数: [17059]
297 0
|
索引 数据库管理 Linux
|
SQL 缓存 Oracle
ORA-4031错误深入解析
Oracle共享池一个非常经典的错误,下面我们来详细解读,帮你理解共享结构。
|
Oracle 关系型数据库
ORA-00060错误
今天有个同事说生产机有个PERL脚本老是报死锁的错误,脚本里面开启了并行度:错误如下: Failure: ORA-12801: error signaled in parallel query server P126, instance NMS_ODS_NDB1:wgods1 (1)ORA-000...
1327 0
|
SQL 关系型数据库 Oracle
ORA-00911错误
ORA-00911,"911"看着很霸气的错误号,虽然我还是Oracle的初学者,但每次碰到一个未见过的ORA错误号后,都有一种查案的赶脚,根据错误号、OERR、相关错误信息,判断错误原因以及找到解决方案或替代方案,虽然大部分可能还是参考前辈或官方,但碰到一次后,至少是似曾相识了,再次碰到时即使不记得,大概也能有个方向。
1095 0
|
Oracle 网络协议 关系型数据库
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库