返回顶部
首页 > 资讯 > 数据库 >利用延时备库找回被误删的数据
  • 407
分享到

利用延时备库找回被误删的数据

2024-04-02 19:04:59 407人浏览 薄情痞子
摘要

很多时候人为误操作会对oracle的数据造成影响,比如误删数据。当误操作发生时,通常有四个解决方法:   1.闪回数据库或闪回表  2.备份恢复  3.

很多时候人为误操作会对oracle的数据造成影响,比如误删数据。当误操作发生时,通常有四个解决方法:

  1.闪回数据库或闪回表

 2.备份恢复

 3.logminer挖掘redo

 4.使用延时库

前三种方法都不是很完美:

  闪回数据库影响较大,且事先需要开启库上的闪回。

 闪回表或闪回版本查询使用方便,但在繁忙的数据库中很容易快照过旧。

 备份恢复耗时长、影响大

 logminer挖掘日志耗时耗力


此时如果事先有搭建延时备库的话,则可以很容易的从备库得到误删的数据。以下进行演示。


主库:

sql> show parameter instance_name


NAME                                 TYPE        VALUE

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

instance_name                        string      BDDEV2

备库:

SQL> show parameter instance_name


NAME                                 TYPE        VALUE

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

instance_name                        string      BDTEST


现有表及数据如下:

SQL> select * from scott.tb_test;

        ID        AGE TM

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

         1          2 20181203 14:22:14

         2          3 20181203 14:22:14

         3          4 20181203 14:22:14

         4          5 20181203 14:22:14

         5          6 20181203 14:22:14

         6          7 20181203 14:22:14

         7          8 20181203 14:22:14

         8          9 20181203 14:22:14

         9         10 20181203 14:22:14

        10         11 20181203 14:22:14

10 rows selected.


此时备库是实时应用的:

SQL> SELECT * FROM V$DATAGUARD_STATS;

NAME                           VALUE                          UNIT                                     TIME_COMPUTED                  DATUM_TIME

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

transport lag                  +00 00:00:00                   day(2) to second(0) interval             12/03/2018 14:23:33            12/03/2018 14:23:33

apply lag                      +00 00:00:00                   day(2) to second(0) interval             12/03/2018 14:23:33            12/03/2018 14:23:33

apply finish time              +00 00:00:00.000               day(2) to second(3) interval             12/03/2018 14:23:33

estimated startup time         7                              second                                   12/03/2018 14:23:33


备库转为延时库,延时60分钟:

SQL> alter database recover managed standby database cancel;

Database altered.


SQL> alter database recover managed standby database disconnect from session delay 60;

Database altered.


主库修改记录:

SQL> update scott.tb_test set age = 100,tm = sysdate where id = 10;

1 row updated.


SQL> commit;

Commit complete.


SQL>  select * from scott.tb_test;

        ID        AGE TM

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

         1          2 20181203 14:22:14

         2          3 20181203 14:22:14

         3          4 20181203 14:22:14

         4          5 20181203 14:22:14

         5          6 20181203 14:22:14

         6          7 20181203 14:22:14

         7          8 20181203 14:22:14

         8          9 20181203 14:22:14

         9         10 20181203 14:22:14

        10        100 20181203 14:26:50

10 rows selected.

可看到,修改数据的时间为' 20181203 14:26:50 '。


此时删除表数据:

SQL> select sysdate from dual;

SYSDATE

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

20181203 14:28:18


SQL> truncate table scott.tb_test;

Table truncated.


SQL> alter system switch logfile;

System altered.


此时主库中数据已经删除,备库中数据还停留在主库修改数据之前:

SQL> select * from scott.tb_test;

        ID        AGE TM

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

         1          2 20181203 14:22:14

         2          3 20181203 14:22:14

         3          4 20181203 14:22:14

         4          5 20181203 14:22:14

         5          6 20181203 14:22:14

         6          7 20181203 14:22:14

         7          8 20181203 14:22:14

         8          9 20181203 14:22:14

         9         10 20181203 14:22:14

        10         11 20181203 14:22:14


如果我们要恢复数据到update之后、truncate之前,则要手动前滚备库到指定时间点:

--备库操作

重启备库到mount:

SQL> startup force mount;

ORACLE instance started.


Total System Global Area 2.1379E+10 bytes

Fixed Size                  2262656 bytes

Variable Size            2.0401E+10 bytes

Database Buffers          939524096 bytes

Redo Buffers               36073472 bytes

