ORA-600 [2662] Block SCN is ahead of Current SCN 处理方法 说明
转自:
http://blog.csdn.net/tianlesoftware/article/details/6647618一. ORA-600[2662] 说明
关于ORA-600[2662]的的错误,之前的blog 有说明:
ORA-600[2662] "Block SCN is ahead of Current SCN" [ID 28929.1]
http://blog.csdn.net/tianlesoftware/article/details/6106130
关于ORA-600 的各个参数说明,参考我的blog:
ORA-600 各个参数含义说明
http://blog.csdn.net/tianlesoftware/article/details/6645809
简单的说,就是block 里的SCN 大于current SCN 时,就会报ORA-600[2662]错误。
导致这个问题的原因有如下可能:
(1) doing an open resetlogs with_ALLOW_RESETLOGS_CORRUPTION enabled
(2) a hardware problem, like a faultycontroller, resulting in a failed write to the control file or the redo logs
(3) restoring parts of the database frombackup and not doing the appropriate recovery
(4) restoring a control file and not doinga RECOVER DATABASE USING BACKUP CONTROLFILE
(5) having _DISABLE_LOGGING set duringcrash recovery
(6) problems with the DLM in a parallelserver environment
(7) a bug
二. 解决方法
(1)if the SCNs in the error are very close, attempting a startup several timeswill bump up the dscn every time we open the database even if open fails. Thedatabase will open when dscn=scn.
(2)Youcan bump the SCN either on open or while the database is open using<Event:ADJUST_SCN> (see Note:30681.1).
Beaware that you should rebuild the database if you use this option. Once this has occurred you would normally want to rebuild thedatabase via exp/rebuild/imp as there is no guarantee that some other blocksare not ahead of time.
关于这个rebuild 的另一段描述:
Forcing the database to startup using_ALLOW_RESETLOGS_CORRUPTION:
This parameter is undocumented andunsupported. The_allow_resetlogs_corruption should only be done as a lastresort. Usually when a database is opened with either the RESETLOGS or NORESETLOGSoption, the status and checkpoint structures in all the file headers of alldata files are checked to make sure that they are consistent. Once this is checked, the redo logs are zeroedout in case of RESETLOGS. When the_ALLOW_RESETLOGS_CORRUPTION parameter is set, the file header checks arebypassed. This means that we do not make sure that the files are consistent andopen the database. It will potentially cause some lost data and lost dataintegrity.
Thedatabase should be rebuilt since data and the data dictionary could be corruptin ways that are not immediately detectable. This could lead to future outagesor put the database in a state where it cannot be salvaged at all. There is noguarantee that this will work.
当我们设置_ALLOW_RESETLOGS_CORRUPTION参数后,讲不在检查file header,这样就不能保证files的一致性,就可能造成数据的丢失。 所以这种情况下,就是对数据库进行rebuild。 即:export DB, 重新创建实例,import 数据。
2.1 方法一
ORA-600的参数格式如下:
Arg[a] Current SCN WRAP
Arg[b] Current SCN BASE
Arg[c] dependent SCNWRAP
Arg[d] dependent SCN BASE
Arg[e] Where present this is the DBA wherethe dependent SCN came from.
当dependent SCN 与 current SCN 差距不大的时候,可以多shutdown 和 startup 数据库,这样拉大current SCN,当current SCN 大于dependent SCN, 就可以正常启动DB了。
2.2 方法二: 使用adjust_scn event
如果dependent SCN 和 current SCN 差距很大的时候,通过多次重启DB 来拉大SCN 明显不现实。 这时候,就可以通过adjust_scn event 来拉大current scn。 但是使用这种方法,需要重新rebuild 一下数据库,即exp 和imp。
关于adjust_scn event 使用说明,参考我的blog。 这篇文档在MOS 上没有找到,所以转帖过来了。
EVENT ADJUST_SCN 说明 [30681.1]
http://blog.csdn.net/tianlesoftware/article/details/6645633
2.2.1 数据库没有打开时使用说明
Take a backup.
You can use event 10015 to trigger an ADJUST_SCNon database open:
startup mount;
alter session set events '10015 trace nameadjust_scn level 1';
(NB: You can only use IMMEDIATE here onanOPEN database. If the database is only mounted use the 10015 trigger to adjustSCN,otherwise you get ORA 600 [2251], [65535], [4294967295] )
alter database open;
If you get an ORA 600:2256 shutdown, use ahigher level and reopen.
Do*NOT* set this event in init.ora or the instance will crash as soon as SMON orPMON try to do any clean up.Always use it with the "alter session"command.
--不要将该参数设置到init.ora 文件里,否则当SMON 或者PMON 进程进行cleanup时,DB 就会crash 掉。
2.2.2 数据库OPEN 状态使用
You can increase the SCN thus:
alter session set events 'IMMEDIATE tracename ADJUST_SCN level 1';
LEVEL:
Level1 is usually sufficient - it raises the SCN to 1 billion(1024*1024*1024),Level 2 raises it to 2 billionetc...
--注意level1的值,1代表的是讲SCN 增加1亿,2代表2亿
If you try to raise the SCN to a level LESSTHAN or EQUAL to its current setting you will get <OERI:2256> - Seebelow.
Ie: The event steps the SCN to knownlevels. You cannot use the same level twice.
Calculating a Level from600 errors:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To get a LEVEL for ADJUST_SCN:
a) Determine the TARGET scn:
ora-600 [2662] See <OERI:2662> Use TARGET >= blocksSCN
ora-600 [2256] See<OERI:2256> Use TARGET >=CurrentSCN
b)Multiply the TARGET wrap number by 4.This will give you the level to use in the adjust_scn to get the correct wrapnumber.
c) Next, add the following value to the levelto get the desired base value as well :
Add to Level Base
~~~~~~~~~~~~ ~~~~~~~~~~~~
0 0
1 1073741824(1024*1024*1024),
2 2147483648(2*1024*1024*1024),
3 3221225472(3*1024*1024*1024),
注意:
在Oracle 9i 下面,直接使用alter session 命令就可以增加SCN。 但是在Oracle 10g下面,还需要修改隐含参数:_allow_error_simulation,将该参数设置为true,才能真正增进scn。
隐含参数的查看,可以使用如下视图:
Oracle all_parameters 视图
http://blog.csdn.net/tianlesoftware/article/details/6641281
三. adjust_scn 示例
db 版本信息:
SYS@dave2(db2)> select * from v$versionwhere rownum=1;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise EditionRelease 10.2.0.1.0 - Prod
3.1 db open 状态
SYS@dave2(db2)> select current_scn fromv$database;
CURRENT_SCN
-----------
4304475
SYS@dave2(db2)> select open_mode fromv$database;
OPEN_MODE
----------
READ WRITE
SYS@dave2(db2)> alter session set events'immediate trace name adjust_scn level 1';
Session altered.
SYS@dave2(db2)> select current_scn fromv$database;
CURRENT_SCN
-----------
4304523
注意这里的SCN 并没有大量的增加,我们设置一下_allow_error_simulation。
SYS@dave2(db2)> alter system set"_allow_error_simulation"=true scope=spfile;
System altered.
SYS@dave2(db2)> startup force
ORACLE instance started.
Total System Global Area 239075328 bytes
Fixed Size 1218724 bytes
Variable Size 79693660 bytes
Database Buffers 155189248 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SYS@dave2(db2)>
再次使用adjust_scn event:
SYS@dave2(db2)> alter session set events'immediate trace name adjust_scn level 1';
Session altered.
SYS@dave2(db2)> select current_scn fromv$database;
CURRENT_SCN
-----------
1073742111
--这次SCN 成功增加了。
3.2 db not open 状态
这里_allow_error_simulation 参数已经修改过了,我们就不进行重复修改,直接将将db 启动到mount,在使用adjust_scn 增加SCN值。
SYS@dave2(db2)> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@dave2(db2)> startup mount
ORACLE instance started.
Total System Global Area 239075328 bytes
Fixed Size 1218724 bytes
Variable Size 79693660 bytes
Database Buffers 155189248 bytes
Redo Buffers 2973696 bytes
Database mounted.
SYS@dave2(db2)> select current_scnfrom v$database;
CURRENT_SCN
-----------
0
--如果DB 没有open,这个命令是不好使的
SYS@dave2(db2)> altersession set events '10015 trace name adjust_scn level 2';
Session altered.
SYS@dave2(db2)> select current_scn fromv$database;
CURRENT_SCN
-----------
0
SYS@dave2(db2)> alterdatabase open;
Database altered.
SYS@dave2(db2)> select current_scn from v$database;
CURRENT_SCN
-----------
2147483746
--SCN 已经增加
--最后查看一下_allow_error_simulation参数的值:
SYS@dave2(db2)> select name,value fromall_parameters where name='_allow_error_simulation';
NAME VALUE
-------------------------------------------------------------------------------
_allow_error_simulation TRUE
最后不要忘记对db进行rebuild。
分享到:
相关推荐
【ORA-600 16703 灾难恢复详解】 在数据库管理领域,数据恢复是一项至关重要的任务,尤其是当系统遇到严重错误如 ORA-600 时。ORA-00600 是Oracle数据库内部错误代码,通常表示遇到了未预期的内部错误或数据结构...
UNDO表空间问题也可能导致ORA-600错误,如ORA-600[4137]、ORA-600[4193]或ORA-600[4194]等。 **解决办法:** 1. **设置_corrupted_rollback_segments:** 可以尝试通过设置`_corrupted_rollback_segments`参数来标记...
### Oracle 错误 ORA-00132 和 ORA-00214 解析及处理 #### 一、错误概述 在Oracle数据库管理过程中,遇到ORA-00132和ORA-00214这类错误时,往往意味着数据库配置或启动过程中出现了问题。下面将对这两个错误进行...
在使用Oracle Data Pump工具IMPDP(Import Data Pump)进行数据导入的过程中,可能会遇到ORA-39002和ORA-39070等错误。本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误...
ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法
Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...
oracle scn修改工具,可以直接修改oracle scn,在极端情况下恢复使用,比如解决ORA-600 2662等类似错误,使用说明:https://www.xifenfei.com/2022/06/win-oracle-scn-patch.html
oracle网络配置(listener_ora-sqlnet_ora-tnsnames_ora).mht
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
ORACLE8I数据库应用EXP工具时ORA-06553报错的解决方法 摘要:本文主要解决ORACLE 8I数据库应用EXP工具时ORA-06553报错的问题,分析出现问题的原因,并提供了正确的解决方法和措施。 知识点1:Oracle 8I数据库EXP...
在创建Oracle数据库连接时遇到的错误ORA-01017和ORA-02063涉及到用户认证问题以及Oracle数据库版本之间的差异处理。ORA-01017错误表示用户名或密码无效,登录被拒绝,而ORA-02063则通常表示在Oracle数据库之间进行...
### Oracle12cRAC数据库出现ora-12520, ora-12516问题解析 #### 一、问题概述 在使用Oracle12cRAC(Real Application Clusters)数据库的过程中,可能会遇到客户端连接时出现ora-12520或ora-12516错误的问题。这两...
Oracle数据库发生ORA-04031错误原因浅析及处理 Oracle数据库是甲骨文公司提供的一种分布式数据库管理系统,以分布式数据库为核心的软件产品。它具有完整的数据管理功能,作为一个关系数据库,它是一个非常实用的...
### 如何处理错误ORA-29275:部分多字节字符 #### 问题背景与描述 在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$...
然而,在日常运维过程中,我们可能会遇到各种错误,比如“ORA-00702”就是其中之一。这个错误通常在尝试重启Oracle数据库服务时出现,意味着数据库实例在启动过程中遇到了问题。本文将详细介绍如何在Windows和Linux...
### 离线误删空间文件导致的ORA-01033及ORA-01145问题的解决办法 #### 概述 在Oracle数据库管理过程中,偶尔会遇到因误操作导致的数据文件出现问题的情况,例如误删除数据文件或者数据文件损坏等。这些问题可能会...
### Oracle 10g启动后报ORA-16038错误的解决方法 #### 错误概述 在启动Oracle 10g数据库时遇到ORA-16038错误,该错误通常与归档日志操作有关。具体错误信息为: ``` ORA-16038: log 1 sequence #230 cannot be ...
OGG 之 ORA-01403 案例分析 本文将对 OGG 之 ORA-01403 案例进行详细的分析,包括出现错误的原因、解决方法、handlecollisions 参数的解析和使用注意事项等。 一、错误原因分析 OGG 之 ORA-01403 案例中,出现了...