当前位置:  数据库>oracle

Oracle Logminer 做数据恢复 说明示例

    来源: 互联网  发布时间:2017-04-04

    本文导语: 在IBM DBA 小荷的blog上看到一个用Logminer 做数据恢复的例子。 虽然对Logminer 也了解一点,但是用Logminer 做恢复还真没用过,所以也测试一下。    一. 在测试之前讲一点理论知识 1.1. 补充日志(supplemental logging) 先看一下补充日...

在IBM DBA 小荷的blog上看到一个用Logminer 做数据恢复的例子。 虽然对Logminer 也了解一点,但是用Logminer 做恢复还真没用过,所以也测试一下。

  

一. 在测试之前讲一点理论知识

1.1. 补充日志(supplemental logging)

先看一下补充日志都包含哪些信息和特性:

       (1)索引簇、链行和迁移行;

       (2)直接路径插入;

       (3)摘取LogMiner字典到重做日志;

       (4)跟踪DDL;

       (5)生成键列的SQL_REDO和SQL_UNDO信息;

       (6)LONG和LOB数据类型。

 

       这里我们重点看一下:track DDL 和 generate sql_redo and sql_undo.

 

       Oracle 的online redo 会记录DB的所有操作,包括DDL 和 DML。 supplemental log支持track DDL。 也就是说,我们可以直接去Mining DML的内容。 但是如果要去Mining DDL 内容,就必须先启动supplemental log,oracle 收集有关更多的DDL 信息之后,我们才可以去Mining它的信息。

 

       因为我们可以根据归档和online redo 去恢复数据,所以这些DDL 的内容,即使不启动 supplemental log,对与Oracle 内部来说肯定是可以识别的,只是我们不能Mining出来。 只有启动supplemental log之后,我们也就可以Mining出来了。

 

       默认情况下Oracle 并没有启动supplemental log。因为记录太多的内容会增加写log的压力。

 

       SQL_REDO 和 SQL_UNDO 是我们操作的SQL(DDL和DML)和用于回滚的SQL。 我们的恢复就是使用SQL_UNDO 来进行的。

       在我们的DML 和DDL操作之前,需要先启动supplemental log。 不然生成的SQL_REDO 和 SQL_UNDO 是没有经过数据字典转换过的,这样不具可读性。 都是Oracle 内部的ID。

 

 

启动supplemental log:

       SQL>alter database add supplemental log data;

 

关闭supplemental log:

       SQL>alter database drop supplemental log data;

 

查看 supplemental log:

       SQL>select supplemental_log_data_min from v$database;

 

1.2  Logminer 的三种模式

 

LogMiner dictionary :

       The LogMiner dictionary allows LogMiner to provide table and column names, instead of internal object IDs, when it presents the redo log data that you request.

       LogMiner uses the dictionary to translate internal object identifiers and datatypes to object names and external data formats. Without a dictionary, LogMiner returns internal object IDs and presents data as binary data.

 

       LogMiner字典用于将内部对象ID号和数据类型转换为对象名和外部数据格式。使用LogMiner分析重做日志和归档日志时,应该生成LogMiner字典,否则将无法读懂分析结果。

 

INSERT INTO HR.JOBS(JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)  VALUES('IT_WT','Technical Writer', 4000, 11000);

 

如果没有数据字典进行转换,解析之后的结果是:

insert into "UNKNOWN"."OBJ# 45522"("COL 1","COL 2","COL 3","COL 4") values (HEXTORAW('45465f4748'),HEXTORAW('546563686e6963616c20577269746572'),HEXTORAW('c229'),HEXTORAW('c3020b'));

 

这个就没有什么可读性了。 现在我们来看三种模式。

 

1.2.1 Online Catalog

       直接用DB的数据字典在线进行转换。 要求DB必须处于open 状态,只能Mining DML。 只能反应当前版本表中的信息。 即表没有没有进行DDL 修改。 只能Mining到表自修改之后到现在的数据。 之前的不能Mining。

       这是效率最高的。 但是缺点也摆在这。 系统表是关键表,用这种方法会增加DB的压力。

 

