• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > Oracle数据库数据丢失恢复的几种方法总结

Oracle数据库数据丢失恢复的几种方法总结

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了oracle数据库数据类型,oracle数据库导出数据,oracle数据库删除数据,oracle数据库导入数据,oracle数据库插入数据等相关知识,希望本文的分享对您有所帮助

根据oracle数据库的特点和提供的工具,主要方法有以下几种方法:

  1.      利用逻辑备份使用import工具丢失数据的表
  2.      利用物理备份来通过还原数据文件并进行不完全恢复
  3.      利用dbms_logmnr包从redo log文件中恢复
  4.      利用flashback特性恢复数据

前提

为了方便使用方法的介绍,上述恢复方法都将基于以下场景进行:系统管理员在前一天晚上11点用export对数据库做了全库逻辑备份,然后对所有数据文件进行了热备份。第二天上午10点,系统管理员在修改表TFUNDASSET的数据时,由于修改语句的条件写错了,导致一批记录(几千条)的ztm字段被修改成了错误的值,而且已经提交。这个表是资产表,相对而言数据变化不频繁。

一、利用逻辑备份使用import工具恢复丢失的数据

export/import是oracle提供的用于对数据库进行逻辑备份的工具。该工具适用于备份那些数据量不大、业务量不多的数据库系统。因为如果在前一天晚上11点用export做了逻辑备份,那么当今天上午10点数据库意外崩溃时,从备份起到数据库崩溃的这段时间里的数据修改操作(包括DDL和DML)都会丢失。如果丢失数据内的表上的数据是相对比较稳定,也就是说该表上基本没有DML操作,例如标准代码表、分区表里的历史数据,那么采用import来导入该表可以比较完整的恢复数据。如果该表是经常变化的业务表,那么这些丢失的数据只能根据业务情况从纸质记录恢复,或者其他途径恢复。

▲示例如下:这个表是一个资产表。相对来说,今天系统运行中修改的数据较少,丢失的数据量可以承受或者可以从别的途径恢复。那就可以用import来恢复。

方法一:

1、把这个表的数据备份到另一个表:

2、删除该表的记录:

3、执行下面的命令:

这个命令中在关键字tables中指定需要导入的表名字,ignore=y表示忽略表已经存在的错误。

4、导入结束后,检查表中的记录,并用适当的方法恢复当天的修改。

方法二:

1、 把需要恢复的表导入到另一个用户下面:

2、检查数据以后,把原表记录删除:

3、然后从另一用户表中插入回去:

4、 数据量比较大时可以采用如下方法:

二、利用物理备份来通过还原数据文件并进行不完全恢复

如果数据库运行在归档模式下,那么可以通过使用以前的数据文件备份进行还原,然后利用归档日志进行前滚,直到回滚到错误操作的时间点前,然后重置日志文件打开数据库。

可以通过下列方法确认是否是运行在归档模式:

如果是如上所示,那么就是运行在归档模式了。

▲假定在前一天晚上11点做了全库物理备份,那么可以考虑如下恢复:

1、关闭数据库:

由于数据库的不完全恢复必须在一个关闭的数据库上实施,利用一个旧的数据库的备份还原,然后用日志根据需要逐步前滚,而不能还原一个新的备份,再回退到某个时间点。

通知各客户端数据库将关闭,然后发出:

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

2、确定错误操作的时间:

可以根据操作员的估计来确定不完全恢复需要前滚停止的时间,也可以利用LogMiner来分析日志文件(这个工具将在后面介绍),找出错误操作的准确时间。

3、还原数据文件:

先对当前的数据库文件进行备份,然后再用以前的最近一次备份覆盖现有数据文件。注意:不覆盖现有的控制文件。

4、基于时间点恢复,启动数据库到装配状态:

这样数据库就恢复到了2015年10月20日的9点58分零秒。

然后再利用业务资料补充这段时间内的数据。

