99%的人不知道,Oracle resetlogs强制开库需要推进SCN?

news2024/11/20 13:28:35

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

    • 📣 1.故障现象
    • 📣 2.故障处理
      • ✨ 2.1 清理在线日志
      • ✨ 2.2 修改隐藏参数
      • ✨ 2.3 控制文件备份
      • ✨ 2.4 resetlogs开库
      • ✨ 2.5 重建UNDO
    • 📣 3.恢复后确认
    • 📣 4.总结


有些时侯可能你的库处于非归档的模式下,而你的联机重做日志又currupted,你的数据文件不能完成完全的恢复,这里小编为大家介绍一个oracle的一个隐藏参数_allow_resetlogs_corruption,让数据库重生.

📣 1.故障现象

磁盘爆满,业务人员误删除在线日志,导致无法开库,并且没有归档
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: ‘/u01/app/oracle/oradata/ORCL/redo01.log’
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7

📣 2.故障处理

1、allow_resetlogs_corruptions参数设置启动到mount状态
2、alter database backup controlfile to trace生成控制文件备份(后续可能要使用)
3、recover database until cancel(选择cancel不需要恢复)
4、alter database open resetlogs
5、如果上述报出ora-00600 2662、2663错误,需要推进scn
6、启动数据库mount状态,推进scn
7、alter database open,如果提示依然需要恢复,
8、重复3操作
9、再进行scn推进
10、推进成功后最后alter database open resetlogs启动数据库

✨ 2.1 清理在线日志

SQL> set linesize 300
SQL> select group#,sequence#,archived,status from v$log;
    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1          7 NO  CURRENT
         3          6 NO  INACTIVE
         2          5 NO  INACTIVE

-非归档模式,清理非当前日志
alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 3;

SQL> select group#,sequence#,archived,status from v$log;
    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1          7 NO  CURRENT
         3          0 NO  UNUSED
         2          0 NO  UNUSED

✨ 2.2 修改隐藏参数

alter system set “_allow_resetlogs_corruption”=true scope=spfile;
之后重启数据库到mount状态

SQL> show parameter _allow_resetlogs_corruption
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_allow_resetlogs_corruption          boolean     TRUE

✨ 2.3 控制文件备份

指定trace文件的生成路径
SQL> alter database backup controlfile
to trace as ‘/tmp/controlfile.trc’;

✨ 2.4 resetlogs开库

RMAN> recover database until cancel;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "cancel": expecting one of: "available, scn, sequence, time"
RMAN-01007: at line 1 column 24 file: standard input

发现以上不允许使用cancel,那么基于时间点恢复
recover database until time "to_date('2024-03-07 11:00:00','YYYY-MM-DD HH24:MI:SS')";

Starting recover at 08-MAR-24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=38 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/08/2024 00:03:59
RMAN-06555: datafile 1 must be restored from backup created before 07-MAR-24

继续恢复
RMAN> recover database;

Starting recover at 08-MAR-24
using channel ORA_DISK_1

starting media recovery

RMAN-08187: warning: media recovery until SCN 2187454 complete
Finished recover at 08-MAR-24
RMAN> alter database open resetlogs;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00601: fatal error in recovery manager
RMAN-03004: fatal error during execution of command
ORA-01092: ORACLE instance terminated. Disconnection forced
RMAN-03002: failure of sql statement command at 03/08/2024 00:11:38
ORA-00603: ORACLE server session terminated by fatal error
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [kcbzib_kcrsds_1], [], [], [], [], [], [], [], [], [], [], []
Process ID: 8041
Session ID: 35 Serial number: 38091

如果上述报出ora-00600
1.设置隐含参数_allow_error_simulation  = TRUE
alter system set "_allow_error_simulation"=true scope=spfile;

SQL> startup force
ORACLE instance started.

Total System Global Area 1191181696 bytes
Fixed Size                  8895872 bytes
Variable Size             771751936 bytes
Database Buffers          402653184 bytes
Redo Buffers                7880704 bytes
Database mounted.
ORA-00603: ORACLE server session terminated by fatal error
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00600: internal error code, arguments: [4193], [176], [183], [], [], [],
[], [], [], [], [], []
Process ID: 9078
Session ID: 33 Serial number: 29676


2.undo 4193、4194回滚段错误,
可以先undo手动管理undo_management,启动数据库open;

此时需要推进scn
alter system set undo_management = 'MANUAL' scope=spfile;
SQL> alter session set events '10015 trace name adjust_scn level 10';

3.重新启库
SQL> startup force;  
ORACLE instance started.

Total System Global Area 1191181696 bytes
Fixed Size                  8895872 bytes
Variable Size             771751936 bytes
Database Buffers          402653184 bytes
Redo Buffers                7880704 bytes
Database mounted.
Database opened.