Database mounted.


手动前滚备库到指定时间点:

SQL> recover standby database until time '20181203 14:27:00';

ORA-00279: change 108456269 generated at 12/03/2018 14:26:50 needed for thread 1

ORA-00289: suggestion : /opt/app/oracle/arcHivelog_bdtest/1_248_987097214.dbf

ORA-00280: change 108456269 for thread 1 is in sequence #248


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

auto

Log applied.

Media recovery complete.


前滚完成,打开备库:

SQL> alter database open;

Database altered.


SQL> alter session set nls_date_fORMat='yyyymmdd hh34:mi:ss';

Session altered.


SQL> select * from scott.tb_test;

        ID        AGE TM

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

         1          2 20181203 14:22:14

         2          3 20181203 14:22:14

         3          4 20181203 14:22:14

         4          5 20181203 14:22:14

         5          6 20181203 14:22:14

         6          7 20181203 14:22:14

         7          8 20181203 14:22:14

         8          9 20181203 14:22:14

         9         10 20181203 14:22:14

        10        100 20181203 14:26:50

10 rows selected.


此时就得到了所需数据,只需把数据重新导入到主库中即可。


待处理完成后,重新打开备库的redo应用:

SQL> alter database recover managed standby database disconnect from session delay 60;

Database altered.

此时备库又变为了正常的延时库。


注意:

 1.备库DELAY时间指的是当主库日志归档后,再延时DELAY指定的时间应用日志,比如:设置DELAY参数为20分钟,10:00主库日志归档,则10:20备库才会应用此归档日志

 2.也可以在LOG_ARCHIVE_DEST_2指定DELAY参数达到同样的延时目的:

 ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=DEVSTBY LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DEVSTBY DELAY=60'

 3.备库不能进行实时应用,因为实时应用会使DELAY参数失效,备库变为ADG


您可能感兴趣的文档:

--结束END--

本文标题: 利用延时备库找回被误删的数据

