Oracle 故障实例 - 通过备份恢复到某时间点 故障恢复

news2025/6/6 17:10:25

一、环境和故障描述

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          NO
         2 31-MAY-25          01-JUN-25          NO
         3 01-JUN-25          02-JUN-25          NO
         4 02-JUN-25          03-JUN-25          NO
      2446 22-APR-25          23-APR-25          YES
      2447 23-APR-25          24-APR-25          YES
      2448 24-APR-25          24-APR-25          YES
      2449 24-APR-25          25-APR-25          YES
      2450 25-APR-25          26-APR-25          YES
      2451 26-APR-25          27-APR-25          YES
      2452 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-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_23/o1_mf_1_2486_n30l3s5w_.arc

2519    1    2487    A 23-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_24/o1_mf_1_2487_n31kgf18_.arc

2520    1    2488    A 24-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_24/o1_mf_1_2488_n33t3nz2_.arc

2521    1    2489    A 24-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_26/o1_mf_1_2489_n36t5opb_.arc

2522    1    2490    A 26-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_26/o1_mf_1_2490_n38cffny_.arc

2523    1    2491    A 26-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_27/o1_mf_1_2491_n3b20c1k_.arc

2524    1    2492    A 27-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_27/o1_mf_1_2492_n3cnvq0f_.arc

2525    1    2493    A 27-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_28/o1_mf_1_2493_n3g2clx0_.arc

2526    1    2494    A 28-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_29/o1_mf_1_2494_n3hs6z9h_.arc

2527    1    2495    A 29-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_29/o1_mf_1_2495_n3jt7s16_.arc

2528    1    2496    A 29-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_30/o1_mf_1_2496_n3lj4y8k_.arc

2529    1    2497    A 30-MAY-25
        Name: /u01/app/oracle/flash_recovery_area/ECOLOGY/archivelog/2025_05_30/o1_mf_1_2497_n3lqbc9r_.arc

2530    1    1       A 30-MAY-25
        Name: /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).log

su - 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 end

su - 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
EOF

su - 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 Server

echo 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.sh

EOF

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 2025

