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

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吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle cannot allocate new log,Thread 1 cannot allocate new log

今天发现alter.log有以下信息:Thread 1 cannot allocate new log, sequence 6166Private strand flush not complete对于这个错误信息得解释如下:当系统要重新利用某个日志文件的时候,系统需要将该日志文件所包括的buffer cache 中的dirty bl…

arduino tft 方向_ESP32在Arduino环境下玩转 LVGL,ESP32移植LVGL详细教程

微信关注 “DLGG创客DIY”设为“星标”,重磅干货,第一时间送达。❝转载自慕容流年 https://me.csdn.net/qq_41868901❞1. LVGL简介LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素、漂亮的…

linux内核开文件系统,内核必须懂(二): Linux文件系统初探

目录前言文件系统结构新建文件和inode文件创建过程inode解析打开文件参考最后前言这次来说文件系统. 文件系统是非常重要的, 提高磁盘使用率, 减小磁盘磨损等等都是文件系统要解决的问题. 市面上的文件系统也是数不胜数, 比较常用的像ext4, xfs以及ntfs等等, 国内的像鹅厂的tfs…

gps卫星位置计算程序matlab_科研项目 | BD/ GPS卫星导航仿真测试系统研究

一、项目背景在移动互联和互联网的时代,卫星导航定位已经成为生活中不可或缺的部分。目前,我国的交通、银行、电力、采矿、测绘等部门以及大众化市场都需要大量的定位、授时服务。许多企业也形成了覆盖卫星导航相关材料及元器件、卫星导航芯片、卫星导航…

linux docker权限,linux - 如何解决ubuntu中的docker权限问题? - Ubuntu问答

问题描述我已经按照here的说明安装了docker。我使用Ubuntu Trusty 14.04 (LTS) (64-bit)。安装过程中的一切都很好。另外,命令$ sudo docker run -i -t ubuntu /bin/bash可以很好地完成(在打开的控制台中键入”exit”之后。但是当我尝试执行其他操作时,我…

python虚拟人脸生成_GitHub - 597111463/seeprettyface-generator-yellow: 这是一个用StyleGAN训练出的黄种人人脸生成器...

黄种人人脸生成器注明:之前做的一些有意思的人脸生成器,现在全部开源分享出来。它的主要作用是可生成制作各类型的人脸素材,供我们任意使用且无须担心人脸版权的问题。在定制人脸上,开源的全系列生成器包括:黄种人脸生…

Linux输入密码接口,Linux下搭建接口自动化测试平台

前言我们今天来学习一下在Linux下如何搭建基于HttpRunner开发的接口自动化测试平台吧!需要在Linux上提前准备的环境(下面是本人搭建时的环境):1,Python 3.6.8 (可参考随笔:Linux学习6-安装Python3.6)2,MySQL 5.7(可参考…

python构建字典实现英文大写字母与ascii编码的转换_Python:将复杂的字符串字典从Unicode转换为ASCII...

作为从JSON API调用解析的多级字典,我有很多输入.字符串都是unicode,这意味着有很多ustuff like this.我正在使用jq来处理结果,需要将这些结果转换为ASCII.我知道我可以编写一个函数来像这样转换它:def convert(input):if isinstance(input, dict):ret {}for stuff in input:r…

linux下查看windows文件夹大小,如何从Windows命令行检查文件夹的大小?

我意识到这个问题要求使用进行文件大小分析CMD line。但是,如果您愿意使用它,PowerQuery (Excel add-in, versions 2010)则可以创建一些非常引人注目的文件大小分析。下面的脚本可以粘贴到空白查询中;您唯一需要做的就是添加一个名为“ param…

python多进程传递参数_急急急, Python 多进程,如何传递 epoll?

102019-06-16 15:39:41 08:00NoAnyLove 好的好的,我查了下,说 IPC 或向 worker 参数传递的东西必须要能 pickle,不然就报错,那就是 select.epoll 是不支持的。error:TypeError: cant pickle select.epoll objects。代码…

linux查看一小时之内的日志,linux – 在[timespan]内(例如最后一小时)查找日志文件中的条目...

我的服务器CPU使用率不高,我可以看到Apache正在使用太多的内存。我有一种感觉,我正在用一个IP进行DOS.-也许你可以帮我找到他?我已经使用以下行找到10个最“活跃”的IP:cat access.log | awk {print $1} |sort |uniq -c |sort -n …

图像语义分割_图像语义分割(9)-DeepLabV3: 再次思考用于图像语义分割的空洞卷积...

论文地址 :Rethinking Atrous Convolution for Semantic Image Segmentation论文代码:Github链接1. 摘要文章主要的工作:使用空洞卷积来调整滤波器的感受野并控制特征图分辨率使用不同空洞率的空洞卷积的串联或者并行操作来分割不同尺度的目标…

linux系统列表,Linux常用系统调用列表-20210415054405.docx-原创力文档

LinuxLinux常用系统调用列表作者:雷震 2002年3月本文列出了大部分常见的Linux系统调用,并附有简要中文说明。以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派 生出的的函数。按照惯例,这个列表以man pages…

sql replace 双引号变单引号_sql-汇总、排序以及分析思路

一、汇总函数注:汇总函数,如果输入是列名,计算会把null 排除在外,count(*)对所有的行进行计数二、如何用sql解决业务问题注1:空值(null)的排序,排序是最小的,例如select * from tea order by tea_name注2&a…

linux subversion 根目录检出,经验总结:详解Linux下Subversion的安装配置记录 下

上节介绍额Linux下Subversion的安装问题,本节介绍Linux下Subversion配置问题,你可以和Windows下Subversion的安装配置做一个对比,你就会发现在这两种操作系统中Subversion的不同运行机制。第二章配置本系统采用为每个项目单独建一版本库的策略…

python用户名密码登录退出_用户登录登出

一、功能需求分析1.登录功能分析1.1登录流程1.2功能(一个请求为一个功能)~登录页面~登录功能~登出功能二、登录页面1.接口设计1.1.接口说明类目                  说明请求方式                GETurl定义…

openwrt是嵌入式linux,非常方便的OpenWrt的嵌入式Linux开发环境

今天听中央经济广播电台说,今年有559万大学毕业生,大学生的就业形式严峻.我想那些精通Linux开发的毕业大学生们,估计一点也不用担心,因为他们已经不再是一颗大白菜了.最近在帮一个朋友把OpenWrt移植到一块单板上,有一些心得,分享给大家.OpenWrt是一个很好的学习Linux的平台,而且…

linux添加有效群组,Linux中的有效群组和初始群组

在Linux中,每个账号都可以加入多个群组,那用户登录后默认的用的是哪个群组呢?关于这个问题就要说说有效群组和初始群组了。在用户账号信息文件/etc/passwd中,那个由冒号分割的7个栏目中,第四个栏目是群组ID(GID)&#…

php多个表中查找数据_HeidiSQL 免费的可视化数据库管理工具

HeidiSQL是一款免费的软件,并且易于学习和使用。HeidiSQL让你从数据库内可视化的读写数据、结构体。它支持MariaDB、MySQL、Microsoft SQL、PostgreSQL等数据库。功能免费且开源内置中文在同个窗口连接多个服务支持以命令行形式连接服务连接支持SSH、SSL创建修改表、…

嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载

嵌入式Linux系统由三部分组成: uboot、kernel、根文件系统, 还是这张老图这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统那么什么是根呢?哈哈 其实根表示的就是第一个的意思下面贴张图看看整个根文件…