ORACLE 8.1.7 数据库ORA-600 4000故障恢复示例

在数据库的恢复过程中遇到ORA-600 4000错误挺多的,但是在oracle 8i(8.1.7)中遇到此类问题,还是第一次,做个记忆,供参考:
数据库故障起因:因为存储异常,导致当前redo损坏,并_allow_resetlogs_corruption参数尝试打开数据库
Media Recovery Log
kcrrga: Warning.  Log sequence in archive filename wrapped
to fix length as indicated by %S in LOG_ARCHIVE_FORMAT.
Old log archive with same name might be overwritten.
ORA-279 signalled during: ALTER DATABASE RECOVER  database using backup cont...
Wed Aug 20 23:01:43 2014
ALTER DATABASE RECOVER    CANCEL 
Media Recovery Cancelled
Completed: ALTER DATABASE RECOVER    CANCEL 
Wed Aug 20 23:01:50 2014
alter database open resetlogs
 
RESETLOGS is being done without consistancy checks. This may result
in a corrupted database. The database should be recreated.
RESETLOGS after incomplete recovery UNTIL CHANGE 262618871
Wed Aug 20 23:01:50 2014
Thread 1 opened at log sequence 1
  Current log# 3 seq# 1 mem# 0: F:REDO01.LOG
Successful open of redo thread 1.
Wed Aug 20 23:01:50 2014
SMON: enabling cache recovery
Wed Aug 20 23:01:50 2014
Errors in file C:oracleadminYCFDudumpORA00320.TRC:
ORA-00600: ??????????: [4000], [3], [], [], [], [], [], []
 
SMON: disabling cache recovery
Wed Aug 20 23:01:51 2014
ORA-704 signalled during: alter database open resetlogs
数据库遭遇ORA-600 4000错误,数据库无法打开,分析对应trace日志
Dump file C:oracleadminYCFDudumpORA00320.TRC
Wed Aug 20 23:01:50 2014
ORACLE V8.1.7.0.0 - Production vsnsta=0
vsnsql=e vsnxtr=3
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Instance name: ycfd
 
Redo thread mounted by this instance: 1
 
Oracle process number: 8
 
Windows thread id: 320, image: ORACLE.EXE
 
 
*** SESSION ID:(7.1) 2014-08-20 23:01:50.838
*** 2014-08-20 23:01:50.838
ksedmp: internal or fatal error
ORA-00600: ??????????: [4000], [3], [], [], [], [], [], []
Current SQL statement for this session:
select ctime, mtime, stime from obj$ where obj# = :1
----- Call Stack Trace -----
这里可以看出来,是因为数据库在启动之时需要执行select ctime, mtime, stime from obj$ where obj# = :1语句,但是由于每种原因出现ORA-600 4000导致数据库无法正常启动,继续分析日志
lock header dump:  0x0040003e
 Object id on Block? Y
 seg/obj: 0x12  csc: 0x00.fb5c5c5  itc: 1  flg: -  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01
 
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0003.012.0002ae94    uba: 0x00801f5b.5389.11  --U-    1  fsc 0x0000.0fb5c5c6
 
 
SQL> select checkpoint_change# from v$database;
 
263570122
此处比较明显,通过xid可以知道三号回滚段中对应一个事务出现问题:
1. 该block为file 1 bock 62,object_id为 18(obj$)上有一个事务
2. 该事务的scn为263,570,886>database scn(263570122)导致该故障发生
3. 当数据库访问到file 1 block 62的时候,发现有一个事务,而该事务的scn大于数据库scn,从而出现ORA-600[4000]
解决该问题有几种方法
1. 修改block 62,人工提交该事务
2. 修改数据库scn,让数据库scn大于itl scn
解决block 62 事务问题后出现如下错误
Wed Aug 20 23:03:55 2014
SMON: enabling cache recovery
Wed Aug 20 23:03:55 2014
Dictionary check beginning
Dictionary check complete
Wed Aug 20 23:03:55 2014
SMON: enabling tx recovery
Wed Aug 20 23:03:56 2014
Errors in file C:oracleadminYCFDbdumpycfdSMON.TRC:
ORA-00600: internal error code, arguments: [4193], [21173], [21181], [], [], [], [], []
 
Recovery of Online Redo Log: Thread 1 Group 1 Seq 2 Reading mem 0
  Mem# 0 errs 0: F:REDO03.LOG
SMON: terminating instance due to error 600
Instance terminated by SMON, pid = 2468
数据库出现ORA-600 4193,这个是常见错误,因为redo记录和undo记录不匹配导致,可以直接使用_corrupted_rollback_segments/_offline_rollback_segments屏蔽回滚段跳过
Wed Aug 20 23:08:10 2014
SMON: enabling cache recovery
SMON: enabling tx recovery
SMON: about to recover undo segment 1
SMON: mark undo segment 1 as needs recovery
SMON: about to recover undo segment 2
SMON: mark undo segment 2 as needs recovery
SMON: about to recover undo segment 3
SMON: mark undo segment 3 as needs recovery
SMON: about to recover undo segment 4
SMON: mark undo segment 4 as needs recovery
SMON: about to recover undo segment 5
SMON: mark undo segment 5 as needs recovery
SMON: about to recover undo segment 6
SMON: mark undo segment 6 as needs recovery
SMON: about to recover undo segment 7
SMON: mark undo segment 7 as needs recovery
SMON: about to recover undo segment 1
SMON: mark undo segment 1 as needs recovery
SMON: about to recover undo segment 2
SMON: mark undo segment 2 as needs recovery
SMON: about to recover undo segment 3
SMON: mark undo segment 3 as needs recovery
SMON: about to recover undo segment 4
SMON: mark undo segment 4 as needs recovery
SMON: about to recover undo segment 5
SMON: mark undo segment 5 as needs recovery
SMON: about to recover undo segment 6
SMON: mark undo segment 6 as needs recovery
SMON: about to recover undo segment 7
SMON: mark undo segment 7 as needs recovery
Wed Aug 20 23:08:15 2014
Completed: alter database open