Copyright (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 catalog

List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
3132    Full    9.39M      DISK        00:00:01     10-DEC-24
        BP Key: 3133   Status: AVAILABLE  Compressed: NO  Tag: TAG20241210T010048
        Piece Name: /home/backup/db_ECOLOGY_3162_1_1187312844_20241210       《**********
  SPFILE Included: Modification time: 10-DEC-24
  SPFILE 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'

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

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

相关文章

从OSI到TCP/IP:网络协议的演变与作用

个人主页&#xff1a;chian-ocean 文章专栏-NET 从OSI到TCP/IP&#xff1a;网络协议的演变与作用 个人主页&#xff1a;chian-ocean文章专栏-NET 前言网络发展LANWAN 协议举个例子&#xff1a; 协议的产生背景 协议的标准化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()&#xff0c;findAny()3.3 增删元素3.4 ParallelStream 四、总结…

【和春笋一起学C++】(十七)C++函数新特性——内联函数和引用变量

C提供了新的函数特性&#xff0c;使之有别于C语言。主要包括&#xff1a; 内联函数&#xff1b;按引用传递变量&#xff1b;默认参数值&#xff1b;函数重载&#xff08;多态&#xff09;&#xff1b;模版函数&#xff1b; 因篇幅限制&#xff0c;本文首先介绍内联函数和引用…

proteus新建工程

1 点击新建工程 2 输入项目名&#xff0c;选择工程文件夹 3 下一步 4 不创建pcb 5 直接下一步 6 点击完成 7 创建完毕

RTC实时时钟DS1338Z-33/PT7C433833WEX国产替代FRTC1338S

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

Redis命令使用

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

【免费数据】1980-2022年中国2384个站点的水质数据

水&#xff0c;是生命之源&#xff0c;关乎着地球上每一个生物的生存与发展。健康的水生生态系统维持着整个水生态的平衡与活力&#xff1b;更是确保人类能持续获得清洁水源的重要保障。水质数据在水质研究、海洋生物量测算以及生物多样性评估等诸多关键领域都扮演着举足轻重的…

Git 极简使用指南

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

力扣刷题Day 69:搜索二维矩阵(74)

1.题目描述 2.思路 首先判断target是否有可能在矩阵的某一行里&#xff0c;没可能直接返回False&#xff0c;有可能就在这一行里二分查找。 3.代码&#xff08;Python3&#xff09; class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> boo…

MySQL指令个人笔记

MySQL学习&#xff0c;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 直接创建库 使用默认字符集和排序方式&#xf…

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.软件功能及技术特点简介&#xff1a; 软件功能及技术特点简介&#xff1a; OPCDA是基于Java语言开发的OPC client&#xff08;OPC客户端&#xff09;跨平台中间件软件&#xff0c;他支持OPC SERVER的OPC DA1.0/2.0/3.0。OPCDA实时采集数据&#xff08;包括实时数据、报警数…

vue2 项目中 npm run dev 运行98% after emitting CopyPlugin 卡死

今天在运行项目时&#xff0c;发现如下问题&#xff1a; 开始以为是node_modules依赖的问题&#xff0c;于是重新 npm install&#xff0c;重启项目后还是未解决。 在网上找了一圈发现有人说是 require引入图片地址没有写。在我的项目中排查没有这个问题&#xff0c;最后发现某…

JavaScript 性能优化实战:从原理到框架的全栈优化指南

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

2025年- H61-Lc169--74.搜索二维矩阵(二分查找)--Java版

1.题目描述 2.思路 方法一&#xff1a; 定义其实坐标&#xff0c;右上角的元素&#xff08;0&#xff0c;n-1&#xff09;。进入while循环&#xff08;注意边界条件&#xff0c;行数小于m&#xff0c;列数要&#xff1e;0&#xff09;从右上角开始开始向左遍历&#xff08;比当…

【黄金评论】美元走强压制金价:基于NLP政策因子与ARIMA-GARCH的联动效应解析

一、基本面&#xff1a;多因子模型解析黄金承压逻辑 1. 政策冲击因子驱动美元强势 通过NLP模型对关税政策文本进行情感分析&#xff0c;构建政策不确定性指数&#xff08;PUI&#xff09;达89.3&#xff0c;触发美元避险需求溢价。DSGE模型模拟显示&#xff0c;钢铁关税上调至…

Flink进阶之路:解锁大数据处理新境界

目录 一、Flink 基础回顾 二、Flink 进阶知识深入 2.1 数据类型与序列化 2.2 双流 Join 操作 2.3 复杂事件处理&#xff08;CEP&#xff09; 2.4 状态管理与优化 三、Flink 在实际场景中的应用 3.1 实时智能推荐 3.2 实时欺诈检测 3.3 实时数仓与 ETL 四、Flink 性能…

【论文阅读】Dolphin: Document Image Parsing via Heterogeneous Anchor Prompting

Paper&#xff1a;https://arxiv.org/abs/2505.14059 Source code: https://github.com/bytedance/Dolphin 作者机构&#xff1a;字节跳动 背景 业务场景 企业数据大多数都以文本、图片、扫描件、电子表格、在线文档、邮件等文档的形式存在&#xff0c;例如&#xff1a;PDF文…

谷歌地图免费下载手机版

软件标签: 谷歌地图 谷歌卫星高清地图 下载链接&#xff1a;夸克网盘分享 手机地图 谷歌地图免费下载(google maps)是谷歌公司打造的手机高清电子地图。2024谷歌地图官方中文版能够直观的表达出世界各地的地点&#xff0c;在地图中能够清晰的了解到自身的定位&#xff0c;让…

DeepSeek 赋能金融衍生品:定价与风险管理的智能革命

目录 一、引言1.1 金融衍生品市场发展现状1.2 DeepSeek 的技术特点和优势1.3 研究目的和意义 二、金融衍生品定价与风险管理基础2.1 金融衍生品定价常用方法2.2 金融风险管理主要策略 三、DeepSeek 在金融衍生品定价中的应用3.1 DeepSeek 助力定价模型构建3.2 案例分析&#xf…