✨ 2.5 重建UNDO

SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      MANUAL
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1

–删除原有UNDO
drop tablespace UNDOTBS1 including contents and datafiles;

–重新创建UNDO
create undo tablespace UNDOTBS1 datafile ‘/u01/app/oracle/oradata/ORCL/undotbs01.dbf’ size 1G;

–恢复参数文件重启库
alter system set undo_management=‘auto’ scope=spfile;
alter system reset “_allow_resetlogs_corruption” scope=spfile;
alter system reset “_allow_error_simulation” scope=spfile;
SQL> startup force;

📣 3.恢复后确认

SQL>  set linesize 300
SQL> select group#,sequence#,archived,status from v$log;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1          4 NO  CURRENT
         2          2 NO  INACTIVE
         3          3 NO  INACTIVE

📣 4.总结

需要使用open resetlogs来强制打开数据库的恢复:
1、对于open resetlogs时数据文件中有不一致数据的情况,可以设置
_allow_resetlogs_corruption=TRUE
2、如果出现ORA-01555错误,导致数据库无法open,可以设置
_CORRUPTED_ROLLBACK_SEGMENTS
_OFFLINE_ROLLBACK_SEGMENTS
undo_management = ‘MANUAL’
3、出现ORA-600[2662]错误时,先通过多次重启open的方法来观察Current SCN BASE增长速度。
如果Current SCN BASE和Current SCN BASE相差不远,重启几次数据库就可以打开。
4、如果Current SCN BASE和Current SCN BASE相差很远需要推SCN
alter session set events ‘10015 trace name adjust_scn level 10’;并且设置隐含参数_allow_error_simulation = TRUE才能使10015事件生效
alter system set “_minimum_giga_scn”=n; SCN向前推进到n10241024*1024,只有Current SCN和dependent SCN相差nG时这个参数才起效,否则无效
alter system set _smu_debug_mode= 268435456,增长SCN WRAP,该参数需要和_allow_error_simulation=true同时使用
oradebug poke修改scn
gdb修改scn
bbed修改数据文件对应的数据块scn
5、如果SCN号一致以后报错ORA-600[6006],ORA-600[4137]的话,需要添加参数
event=“10513 trace name context forever,level 2”
db_block_checking=false
6、出现ORA-600[4193][4194]错误时,尝试设置undo手动管理
7、对于open resetlogs打开以后的数据库,最好将业务用户导出以后重建数据库,以防止数据库出现不可预知的错误。ORACLE官方建议是open resetlogs以后需要重建数据库

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

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

相关文章

IDEA2023创建SpringMVC项目

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 开发环境篇 ✨特色专栏: M…

1-32 异常

一 什么是异常? 1.含义:异与正常状态的显示,控制台显示的结果和预期的结果不一致 2.例如: int[] nums new int[2]; System.out.println(nums[2]); --抛出异常 二 异常分类 1.检测性异常:又称 非运行时异常,一般编写代码过程中编辑器直接报错 2.非检测性异常(常用):又称为…

[StartingPoint][Tier0]Preignition

