Oracle ORA-00600[2662] 解决
一、问题描述
1、数据库情况
1)数据库版本:11.2.0.4;
2)未开启归档;
3)没有备份:无RMAN备份、无DUMP备份;
4)数据库redo log 日志组,每组只有一个成员;
2、问题出现原因
因公司断电,导致生产数据库宕机,开启后,出现ORA-00600[2662]问题:ORA-00600: internal error code, arguments: [2662], [2], [1424107441], [2], [1424142235], [8388617], [], []。
通过查看数据库状态,只能开启到mount状态,并且有一个日志组文件损坏,而且损坏的是current redo log,并且这个组中,只有这一个日志组成员。
ORA-00600[2662]原因如下:
1)A data block SCN is ahead of the current SCN.(SCN不一致)
2)Bug 14351566 ORA-600 [kclchkblk_4] ORA-600 [2662] when doing flash back;
3、SCN简介
SCN即系统改变号(System Change Number),是在某个时间点定义数据库已提交版本的时间戳标记。 Oracle为每个已提交的事务分配一个唯一的SCN。 SCN的值是对数据库进行更改的逻辑时间点。 Oracle使用此编号记录对数据库所做的更改。在数据库中,SCN也可以说是无处不在,数据文件头,控制文件,数据块头,日志文件等等都标记着SCN。也正是这样,数据库的一致性维护和SCN密切相关。不管是数据的备份,恢复都是离不开SCN的。
二、问题处理思路
排除了因为Bug导致ORA-00600[2662]的错误,那么错误就定位在SCN不一致上面。
因为没有可用的日志、备份、归档等条件,只能采用重建控制文件,并通过设置Oracle内部隐含参数_allow_resetlogs_corruption=TRUE跳过一致性检查,强制open数据库。
三、解决步骤
1、参数文件中加入_allow_resetlogs_corruption=TRUE
alter system set _allow_resetlogs_corruption=TRUE scope=spfile;
注意:
即便加上此参数,数据库在此时开启,仍然会爆出ORA-00600[2662];
如果之前在无法open数据库的时候,加上此参数,仍然会爆出ORA-00600[2662]。
2、重建控制文件
CREATE CONTROLFILE REUSE DATABASE "TRSDB" RESETLOGS NOARCHIVELOG --注意:因为数据库本身就是非归档模式,所以也以非归档模式重建,在追加完SCN后,open数据库,直接open就可。
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 '/home/oracle/app/oracle/oradata/trsdb/redo01.log' SIZE 50M, ---等数据库恢复后,需要在日志组中在加上一个日志组成员(一个日志组至少两个成员)
GROUP 2 '/home/oracle/app/oracle/oradata/trsdb/redo02.log' SIZE 50M,
GROUP 3 '/home/oracle/app/oracle/oradata/trsdb/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/home/oracle/app/oracle/oradata/trsdb/system01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sysaux01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb12_2.dbf',
'/home/oracle/app/oracle/oradata/trsdb/users01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/bigdb.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb03.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb04.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb05.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb06.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb07.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb08.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb09.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb10.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb11.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb12.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device03.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device04.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device05.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device06.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device07.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device08.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device09.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device10.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device11.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device12.dbf',
'/home/oracle/app/oracle/oradata/trsdb/bigdb-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb08-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb09-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb10-1.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb07-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb06-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb05-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device11_2.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device11_3.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device11_4.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device11_5.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb12_1.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb01a.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb01b.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb021.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb02-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb07-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb10-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb03-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb06-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb11-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb09-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb04-03.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb05-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb02-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/bigdb-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/bigdb-03.dbf',
'/home/oracle/app/oracle/oradata/trsdb/bigdb-04.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb01c.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb03-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb04-02.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB07_2018060817_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB08_2018061109_2.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB09_2018061917_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB10_2018062618_3.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB12_2018071420_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB02_2018072309_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB01_2018072409_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB01_2018072409_2.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/DEVICE01_2018072409_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/DEVICE02_2018072409_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/DEVICE03_2018072717_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB06_2018072717_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/DEVICE08_2018072717_2.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/DEVICE09_2018072717_2.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB05_2018072717_2.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/SGDB03_2018072718_1.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/DEVICE06_2018072718_2.dbf',
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/DEVICE07_2018072718_2.dbf',
'/home/oracle/app/oracle/oradata/trsdb/device04-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb04-01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb09-03.dbf',
'/home/oracle/app/oracle/oradata/trsdb/sgdb08-02.dbf',
'/home/oracle/app/oracle/oradata/trsdb/audit01.dbf',
'/home/oracle/app/oracle/oradata/trsdb/undotbs02.dbf'
;
3、使用oradebug poke推进SCN
1)oradebug setmypid
2)oradebug dumpvar sga kcsgscn_
3)oradebug poke 0x060012658 8 10014077592
4)oradebug dumpvar sga kcsgscn_
5)alter database open;
至此数据库恢复完毕,后面还需要将数据导出,并重建这个非常规恢复的数据库。
oradebug主要是给oracle支持人员使用的,尽管很早便有,但oracle官网很少有记载。他是个sql*plus命令行工具,有sysdba的权限就可以登入,无需特别设置。他可以被用于:
1)追踪进程,或者是你的,或者是外部的
2)确定进程往哪个trc文件写
3)转储:数据文件头、内部oracle结构等
4)挂起进程,暂时的
5)确定实例使用了哪些共享内存块和信号量
6)找出RAC实例使用了哪些互联地址和协议
7)修改SGA中的数据结构
To poke memory locations use
SQL>ORADEBUG
POKE address length value
where address and value can be decimal or hexadecimal and length is in bytes
在实际这类工作中,我们实际应该是要认真计算好需要推进SCN的值,而不应图省事直接给一个很大的值。后者不但是技术水平不成熟的表现,而且是不负责任的行为。
ORA-00600: internal error code, arguments: [2662], [2], [1424107441], [2], [1424142235], [8388617], [], []
select 2*power(2,32)+1424142235 from dual;
10014076827
select 2*power(2,32)+1424143000 from dual;
10014077592
oradebug dumpvar sga kcsgscn_
alter database open;
注意:
网上大量的恢复文章,步骤都不正确,混淆视听,经过确认,只要上面的三步即可恢复。
不需要如下:恢复数据库
1)recover database using backup controlfile until cancel;
2)alter database open resetlogs;
四、数据库导出
导出数据库的时候有个ora-01552的关于undo表空间的报错
解决方法:
1、表空间管理改为自动管理auto(因为之前看文档,要将undo管理,改为手动)
2、新建表空间
3、将新的表空间切换为默认表空间,弄完后则可expdp导出
五、事后总结
1、在做这次数据库恢复时,从网上选取了多种恢复方法,最后得到只有oradebug poke推进SCN的方法适合11.2.0.4版本,其他方法已经不适用;
2、数据库处于整个系统的终端,对数据库做的各种安全保护手段都不为过
1)必须对数据库做定期备份(RMAN/DUMP)
2)必须对日志文件使用日志组的方式,这样可以保证,同一组内的一个redo log损坏,可以有后备的redo log继续工作;
3)必须开启归档日志。
Oracle ORA-00600[2662] 解决的更多相关文章
- Oracle Ora 错误解决方案合集
注:本文来源于 < Oracle学习笔记 --- Oracle ORA错误解决方案 > ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发 ...
- Oracle导入中文乱码解决办法
Oracle导入中文乱码解决办法 一.确保各个客户端字符集的编码同服务器字符集编码一致 1- 确定sqlplus字符集编码,如果是windows设置环境变量. 2- 确保Sec ...
- Oracle OCI-22053:溢出错误解决方法
原文 Oracle OCI-22053:溢出错误解决方法 Oracle 数值数据类型最多可存储 38 个字节的精度.当将 Oracle 数值转换为公共语言运行库数据类型时,小数点后边的位数可能过多,这 ...
- 经历:asp.net oracle 部署问题以及解决方法
原文:[原创]经历:asp.net oracle 部署问题以及解决方法 精简的美丽...... 一.环境 开发环境 win7 64bit Vs2010 ...
- 升级时针对Source oracle home 不存在解决办法
针对于oracle升级从11.2.0.4升级至12.1.0.1,遇到的问题解决. 运行/oracle/app/product/12.1.0.1/dbhome_1/bin/dbua 后 在选择数据库ho ...
- 导出oracle 到 mysql的解决办法
导出oracle 到 mysql的解决办法 使用sqluldr2 命令如下sqluldr2 USER=weibh/1234@dydb file=c:\1.txt sql=sql.sql FORMA ...
- Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法
asp.net程序编写完成后,发布到IIS,经常出现的一个问题是连接不上Oracle数据库,具体表现为Oracle的本地NET服务配置成功:用 pl/sql 等工具也可以连接上数据库,但是通过浏览器中 ...
- Oracle ORA 12541 报错解决过程
Oracle 导入全库之后使用plsql登陆时报错 版本12C版本2 ORA-12541: TNS: No Listener 再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法 ...
- [转]ORA-01034: ORACLE not available如何解决
本文转自:http://www.cnblogs.com/zhwl/p/3726003.html 一个小小的问题,让我折腾了一个上午,下午三点彻底解决了,分享一个给大家解决方法,尽管在测试服务器上,但是 ...
随机推荐
- zblog安装环境介绍?zblog安装需要什么环境
最近在群里看到很的多人有在问:“安装zblog需要什么环境?”,其实这个问题在zblog官网的程序下载页面有说明,但是不太详细,那么本文的目的就是来给大家介绍下zblog安装环境详细说明. zblog ...
- 利用Python进行数据分析 第7章 数据清洗和准备(1)
学习时间:2019/10/25 周五晚上22点半开始. 学习目标:Page188-Page217,共30页,目标6天学完,每天5页,预期1029学完. 实际反馈:集中学习1.5小时,学习6页:集中学习 ...
- python第一天---我要入个门
""" 一个用户登录的案例 """ # 永远等待,直到用户输入值 # 变量 name_r = input("请输入用户名" ...
- PAT(B) 1062 最简分数(Java)
题目链接:1062 最简分数 (20 point(s)) 题目描述 一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正 ...
- 知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
我讨厌那些自以为是的人,哪些只有远大抱负却不付出的混蛋,我讨厌那些老生欺负小生,讨厌以大欺小,讨厌别人把知识拿来炫耀. 我自己也不愿做这类人,我渴望看到成功,我不怕一意孤行,我不怕失败,我只怕自己做的 ...
- loginserver 个人草稿
<script> (function($, doc) { /*var contextpath = "http://192.168.0.102:8080/pwgtjq"; ...
- Arm-Linux 移植 jpeg库
背景: jpeg库的使用可以提高显示效率. host平台 :Ubuntu 16.04 arm平台 : S5P6818 jpeg :v9c arm-gcc :4.8.1 主机准备: 运行以下脚 ...
- netty--处理器
编解码器的基类: 编码:MessageToByteEncode 解码:ByteToMessageDecoder
- Nokia5130不能上网
说明 我是一个挺怀旧的人,一直想入手一个好几年前买的Nokia5130. 于是昨天在淘宝上买了一个,花了我一百多.不过早就停产了,买到的自然是翻新机. 收到货的时候,看似一切美好,但是下载了个uc的j ...
- hdu1171 灵活的运用背包问题咯。。。 还有!!!! 合理的计算数组的范围!! wa了好多次!
Problem Description Nowadays, we all know that Computer College is the biggest department in HDU. Bu ...