1.事情起因

接到电话,周日意外断电,数据库起不了,报REDO CRASH,ora-00333错误。

相关环境如下:RAC oracle_11.2.0.3,无备份,开归档。

2 处理

一到现场,既然对方没有备份,那就做一个冷备份咯;oracle 11g嘛,把asm里datafile,logfile,controlfile(如果有必要spfile.ora)copy出来就可以了。拼的sql 如下:

select 'cp '||name ||' /databak/datafile/' fromv$datafile unionselect 'cp '||member||' /databak/logfile/' from v$logfile union

select 'cp '||name ||' /databak/controlfile/' fromv$controlfile;

转到grid用户下,asmcmd,执行就可以了。时间嘛,那就得看你的数据文件大小和存储的IO速度了。

2.1修改隐含参数

由于有了冷备,可以参数(如果没冷备,改这个参数,那再后面就没那个砖家来陪你玩了)SQL>create pfile=’/databak/pfile.ora’ from spfile;

修改pfile.ora,增加如下部分

_allow_resetlogs_corruption=TRUE

*.undo_management='MANUAL'

*.rollback_segments='SYSTEM'

可能有人要问,你resetlogs,关undo啥事,但通常事情是这样,redo出问题了,那就意味着有事务没提交完,那undo必然不一致,所以干脆把undo也改了吧。

2.2 启库

改完了,重启咯

SQL>shutdown immediate;

SQL>startup mount pfile=’/databak/pfile.ora’

SQL>RECOVERDATABASE until cancel;

这时数据库会提示你输入下一个logseq,这里没有,直接输cancel;这里你会很高兴的看到那个坏的redo被清掉了,可以欢呼了,起来了,但是世界是非富多彩地,马上就把你的高兴打破:ORA-01555caused by SQL statement below (SQL ID: 4krwuz0ctqxdt, SCN: 0x0db2.73a0c8cd):

select ctime,mtime, stime from obj$ where obj# = :1

Errors in file/oracle/app/oracle/diag/rdbms/oradb/oradb1/trace/jmrk1_ora_4608.trc:

Errors in file/oracle/app/oracle/diag/rdbms/oradb/oradb1/trace/jmrk1_ora_4364.trc:

ORA-00704:bootstrap process failure

ORA-00704:bootstrap process failure

ORA-00604:error occurred at recursive SQL level 1

ORA-01555:snapshot too old: rollback segment number 20 with name"_SYSSMU20_3214617278$" too small

这里一看,似乎和undo有关系,但看官莫急,仔细看一下

select ctime,mtime, stime from obj$ where obj# = :1这个语句好眼熟,不是初始化最早的语句么,那估计SCN有问题了。SQL>Selectcurrent_scn from v$database;

-------------------------------------------------------------------

0

为0.HOHO.

这里用两种方法来解决啰:

1设置10046traceSQL> oradebug setmypidStatement processed.SQL> oradebug EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12Statement processed.SQL> oradebug TRACEFILE_NAME

2 oradebugpoke推进scn

3设置隐含参数_minimum_giga_scn

我这里采用第三种:selectksppinm,ksppdesc from x$ksppi   whereksppinm like '%giga%'

KSPPINM                        KSPPDESC

---------------------------------------------------------------------------

_minimum_giga_scn              Minimum SCN to start with in 2^30units

