Oracle 故障实例 - 通过备份恢复到某时间点 故障恢复
一、环境和故障描述
1.数据库版本:oracle 11g , linux ;OA系统的后台数据库。
2. 同事在做正式机数据迁移到测试机时,不小心删除了正式机的数据。 导致大量生产数据丢失,系统故障。
3.万幸的是正式机每日都做了数据备份,同时归档日志保留了7天。
二、故障处理过程
1.停止前台OA系统服务,避免后续数据写入数据库,造成更多的错乱。
2.检查备份数据的完整性和归档日志。
3.行动计划:首先使用备份集还原到当天,再用归档日子还原到 故障的时间点。
三、参考内容
关于 oracle 日志:
Oracle数据库有两种日志:在线重做日志(ONLINE REDO LOGS)和归档日志(ARCHIVE LOGS)。归档日志是当在线重做日志满了之后,Oracle会将溢出的内容自动归档到指定的位置,这样可以保持在线重做日志的可用性,便于数据库的正常运行。
1.查看 数据库是否启用了归档模式, 如果返回ARCHIVELOG
,则表示数据库处于归档模式。
SQL> SELECT log_mode FROM v$database;LOG_MODE
------------
ARCHIVELOG
2.查看归档日志的存储位置: 通过参数 db_recovery_file_dest 找到位置,进一步找到日志文件,可以确定日志是否存在。
SQL> SHOW PARAMETER db_recovery_file_dest;NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 50G
SQL>
[root@oa archivelog]# pwd
/u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog
[root@oa archivelog]# ll
ܼ 48
drwxr-x--- 2 oracle oinstall 4096 05-30 01:08 2025_05_22
drwxr-x--- 2 oracle oinstall 4096 05-23 18:05 2025_05_23
drwxr-x--- 2 oracle oinstall 4096 05-24 23:40 2025_05_24
drwxr-x--- 2 oracle oinstall 4096 05-26 17:00 2025_05_26
drwxr-x--- 2 oracle oinstall 4096 05-27 23:00 2025_05_27
drwxr-x--- 2 oracle oinstall 4096 05-28 21:02 2025_05_28
drwxr-x--- 2 oracle oinstall 4096 05-29 22:02 2025_05_29
drwxr-x--- 2 oracle oinstall 4096 05-30 15:24 2025_05_30
drwxr-x--- 2 oracle oinstall 4096 05-31 03:01 2025_05_31
drwxr-x--- 2 oracle oinstall 4096 06-01 03:00 2025_06_01
drwxr-x--- 2 oracle oinstall 4096 06-02 03:00 2025_06_02
drwxr-x--- 2 oracle oinstall 4096 06-03 03:00 2025_06_03
[root@oa archivelog]# cd 2025_05_30
[root@oa 2025_05_30]# ls
o1_mf_1_2496_n3lj4y8k_.arc o1_mf_1_2497_n3lqbc9r_.arc
合并一下命令:ls -l $ORACLE_BASE/flash_recovery_area/$ORACLE_SID/archivelog/
ls -l $ORACLE_BASE/flash_recovery_area/$ORACLE_SID/archivelog/
drwxr-x--- 2 oracle oinstall 4096 05-30 01:08 2025_05_22
drwxr-x--- 2 oracle oinstall 4096 05-23 18:05 2025_05_23
drwxr-x--- 2 oracle oinstall 4096 05-24 23:40 2025_05_24
drwxr-x--- 2 oracle oinstall 4096 05-26 17:00 2025_05_26
drwxr-x--- 2 oracle oinstall 4096 05-27 23:00 2025_05_27
drwxr-x--- 2 oracle oinstall 4096 05-28 21:02 2025_05_28
drwxr-x--- 2 oracle oinstall 4096 05-29 22:02 2025_05_29
drwxr-x--- 2 oracle oinstall 4096 05-30 15:24 2025_05_30
drwxr-x--- 2 oracle oinstall 4096 05-31 03:01 2025_05_31
drwxr-x--- 2 oracle oinstall 4096 06-01 03:00 2025_06_01
drwxr-x--- 2 oracle oinstall 4096 06-02 03:00 2025_06_02
drwxr-x--- 2 oracle oinstall 4096 06-03 03:00 2025_06_03
也可以通过 sql 查表的方式,取到日志情况
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME, DELETED
FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;SEQUENCE# FIRST_TIME NEXT_TIME DEL
---------- ------------------ ------------------ ---1 30-MAY-25 31-MAY-25 NO2 31-MAY-25 01-JUN-25 NO3 01-JUN-25 02-JUN-25 NO4 02-JUN-25 03-JUN-25 NO2446 22-APR-25 23-APR-25 YES2447 23-APR-25 24-APR-25 YES2448 24-APR-25 24-APR-25 YES2449 24-APR-25 25-APR-25 YES2450 25-APR-25 26-APR-25 YES2451 26-APR-25 27-APR-25 YES2452 27-APR-25 27-APR-25 YES
最方便的是用 rman 工具来查看,直接可以看到文件列表
[oracle@oa ~]$ rman target /
RMAN>list archivelog all;
Key Thrd Seq S Low Time
------- ---- ------- - ---------
2518 1 2486 A 22-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_23/o1_mf_1_2486_n30l3s5w_.arc2519 1 2487 A 23-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_24/o1_mf_1_2487_n31kgf18_.arc2520 1 2488 A 24-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_24/o1_mf_1_2488_n33t3nz2_.arc2521 1 2489 A 24-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_26/o1_mf_1_2489_n36t5opb_.arc2522 1 2490 A 26-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_26/o1_mf_1_2490_n38cffny_.arc2523 1 2491 A 26-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_27/o1_mf_1_2491_n3b20c1k_.arc2524 1 2492 A 27-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_27/o1_mf_1_2492_n3cnvq0f_.arc2525 1 2493 A 27-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_28/o1_mf_1_2493_n3g2clx0_.arc2526 1 2494 A 28-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_29/o1_mf_1_2494_n3hs6z9h_.arc2527 1 2495 A 29-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_29/o1_mf_1_2495_n3jt7s16_.arc2528 1 2496 A 29-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_30/o1_mf_1_2496_n3lj4y8k_.arc2529 1 2497 A 30-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_30/o1_mf_1_2497_n3lqbc9r_.arc2530 1 1 A 30-MAY-25Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_31/o1_mf_1_1_n3n04kyr_.arc
redo logs VS. archive log
归档日志archive log是当数据库运行在归档模式下时,一个redo log file(group)写满后,由ARCn进程将重做日志的内容备份到归档日志文件下,然后这个redo log file(group)才能被下一次使用。
归档日志文件 存于 flash_recovery_area/sid/archivelog/ 目录。
redo log VS. undo log
redo log 记录所有操作,主要是用于数据恢复。 undo log 在事务提交前,记录事务处理的操作,当事务异常时,用于回滚事务。
flashback log VS. redo log
flashback log 是独立于 redo log 的另一套体系,用于闪回到某个操作块前的操作。 相对而言 redolog 适用性更广。
RMAN 备份和恢复
1.参考备份脚本
#file: /home/back.sh
#ByZhangKai
#change by xulong
#2017-1-17
#Revised by xin
#2021-12-27
#!/bin/bash#---------------------------------------------------
# please modify cron config file, ref following
# vim /etc/crontab
# add line :
# 0 1 * * 2-5 root sh /home/back.sh
#---------------------------------------------------
logfile=/home/backup/back_$(date +%Y%m%d_%H%M%S).logsu - root >> $logfile <<EOF
#stop web server
#echo stop ebridge server
#bash /usr/ebridge/stop.sh
echo stop weaver server
bash /usr/weaver/Resin4/bin/stopresin.sh#bash /usr/weaver/EMobile/stop.sh
EOF#stop oracle , backup db , restart db
su - oracle >>$logfile <<EOF
echo $(date +%Y%m%d_%H%M%S) -------rman start
rman target / << EOF_RMAN
shutdown immediate;
startup mount;
run{
allocate channel d1 type disk;
backup full database
include current controlfile
format '/home/backup/db_%d_%s_%p_%t_%T';
release channel d1;
}
delete noprompt archivelog all completed before 'sysdate-7'; #delete arch log before 7 days
shutdown immediate;
startup
exit;
EOF
echo $(date +%Y%m%d_%H%M%S) -------rman endsu - oracle >> $logfile <<EOF
echo $(date +%Y%m%d_%H%M%S) -------restart TNS start
lsnrctl stop
lsnrctl start
echo $(date +%Y%m%d_%H%M%S) -------restart TNS end
EOFsu - root >> $logfile <<EOF
#tar OA files
echo tar files of ecology and ebridge
tar cvf /home/backup/$(date +%Y%m%d%H%m%S).tar.gz /usr/weaver/ecology/*#copy files to backup server
echo copy files to backup server
mount -t cifs -o username=user,password='pwd' //xxx.xxx.xxx.xxx/d$/ECOLOGY_BACKUP /home/ECOLOGY_BACKUP/cp -R -v /home/backup/* /home/ECOLOGY_BACKUP/
cp -f /home/back.sh /home/ECOLOGY_BACKUP/
rm -rf /home/backup/*
umount /home/ECOLOGY_BACKUP/#start Web Serverecho start weaver web server
bash /usr/weaver/Resin4/bin/startresin.sh#echo start ebridge server
#bash /usr/ebridge/start.sh
#bash /usr/weaver/EMobile/start.shEOF
2.参考恢复脚本
恢复到某时点前
rman target /
restore database until time "to_date('2025-05-30 13:20:00','YYYY-MM-DD HH24:MI:SS')"
RECOVER DATABASE UNTIL TIME "to_date('2025-05-30 13:20:00','YYYY-MM-DD HH24:MI:SS')"
ALTER DATABASE OPEN RESETLOGS;
3.查看备份文件的位置(恢复时把备份集复制到对应位置,方便恢复)
[oracle@oa oracle]$ rman target /Recovery Manager: Release 11.2.0.1.0 - Production on Tue Jun 3 10:04:47 2025Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.connected to target database: ECOLOGY (DBID=4126113958)RMAN> list backup;using target database control file instead of recovery catalogList of Backup Sets
===================BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
3132 Full 9.39M DISK 00:00:01 10-DEC-24BP Key: 3133 Status: AVAILABLE Compressed: NO Tag: TAG20241210T010048Piece Name: /home/backup/db_ECOLOGY_3162_1_1187312844_20241210 《**********SPFILE Included: Modification time: 10-DEC-24SPFILE db_unique_name: ECOLOGY
4.查看错误语句执行时间点(造成故障的误删sql执行点)
[oracle@oa alert]$ ls -l $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/alert/
ܼ 22988
-rw-r----- 1 oracle oinstall 10485934 2024-09-03 log_13.xml
-rw-r----- 1 oracle oinstall 10485875 04-15 01:08 log_14.xml
-rw-r----- 1 oracle oinstall 2519822 06-03 03:00 log.xml[oracle@oa alert]$ vim log.xml------------------
<msg time='2025-05-30T13:21:36.969+08:00' <------------- 找到时间点org_id='oracle' comp_id='rdbms'msg_id='opiexe:2994:4222364190' client_id='' type='NOTIFICATION'group='admin_ddl' level='16' host_id='oa.hongshang.cn'host_addr='xxx.xxx.xx.xx' module='sqlplus@oa.xxxxxxxx.cn (TNS V1-V3)' pid='28673'><txt>drop tableSpace ecology including contents and datafiles <----------------</txt>
</msg>
<msg time='2025-05-30T13:22:38.194+08:00' org_id='oracle' comp_id='rdbms'
相关文章:
Oracle 故障实例 - 通过备份恢复到某时间点 故障恢复
一、环境和故障描述 1.数据库版本:oracle 11g , linux ;OA系统的后台数据库。 2. 同事在做正式机数据迁移到测试机时,不小心删除了正式机的数据。 导致大量生产数据丢失,系统故障。 3.万幸的是正式机每日都做了数据备份&#x…...
滑动智能降级:Glide优化加载性能的黑科技
简介 在移动应用开发中,图片加载性能直接关系到用户体验,尤其在列表快速滑动场景下,如何平衡流畅度与流量消耗成为开发者面临的核心挑战。本文将深入探讨Glide库的智能降级技术,通过滑动速度动态调整图片加载策略,实现流量节省35%、首屏加载速度提升40%的显著效果。我们将…...
【前端并发请求控制:必要性与实现策略】
前端并发请求控制:必要性与实现策略 一、引言 在现代 Web 开发中,处理大量异步请求是一个常见场景。虽然浏览器和服务器都有其并发限制机制,但前端实现并发控制仍然具有其独特的价值和必要性。本文将深入探讨这个话题。 二、现有的并发限制…...
LeetCode 139. 单词拆分(Word Break) - 动态规划深度解析
文章目录 问题描述动态规划解法解法核心思路完整代码实现关键代码解析1. 数据结构初始化2. 动态规划数组3. 核心循环逻辑4. 子串区间理解(关键)示例演算复杂度分析算法优化点总结本文详细解析LeetCode 139题"单词拆分"的动态规划解法,涵盖核心思路、代码实现、区间…...
@Prometheus动态配置管理-ConsulConfd
文章目录 动态配置管理 Consul Confd**一、目标****二、架构组件****三、环境准备****四、配置 Consul**1. 注册监控目标(服务发现)2. 存储告警规则(KV 存储) **五、配置 Confd**1. 监控目标模板配置2. 告警规则模板配置 **六、配…...
CentOS7 + JDK8 虚拟机安装与 Hadoop + Spark 集群搭建实践
前言 在大数据时代,Hadoop 和 Spark 是两种非常重要的分布式计算框架。本文将详细介绍如何在 CentOS7 JDK8 的虚拟机环境中搭建 Hadoop Spark 分布式集群,包括 Spark Standalone 和 Hadoop Spark on YARN 两种模式,并提供具体的代码示例。…...

从OSI到TCP/IP:网络协议的演变与作用
个人主页:chian-ocean 文章专栏-NET 从OSI到TCP/IP:网络协议的演变与作用 个人主页:chian-ocean文章专栏-NET 前言网络发展LANWAN 协议举个例子: 协议的产生背景 协议的标准化OSI模型参考OSI各个分层的作用各层次的功能简介 TCP/…...

Stream流性能分析及优雅使用
文章目录 摘要一、Stream原理解析1.1、Stream总概1.2、Stream运行机制1.2.1、创建结点1.2.1、搭建流水线1.2.3、启动流水线 1.3、ParallelStream 二、性能对比三、优雅使用3.1 Collectors.toMap()3.2 findFirst(),findAny()3.3 增删元素3.4 ParallelStream 四、总结…...
iOS 电子书听书功能的实现
在 iOS 应用中实现电子书听书(文本转语音)功能,可以通过系统提供的 AVFoundation 框架实现。以下是详细实现步骤和代码示例: 核心步骤: 导入框架创建语音合成器配置语音参数实现播放控制处理后台播放添加进度跟踪 完整…...

【和春笋一起学C++】(十七)C++函数新特性——内联函数和引用变量
C提供了新的函数特性,使之有别于C语言。主要包括: 内联函数;按引用传递变量;默认参数值;函数重载(多态);模版函数; 因篇幅限制,本文首先介绍内联函数和引用…...
GitHub 趋势日报 (2025年06月02日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 1339 prompt-eng-interactive-tutorial 1080 courses 624 onlook 596 system-desi…...
卫星的“太空陀螺”:反作用轮如何精准控制姿态?
卫星的“太空陀螺”:反作用轮如何精准控制姿态? 在距地面500公里的轨道上,一颗遥感卫星正以7.8km/s的速度飞越目标区域。此时星载计算机发出指令:“滚转15并对准目标点”。短短数秒后,数吨重的卫星如同被无形之手推动般…...

proteus新建工程
1 点击新建工程 2 输入项目名,选择工程文件夹 3 下一步 4 不创建pcb 5 直接下一步 6 点击完成 7 创建完毕...
缓存击穿 缓存穿透 缓存雪崩
缓存击穿 缓存穿透 缓存雪崩 在日常开发中,我们经常会在后端引入 Redis 缓存来减轻数据库压力、提高访问性能。本文将逐点介绍 Redis 缓存常见问题及解决策略。 缓存穿透 问题描述: 缓存穿透指的是客户端请求的数据,在缓存中和数据库中都不…...

RTC实时时钟DS1338Z-33/PT7C433833WEX国产替代FRTC1338S
FRTC1338S是NYFEA徕飞公司推出的一种高性能的实时时钟芯片,它采用了SOP8封装技术,这种技术因其紧凑的尺寸和出色的性能而被广泛应用于各类电子设备中。 FRTC1338S串行实时时钟(RTC)是一种低功耗的全二进制编码十进制(BCD)时钟/日历外加56字节的非易失性…...

Redis命令使用
Redis是以键值对进行数据存储的,添加数据和查找数据最常用的2个指令就是set和get。 set:set指令用来添加数据。把key和value存储进去。get:get指令用来查找相应的键所对应的值。根据key来取value。 首先,我们先进入到redis客户端…...

【免费数据】1980-2022年中国2384个站点的水质数据
水,是生命之源,关乎着地球上每一个生物的生存与发展。健康的水生生态系统维持着整个水生态的平衡与活力;更是确保人类能持续获得清洁水源的重要保障。水质数据在水质研究、海洋生物量测算以及生物多样性评估等诸多关键领域都扮演着举足轻重的…...
Java基础 Day28 完结篇
一、方法引用 对 Lambda 表达式的进一步简化 方法引用使用一对冒号 :: Tips:静态方法用类名加双冒号,非静态方法用对象名加双冒号 通过方法的名字来指向一个方法 参数可推导即可省略 可以使语言的构造更紧凑简洁,减少冗余代码 二、单元…...
小红薯商品搜索详情分析与实现
前言 小红书作为国内知名的社交电商平台,拥有丰富的商品数据和用户评价信息。对于数据分析师、产品经理或电商从业者来说,能够获取小红书的商品数据具有重要的商业价值。本文将详细介绍如何通过逆向工程实现小红书商品搜索API的调用。 免责声明:本文仅用于技术学习和研究目…...

Git 极简使用指南
Git 是一个强大的分布式版本控制系统,但入门只需要掌握几个核心概念和命令。本指南旨在帮助你快速上手,处理日常开发中最常见的 80% 的场景。 核心概念 仓库 (Repository / Repo): 你的项目文件夹,包含了项目的所有文件和完整的历史记录。…...

力扣刷题Day 69:搜索二维矩阵(74)
1.题目描述 2.思路 首先判断target是否有可能在矩阵的某一行里,没可能直接返回False,有可能就在这一行里二分查找。 3.代码(Python3) class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> boo…...
c#压缩与解压缩-SharpCompress
SharpCompress SharpCompress 是一个开源项目库,能够处理文件。c#库对于压缩已经有很多,可以随意选择,看了SharpCompress感觉比较简洁,还是介绍给大家。 项目地址: sharpcompress 项目使用 引入nuget包࿱…...
Neo4j 安全深度解析:原理、技术与最佳实践
在当今数据驱动的世界中,图数据库承载着关键的关系信息,其安全性至关重要。Neo4j 提供了一套多层次、纵深防御的安全体系。 Neo4j 的安全体系提供了从认证授权到数据加密、审计追溯的完整解决方案。安全不是单一功能而是一种持续状态,其有效…...

MySQL指令个人笔记
MySQL学习,SQL语言笔记 一、MySQL 1.1 启动、停止 启动 net start mysql83停止 net stop mysql831.2 连接、断开 连接 mysql -h localhost -P 3306 -u root -p断开 exit或者ctrlc 二、DDL 2.1 库管理 2.1.1 直接创建库 使用默认字符集和排序方式…...

2022年 国内税务年鉴PDF电子版Excel
2022年 国内税务年鉴PDF电子版Excelhttps://download.csdn.net/download/2401_84585615/89784658 https://download.csdn.net/download/2401_84585615/89784658 2022年国内税务年鉴是对中国税收政策、税制改革和税务管理实践的全面总结。这份年鉴详细记录了中国税收系统的整体状…...

基于Java的OPCDA采集中间件
1.软件功能及技术特点简介: 软件功能及技术特点简介: OPCDA是基于Java语言开发的OPC client(OPC客户端)跨平台中间件软件,他支持OPC SERVER的OPC DA1.0/2.0/3.0。OPCDA实时采集数据(包括实时数据、报警数…...
基于PyQt5的相机手动标定工具:原理、实现与应用
基于PyQt5的相机手动标定工具:原理、实现与应用 一、背景介绍二、功能详解与实现原理2.1 图像加载与预处理2.2 交互式透视调整2.3 透视变换数学原理2.4 图像拼接核心技术2.5 用户界面优化细节三、完整使用流程四、应用场景实例五、技术优势分析六、代码七、总结一、背景介绍 …...

vue2 项目中 npm run dev 运行98% after emitting CopyPlugin 卡死
今天在运行项目时,发现如下问题: 开始以为是node_modules依赖的问题,于是重新 npm install,重启项目后还是未解决。 在网上找了一圈发现有人说是 require引入图片地址没有写。在我的项目中排查没有这个问题,最后发现某…...

JavaScript 性能优化实战:从原理到框架的全栈优化指南
在 Web 应用复杂度指数级增长的今天,JavaScript 性能优化已成为衡量前端工程质量的核心指标。本文将结合现代浏览器引擎特性与一线大厂实践经验,构建从基础原理到框架定制的完整优化体系,助你打造高性能 Web 应用。 一、性能优化基础&#x…...

2025年- H61-Lc169--74.搜索二维矩阵(二分查找)--Java版
1.题目描述 2.思路 方法一: 定义其实坐标,右上角的元素(0,n-1)。进入while循环(注意边界条件,行数小于m,列数要>0)从右上角开始开始向左遍历(比当…...