本文链接: https://lsjlt.com/news/49800.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 利用延时备库找回被误删的数据
    很多时候人为误操作会对Oracle的数据造成影响,比如误删数据。当误操作发生时,通常有四个解决方法:   1.闪回数据库或闪回表  2.备份恢复  3....
    99+
    2024-04-02
  • 备库闪回到前一天找回误删数据
    因为开发在7月九号凌晨4点删除一条数据,现在交易出现问题,需要检查这条数据当时的状态,历史表没有存这个数据,现在使用备库闪回到删除之前的时间点,找回数据。当时操作没有留记录,所以只写操作过程。 1.查看支...
    99+
    2024-04-02
  • Linux下数据库文件被误删后怎么找回
    这篇文章主要讲解了“Linux下数据库文件被误删后怎么找回”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下数据库文件被误删后怎么找回”吧!Linu...
    99+
    2024-04-02
  • 阿里云数据库被删了怎么找回
    简介 阿里云数据库是一种可靠、安全、高性能的云数据库服务,但有时候我们可能会不小心删除了数据库中的数据。本文将介绍如何在阿里云数据库被删除后找回数据的方法。找回数据的方法1. 使用备份恢复数据阿里云数据库提供了自动备份功能,可以在一定时间内...
    99+
    2024-01-30
    阿里 删了 数据库
  • 使用lsof回恢复被误删的mysql数据库文件
    下文主要给大家带来使用lsof回恢复被误删的mysql数据库文件,希望这些内容能够带给大家实际用处,这也是我编辑使用lsof回恢复被误删的mysql数据库文件这篇文章的主要目的。好了,废话不多说,大家直接看...
    99+
    2024-04-02
  • 云主机误删数据库能不能找回
    云主机误删数据库可以找回:1、查看数据库的恢复模式状态,如果恢复模式是完整则可以恢复被删除的数据库;2、在操作数据库删除恢复时,要确保此时只有一人在操作数据库;3、再创建数据库时要切记进行备份;4、如果备份不了,启用代码杀掉进程,再重新备份...
    99+
    2024-04-02
  • oracle怎么找回数据库删除的数据
    要找回数据库中删除的数据,可以通过以下几种方法: 使用备份:如果数据库定期进行备份,可以恢复被删除的数据。找到最近的备份文件,将...
    99+
    2024-04-16
    oracle
  • 利用MySQL的binlog恢复误删的数据库
    1 查看当前数据库内容并备份数据库 查看数据库信息: 备份数据库: [root@localhost ~]# mysqldump -u root -p t > /mnt/t.sqlEnter pass...
    99+
    2023-09-23
    数据库 mysql sql
  • MySQL数据库误删回滚的解决
    某次一不小心,用了delete from xxx 删除了几条重要数据,在网上找了很多方法,但都比较零散,打算记录本次数据找回的过程。大致分为以下几步 1、查看binlog是否开启 # log_bin是ON,就说...
    99+
    2022-06-30
    MySQL数据库误删回滚 MySQL 误删回滚
  • mysql5.7.33误删除ibdata文件找回数据的方法
    一、场景说明: 很多时候因为 MySQL 数据库不能启动而造成数据无法访问,但应用的数据通常没有丢失,只是系统表空间等其它文件损坏了,或者遇到 MySQL 的 bug。 这个时候如果没有备份,很多人就以为数据丢失...
    99+
    2022-05-14
    mysql误删ibdata mysql ibdata找回 mysql ibdata恢复
  • 如何利用MySQL的binlog恢复误删数据库详解
    目录1 查看当前数据库内容并备份数据库 2 开启bin_log功能 3 模拟误操作(插入3条数据,删除数据库) 4 数据恢复 5 总结 1 查看当前数据库内容并备份数据库 查看数据...
    99+
    2024-04-02
  • 防删库实用指南 | 只需一步,快速召回被误删的表
    作者黄忠,阿里云数据库技术专家数据库的一些非常不错的企业级功能都是“养兵千日,用兵一时”,比如Oracle 10g中的回收站(Recycle Bin)功能,可以在特殊情况下发挥特种兵的功能,比如当你删除一个...
    99+
    2024-04-02
  • 阿里云数据库删除的DB如何找回来?
    本文将为您详细介绍如何在阿里云上找回被误删除的数据库。 如果你是阿里云数据库的用户,可能会遇到过误删除DB的情况。那么,如何找回呢?以下是一些步骤和注意事项,希望对你有所帮助。一、找回方法登录阿里云管理控制台,进入“数据库服务”页面。点击“...
    99+
    2023-12-09
    阿里 数据库 DB
  • Linux系统利用crontab定时备份Mysql数据库方法
    利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。 1、创建保存备份文件的路径/mysqldata #mkdir /mysqldata 2、创...
    99+
    2024-04-02
  • 利用binlog2sql快速闪回误删除数据 - 别拿豆包不当干粮
    各位兄弟们,好久不见了!最近一直忙于新书的创作,所以一直没有时间更新博客。不知道这段时间大家学习得怎么样,希望大家通过看我的文章给大家带来帮助。老张我也花费了大量时间录制一些数据库的视频课程,大家要是感兴趣...
    99+
    2024-04-02
  • c#如何利用定时器自动备份数据库详解
    目录引用dll 静态类 定时器启动 备份代码 总结引用dll mysql.data.dll是MySQL数据库中一款必备的驱动文件,主要用于.net编程和MySQL数据库的连接,包含...
    99+
    2024-04-02
  • 利用阿里云备份数据库的方法
    随着信息化进程的加速,数据库已经成为企业信息化的重要组成部分。但是,数据库的稳定性、可靠性和安全性至关重要。为了防止数据丢失或损坏,备份数据库是必不可少的。本文将详细介绍如何利用阿里云备份数据库的方法。 一、阿里云备份数据库的概述阿里云备份...
    99+
    2023-11-14
    阿里 备份 数据库
  • 删库跑路?使用xtraback备份MySQL数据库的方法
    一、mysqldump备份方式是采用逻辑备份。最大的缺陷就是备份和恢复的速度都慢,对于一个50G的数据库而言,这个速度还是可以接受的,但是如果数据库非常大,那在使用mysqdump备份就不是太合适了。。 ...
    99+
    2024-04-02
  • mysql利用mysqlbinlog命令恢复误删除数据的实现
    实验环境: MYSQL 5.7.22  开启二进志日志 日志格式MIXED 实验过程: 执行:FLUSH LOGS; master-bin.000014 文件就是新生成的文件 刷新日志是为了实验内容更直...
    99+
    2022-05-23
    mysql mysqlbinlog恢复误删除 mysql mysqlbinlog 误删除
  • 高可用数据库主从复制延时的解决方法
    这篇文章将为大家详细讲解有关高可用数据库主从复制延时的解决方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。MySQL主从复制的延时一直是业界困扰已久的问题...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作