selectto_char(checkpoint_change#,'99999999999999') from v$database;

TO_CHAR(CHECKPO---------------

15060095276784

selectdistinct(to_char(checkpoint_change#,'99999999999999'))  from v$datafile_header;

(TO_CHAR(CHECKP

---------------

15060095276784

SQL> select15060095276784/1024/1024/1024 from dual;

15060095276784/1024/1024/1024

-----------------------------

14025.8067

修改pfile改修改:

_minimum_giga_scn=14026

现次启动数据库,顺利open,但有一堆JOB报错,估计掉电时正在跑JOB.也就解释了为啥周日掉电也会把数据库redo 搞垮。

SQL> alter system setjob_queue_processes=0;

导出全部做一个逻辑导出咯。expdp system/systemdirectory=full dumpfile=dump_%u.dmp logfile=export.log full=y parallel=4

导出时也报了一个错,说回滚段不可用,忘了把undo改成真正的undo了,SQL> create undotablespace  undotbs3 datafile'+ordata(datafile)' size 8G;

修改pfile,改成成undotbs3;再次重启,OK。

2.3 MOS _ALLOW_RESETLOGS_CORRUPTION说明

DB_Parameter _ALLOW_RESETLOGS_CORRUPTION

========================================

This documentation has been preparedavoiding the mention of the complex

structures from the code and to simply givean insight to the 'damage it could

cause'. The usage of this parameter leads to an in-consistent Database with no

other alternative but to rebuild thecomplete Database.  This parameter could

be used when we realize that there are nostardard options available and are

convinced that the customer understands theimplications of using the Oracle's

secret parameter.  The factors to be considered are ;--

1. Customer does not have a good backup.

2. A lot of time and money has beeninvested after the last good backup and

there is no possibility for reproduction of the lost data.

3. The customer has to be ready to exportthe full database and import it

back after creating a new one.

4. There is no 100% guarantee that by usingthis parameter the database would

come up.

5. Oracle does not support the databaseafter using this parameter for

recovery.

6. ALL OPTIONS including the ones mentionedin the action part of the error

message have been tried.

简单点来说,就是_ALLOW_RESETLOGS_CORRUPTION这个参数没有100%保证,你redo坏了能用他来OPEN库的,并且了用了这个后不支持恢复了(rman),仅仅支持export.

3总结:

没啥好说的,有运气成份在里面,如果datafile block有环块那就更麻烦了,如果坏了一片也就没得完了,没事还是不要玩掉电吧,把UPS电池时间弄长一点,加个停电报警,省了一片心,再就是有空建个dataguard吧。

oracle00333,Oracle数据库REDO损坏ora-00333修复手札相关推荐

  1. oracle 意外事件,Oracle数据库REDO损坏ora-00333修复手札

    1.事情起因 接到电话,周日意外断电,数据库起不了,报REDO CRASH,ora-00333 相关环境如下:RAC oracle_11.2.0.3,无备份,开归档. 2 处理 一到现场,既然对方没有 ...

  2. 记一次ORACLE数据库redo日志文件损坏故障恢复

    记一次ORACLE数据库redo日志文件损坏故障恢复 环境 ORACLE 11G R2 + RAC+ ASM 归档模式 问题描述 数据库1节点状态变为Stuck Archiver,alert日志报Ar ...

  3. oracle 数据库文件损坏无法启动

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL} auto ORA-00308: 无法打开归档日志 'D:\DIABLOORACLE\P ...

  4. oracle数据块损坏后的修复方法

    关于oracle数据块损坏的解决方法,相关链接网址在: http://blog.csdn.net/dlinger/archive/2004/08/24/83911.aspx http://www.it ...

  5. Oracle数据库不同损坏级别的恢复详解

    墨墨导读:在 DBA 的日常工作中不可避免存在着数据库的损坏,本文将主要介绍 Oracle 数据库遇到不同损坏级别下的应该采用的恢复方法,供读者在遇到此类情景时,能的找到适合自己的恢复方法,提高工作效 ...

  6. Oracle数据文件损坏无法正常修复问题

    如果Oracle数据库中,某个数据文件损坏,有冷备,但是归档日志文件缺失,导致数据文件无法恢复到一致性状态. 这种情况下如果没有其他恢复介质,可以接受数据丢失的话,可以通过修改数据文件头的SCN号,使 ...

  7. oracle安装文件拒绝访问,oracle数据库的listener.ora文件拒绝访问,求解决!!!

    1. 执行$ORALCE_HOME/bin/netca,启动图形界2113面配置5261listener,配好后就有listener.ora文件4102了2. 在Linux图形界面下直接1653启ne ...

  8. oracle检查表是否有坏块,Oracle数据库坏块检查与修复

    摘要:简述数据库坏块,发现并处理Oracle的物理坏块.逻辑坏块 以下摘自网络并规整: 一.数据库坏块介绍 数据库的数据块有固定的格式和结构,分三层:cache layer,transaction l ...

  9. oracle数据库问题处理,ora 问题处理 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...

    牛奶早餐 asm日志 p740 client_id='' type='UNKNOWN' level='16' host_id='P740' host_addr='172.16.15.82' modul ...

最新文章

  1. 对Promise的一些深入了解
  2. HSmartWindowControl 之 摄像头实时显示( 使用 WPF )
  3. Java 8 - 正确高效的使用并行流
  4. Oracle编程入门经典 第1章 了解Oracle
  5. 使用光标查询10部门的员工姓名和工资,并打印__使用光标查询员工姓名和工资,并打印
  6. vm15 安装 mac虚拟机的过程 转载的
  7. java 使用apollo,Springboot apollo原理及使用方法详解
  8. SQL:postgresql中st_union合并多条geom数据
  9. list循环添加数据_笔记 | 自学Python 06:数据类型之列表
  10. 个人笔记-Minecraft阿里云服务器搭建
  11. 出现ora-01400错误解决办法
  12. 比较802.11ac(Wi‑Fi 5)和802.11ax(Wi‑Fi 6)
  13. 基于springboot的停车场管理系统设计与实现
  14. zookeeper客户端 curator的使用
  15. 用通俗易懂的方式讲解:决策树模型及案例(Python 代码)
  16. 宁波一货船在东海海域沉没
  17. Android 智能手机开发概述
  18. linux安装Oracle 11g详解
  19. 三维坐标变换(旋转矩阵旋转向量)
  20. 简信CRM:在线crm这两个指标非常重要!

热门文章

  1. 三个月前被 K8S 弃用,Docker 火了!获 2300 万美元融资
  2. “编程能力差,90%输在了选择上!”CTO:多数程序员都是瞎努力!
  3. 双十一提前预热,这款耳机直降80元!
  4. 我的世界1.8.9无需正版的服务器,我的世界1period;8period;9服务器纯洁服地址 | 手游网游页游攻略大全...
  5. java线性表源代码_线性表java实现之顺序存储源码
  6. cad多个窗口并排显示_你早该这么做!并排查看Excel工作表其实一个小动作就搞定!...
  7. 企业微信_获取access_token
  8. yarn全局安装vue/cli vue不是内部命令
  9. 秒杀场景_重复抢单问题分析与实现_03
  10. 定时器new Timer().schedule()的使用