三、利用dbms_logmnr包从log文件中恢复

这个包是由Oracle提供,与dbms_logmnr_d包配合使用可以方便地分析联机日志文件和归档日志文件,从这些日志文件中提取出所有对数据库的更改操作。

在使用这个包之前,需要先做一些设置和修改:

1、打开initorcl.ora,修改初始化参数utl_file_dir,设置dbms_logmnr_d包将要使用的数据字典文件的放置目录。

然后重启数据库使参数生效。

2、以sys用户连接到数据库执行dbmslmd.sql脚本重建dbms_logmnr_d这个包。

应用Logminer分析重做日志文件的操作主要有以下步骤:

      ● 使用dbms_logmnr_d里的存储过程build创建一个外部数据字典文件;

      ● 使用dbms_logmnr里的存储过程add_logfile添加要分析的日志文件;

      ● 使用dbms_logmnr里的存储过程start_logmnr启动分析;

      ● 查询与dbms_logmnr相关的几个视图来获取日志文件内容;

      ● 使用dbms_logmnr里的存储过程end_logmnr结束分析。

▲下面详细讲述使用的过程

1、使用dbms_logmnr_d里的存储过程build创建一个外部数据字典文件:

2、使用dbms_logmnr里的存储过程add_logfile添加要分析的日志文件到待分析文件列表:

如果没有运行在归档模式,那么由于重做日志文件的循环使用可能导致日志文件被覆盖而无法获取到所要寻找的恢复条目。如果运行在归档模式,则可以通过查看$ORACLE_HOME\admin\orcl\bdump目录下的alert_orcl.log里日志文件归档的时间和错误操作的时间来确定加入哪些归档日志文件到待分析的文件列表中去。

注意:执行以上过程时logfilename参数需要写日志文件的全路径,否则会报错。重复以上操作直到把所有需要分析的文件都加到列表中去。这样就可以启动进行分析。

3、使用dbms_logmnr里的存储过程start_logmnr启动分析;

这样就可以通过下面的查询来获取日志文件的内容了。

4、查询与dbms_logmnr相关的几个视图来获取日志文件内容;

这样就可以找出要恢复所需的语句。注意:v$logmnr_contents只对执行dbms_logmnr.start_logmnr的会话有效,如果通过其他会话或者使用dbms_logmn

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 将Oracle数据库中的数据写入Excel
  • Oracle数据库数据丢失恢复的几种方法总结
  • Oracle数据库升级或数据迁移方法研究
  • 整理Oracle数据库中数据查询优化的一些关键点
  • oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
  • oracle 数据库数据迁移解决方案
  • Oracle 数据库 临时数据的处理方法

相关文章

  • 2017-05-11oracle分区表之hash分区表的使用及扩展
  • 2017-05-11浅谈LogMiner的使用方法
  • 2017-05-11Oracle与SQL Server在企业应用的比较
  • 2017-05-11oracle 11g导出数据时报ORA 1455错误的处理方法
  • 2017-05-11oracle 存储过程加密的方法
  • 2017-09-17oracle 查询相关语句总结
  • 2017-05-11Oracle误删除表数据后的数据恢复详解
  • 2017-05-11ORACLE学习笔记-查询篇
  • 2017-05-11Redhat 6.2 下 oracle 11g R2的安装详解第1/2页
  • 2017-05-11解析Oracle 8i/9i的计划稳定性

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle数据创建虚拟列和复合触发器的方法
    • 将oracle的create语句更改为alter语句使用
    • Oracle在Mybatis中SQL语句的配置方法
    • Oracle中字符串连接的实现方法
    • oracle中变长数组varray,嵌套表,集合使用方法
    • OraclePL/SQL单行函数和组函数详解
    • 数据库连接通过getcolumns()函数获取表字段信息
    • Oracle 11g 安装配置方法图文教程
    • oracle下加密存储过程的方法
    • ORACLE EXP不能导出空表的原因分析及解决方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有