联系:手机(13429648788) QQ(107644445)
链接:http://www.xifenfei.com/5464.html

时间: 2024-09-04 01:06:07

ORACLE 8.1.7 数据库ORA-600 4000故障恢复示例的相关文章

Oracle数据库ORA 54013错误的解决办法_oracle

ORA-54013: 不允许对虚拟列执行 INSERT 操作 这是Oracle 11 的新特性 -- 虚拟列. 在以前的Oracle 版本,当我们需要使用表达式或者一些计算公式时,我们会创建数据库视图,如果我们需要在这个视图上使用索引,我们会创建基于函数的索引.现在Oracle 11允许我们直接在表上使用虚拟列来存储表达式.虚拟列的值是不存储在磁盘的,它们是在查询时根据定义的表达式临时计算的.我们不能往虚拟列中插入数据,我们也不能隐式的添加数据到虚拟列,我们只能使用物理列来插入数据.然后可以查询

Oracle 错误总结及问题解决 ORA

参考地址 ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常.ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数ORA-00019: 超出最大会话许可数ORA-00020: 超出最大进程数 ()ORA-00021: 会话附属于其它某些进程:无法转换会话ORA-00022: 无效的会话 ID:访问被拒绝ORA-00023: 会话引用进程私用内存:无法分离会话ORA-00024: 单一进程模式下不允许从多个进程注册

配置ORACLE 客户端连接到数据库

       --================================= -- 配置ORACLE 客户端连接到数据库 --=================================       Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中.所以无需配置客户端即可连接到服务器.Oracle 客户端连接到数据库依赖于Oracle

ORACLE体系结构-真正的数据库-文件系统

前面文章,对于ORACLE部分前面主要阐述的是INSTANCE实例内部的一些东西,主要从共享池.数据缓冲区两大块去讲解,其实对于细节的说明还有一些知识点,如RMAN中的大池应用或PGA中的后台线程会在后面逐步说明,本文以ORACLE物理结构来讲解点点物理层的东西,其实这也是真正的数据库了,其余的都是实例,为此先明白一个在ORACLE数据库上容易误会的名词:INSTANCE(实例)和DATABASE(数据库),数据库是一组文件结构,而INSTANCE是一段内存结构,包含了对文件结构的操作过程和中间

oracle数据库-oracle 11g ORA-00445:每个月数据库都会死,pl/sql登录不上

问题描述 oracle 11g ORA-00445:每个月数据库都会死,pl/sql登录不上 每个月数据库都会无缘无故的死掉,重启数据库又正常了,下面是alert_orcl.log里面的日志,window服务器内存8G ,oracle版本11gR2,这个是什么原因导致的呢 Tue Oct 28 20:18:25 2014 Errors in file d:oraclediagrdbmsorclorcltraceorcl_cjq0_2628.trc (incident=65106): ORA-00

chapter2: 安装 Oracle 软件并构建数据库

oracle|数据|数据库 第 2 章: 安装 Oracle 软件并构建数据库 返回课程列表 目的 本章让您了解如何使用 Oracle Universal Installer (OUI) 安装您的 Oracle 数据库软件并创建数据库. 您将学习如何使用 Database Configuration Assistant (DBCA) 创建附加数据库. 主题 本章讨论了如下内容: 使用 Oracle Universal Installer (OUI) 安装软件 使用 Database Config

Oracle技术:异构数据库初始化大字段处理

一.source端 SOURCEISTABLE SOURCEDB oracle RMTHOST 127.0.0.1, MGRPORT 7820 RMTFILE D:\ogg\oracle\dirdat\i1 table dbo.t_v; table dbo.t_t; 二.target端 SPECIALRUN END RUNTIME SETENV (NLS_LANG =AMERICAN_AMERICA.ZHS16GBK) userid ogg,password xifenfei EXTFILE D

如何在oracle中手工创建数据库

oracle中手工创建数据库的步骤: 1. 创建必要的相关目录 2. 创建初始化参数文件 3. 设置环境变量Oracle_sid 4. 创建实例 5. 创建口令文件 6. 启动数据库到nomount(实例)状态 7. 执行建库脚本 8. 执行catalog脚本创建数据字典 9. 执行catproc创建package包 10.      执行pupbld 11.      由初始化参数文件创建spfile文件 12.      执行scott脚本创建scott模式 13.      用命令测试数据

java oracle-怎么在oracle用imp导入数据库前删除数据库里的表 触发器怎么写 或者java代码怎么写

问题描述 怎么在oracle用imp导入数据库前删除数据库里的表 触发器怎么写 或者java代码怎么写 // 还原 Button button_1 = new Button(composite_1, SWT.NONE); button_1.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { TableItem[] tis = table.get