1.2.2 Extracting a LogMiner Dictionary to the Redo Log Files

       The process of extracting the dictionary to the redo log files does consume database resources, but if you limit the extraction to off-peak hours, then this should not be a problem, and it is faster than extracting to a flat file. Depending on the size of the dictionary, it may be contained in multiple redo log files. If the relevant redo log files have been archived, then you can find out which redo log files contain the start and end of an extracted dictionary.

 

To do so, query the V$ARCHIVED_LOG view, as follows:

 

SQL>SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_BEGIN='YES';

SQL>SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_END='YES';

 

       使用这种方法必须启动supplemental log。 进程会讲database dictionary的信息extract到online redo log里去,从而减少对在Mining时对数据库资源的消耗。 如果database dictionary 非常大, 这时候在写online redo的时候发生了归档的操作。 那么可以通过上面的两个SQL 来查看。 因为dictionary信息写入了这些log文件,所以在Mining时,这些文件是必须包含在Mining里的,不然会报ORA-1371的错误。

 

       To extract a LogMiner dictionary to the redo log files, the database must be open and in ARCHIVELOG mode and archiving must be enabled. While the dictionary is being extracted to the redo log stream, no DDL statements can be executed. Therefore, the dictionary extracted to the redo log files is guaranteed to be consistent (whereas the dictionary extracted to a flat file is not).

       这个还有一个很大的问题在这。 就是在进行extract的时候,所以的DDL 都会被挂住。 即不能执行,只有当extract 结束以后,DDL 才能执行。 如果extract 的时间很长,那么DDL 被挂的时间也就很长。

       虽然讲生产库上DDL 操作很少,但是这个extract directory to redo 操作也还是有风险的。 所以可行性最高的还是我们的第三种方法。

 

1.2.3 Extracting the LogMiner Dictionary to a Flat File

       When the LogMiner dictionary is in a flat file, fewer system resources are used than when it is contained in the redo log files. Oracle recommends that you regularly back up the dictionary extract to ensure correct analysis of older redo log files.

       Be sure that no DDL operations occur while the dictionary is being built.

      

       同样需要启动supplemental log。 在extract to online redo的时候,Oracle会限制DDL 执行,直到directory extract 结束。 而extract to flat file的话,就需要用户来保证这个一致性了。 而且每次进行挖掘的时候都需要extract一次,从而保证一致性。

      

       这种方法的致命伤是需要设置 UTL_FILE_DIR参数,而该参数的生效必须重启DB。

 

       我们这里就是用extract to flat file来来演示数据恢复。


    
 
 

您可能感兴趣的文章:

  • oracle drop table(表)数据恢复方法
  • Oracle数据库恢复后心得
  • 关于系统重装后Oracle数据库完全恢复的解决办法
  • Oracle数据库备份和恢复工具 RMan
  • 实战Oracle数据库备份与恢复
  • Oracle数据库冷备份的异地恢复
  • oracle下实现恢复一个丢失的数据文件的代码
  • Oracle数据库备份恢复最佳实践
  • Oracle数据库文件恢复以及备份思路
  • oracle数据库创建备份与恢复脚本整理
  • Oracle数据库的备份与恢复完全攻略
  • ORACLE 数据库RMAN备份恢复
  • 一次误操作引起的Oracle数据库大恢复
  • Oracle数据库的备份与恢复
  • Oracle数据库的备份及恢复策略研究
  • 超级复杂困难之Oracle数据库大恢复
  • Oracle数据库的备份与恢复技术方案
  • 优化Oracle停机时间及数据库恢复
  • oracle bbed恢复删除数据实例
  • oracle while的用法示例分享
  • Oracle 使用Java Source 简单示例
  • ORACLE 毫秒与日期的相互转换示例
  • java使用jdbc链接Oracle示例类分享
  • Oracle数据库安装配置示例
  • java操作oracle数据库示例
  • Oracle数据库安装配置流程示例详细解析
  • oracle表空间中空表统计方法示例介绍
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • Oracle层次查询和with函数的使用示例
  • oracle 11g最新版官方下载地址 iis7站长之家
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 理解和使用Oracle 8i分析工具LogMiner
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3