Task 1 Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (ii) dir busting, (iii) hash cracking. (目录暴力破解是一种用于检查 Web 服务器上的大…

【Python使用】嘿马头条完整开发md笔记第4篇:数据库,1 方案选择【附代码文档】

嘿马头条项目从到完整开发笔记总结完整教程(附代码资料)主要内容讲述:课程简介,ToutiaoWeb虚拟机使用说明1 产品介绍,2 原型图与UI图,3 技术架构,4 开发,1 需求,2 注意事项。数据库,理解ORM1 简介,2 安装,3 数据库连接…

MPLS基本转发过程,隧道特性、对TTL的处理、BGP路由黑洞

MPLS基本转发过程,隧道特性 标签操作类型包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop),它们是标签转发的基本动作。 倒数第二跳弹出特性PHP(Penultimate Hop Popp…

并查集python实现及题目练习

文章目录 1. 并查集概念1.1 理解并查集:简介与应用场景1.2 Python 实现并查集及优化策略1.3 扁平化栈实现1.4 分析并查集的时间复杂度 2. 情侣牵手3. 相似字符串4. 岛屿数量 如果想了解并查集基础推荐去看左程云大神的算法讲解,非常不错,b站和…

InterlliJ Debug方式启动 method breakpoints may dramatically show down debugging

使用idea在DEBUG的时候出现Method breakpoints may dramatically slow down debugging, 如图: 根据语义可能是断点打在方法上面了,导致在某个断点卡住了。 重启服务器和重启idea已然无解。 打开Breakpoints面板看看,(快捷键&…

递归实现排列型枚举(acwing)

题目描述: 把 1∼n 这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。 输入格式: 一个整数 n。 输出格式: 按照从小到大的顺序输出所有方案,每行 1 个。 首先,同一行相邻两个数用一个空格隔开…

mac、windows 电脑安装使用多个版本的node

我们为啥要安装多个不同版本的node? 开发旧项目时,使用低版本Nodejs。开发新项目时,需使用高版本Node.js。可使用n同时安装多个版本Node.js,并切换到指定版本Node.js。 mac电脑安装 一、全局安装 npm install -g n 二、mac电脑…

淘宝优惠券领取软件叫什么?

草柴返利APP是一款淘宝优惠券领取软件。用户可以通过草柴淘宝优惠券领取软件轻松查找领取淘宝大额隐藏优惠券,领取成功后再购物可享受券后价优惠。同时,通过草柴APP领券购买成功,确认收货后再回到草柴APP提取购物返利,享受双重省钱…

idea maven 打包 内存溢出 报 GC overhead limit exceeded -> [Help 1]

idea 使用maven打包 报GC overhead limit exceeded -> [Help 1] 解决方法: 打开settings -> 点开如同所示 将 vm Options 参数 设为 -Xmx8g

记第一次eudsrc拿到RCE(下)

目录 前言 个人介绍 挖洞公式 漏洞介绍 信息泄露漏洞 任意文件读取漏洞 远程命令执行(RCE)漏洞 漏洞详情 漏洞点1 漏洞点2 漏洞点3 修复建议 总结 前言 免责声明 以下漏洞均已经上报漏洞平台。请勿利用文章内的相关技术从事非法测试。若因…

Autosar BswM 模式管理

EcuMs管理ECU上下电状态,BswM管理模式,协同工作。当使用EcuM - Fixed时,它将向BswM指示当前ECU状态 有了BswM,从图可以更加直观看出,BswM管理各个模块,每个模块独立,降低耦合。 BswM 的主要功能包括: 模式管理:BswM 可以管理和控制 ECU 的不同模式,例如正常模式、备…

AJAX 原理

一、AJAX原理 - XMLHttpRequest 定义: 关系:axios 内部采用 XMLHttpRequest 与服务器交互。 好处:掌握使用 XHR 与服务器进行数据交互,了解 axios 内部原理。 1.1 使用 XMLHttpRequest: 步骤: 1. 创建 XM…

免注册,ChatGPT可即时访问了!

AI又有啥进展?一起看看吧 Apple进军个人家用机器人 Apple在放弃自动驾驶汽车项目并推出混合现实头显后,正在进军个人机器人领域,处于开发家用环境机器人的早期阶段 报告中提到了两种可能的机器人设计。一种是移动机器人,可以跟…

【机器学习300问】60、图像分类任务中,训练数据不足会带来什么问题?如何缓解图像数据不足带来的问题?

在机器学习中,绝大部分模型都需要大量的数据进行训练和学习(包括有监督学习和无监督学习),然而在实际应用中经常会遇到训练数据不足的问题。就比如图像分类这样的计算机视觉任务,确实依赖于大规模且多样化的训练数据以…

Java笔试总结

. 操作系统中关于竞争和死锁的关系下面描述正确的是? A 竞争一定会导致死锁 B 死锁一定由竞争引起 C 竞争可能引起死锁 D 预防死锁可以防止竞争 答案: C 进程的控制信息和描述信息存放在()。 A JCB B PCB C AFT D SFT 答案: B 当系统发生抖动(thrash…

企业数据资产入表的基本原则、参与主体和一般实现路线

目录 引言 一、企业数据资产入表的基本原则 1、准确性原则 2、一致性原则 3、安全性原则 4、可扩展性原则 5、合法合规原则 6、谨慎性原则 7、商业秘密保护原则 二、企业数据资产入表的参与主体 1、企业内部参与部门 2、企业外部参与机构 三、企业数据资产入表的一…

瑞_Redis_商户查询缓存_添加Redis缓存缓存更新策略

文章目录 项目介绍1 短信登录2 商户查询缓存2.1 什么是缓存2.1.1 缓存的应用场景2.1.2 为什么要使用缓存2.1.3 Web应用中缓存的作用2.1.4 Web应用中缓存的成本 2.2 添加Redis缓存2.2.1 背景2.2.2 缓存模型和思路2.2.3 代码实现2.2.4 测试附:IDEA控制台输出自动换行设…

阿里云2核2G和2核4G轻量应用服务器优惠价格表,2024年最新报价

阿里云轻量应用服务器2核2G和2核4G配置优惠价格表,轻量2核2G3M带宽61元一年,轻量2核4G4M带宽165元1年,均不限制月流量,阿里云活动链接 aliyunfuwuqi.com/go/aliyun 活动打开如下图: 阿里云轻量应用服务器价格 61元/年…