`

Oracle 10g中的Logmnr

阅读更多

解析Oracle 10g中的Logmnr使用一例

 

很多时候我们在Oracle中执行操作时,需要对Oracle执行的DDL语句或者DML语句的操作过程做出一些分析;或者当某一个用户误删除了一张表或者误删除了一些数据时,DBA需要在事后找回误操作的数据,这时,可以通过对操作日志的分析,从而找到数据库中发生的一些变化。分析日志的工具就是Oracle所提供的Logmnr工具。

 

在Oracle9i中,Logmnr工具是DBA用来找回被删除数据的好办法,利用Logmnr可以完成以下的任务:

1、  查明数据库的变更记录,或者是进行变化分析,如有的用户怀疑自己的应用有什么问题,产生了大量的失误,可以用Logmnr来分析这些事务,看看到底发生了些什么事情。

2、  查明并更正用户的误操作,如有的用户一不小心误删除了某个表,但是并不承认,这个时候就可以利用Logmnr来分析是谁执行的DML或者是DDL操作。

3、  找回丢失的数据,当不能使用flashback或者使用flashback受到限制的时候,可以考虑使用Logmnr工具来找回数据,这个时候,只需要有归档日志即可。

Logmnr工具包含的内容与数据字典

dbms_logmnr_d包:用于提取字典信息到外部文件或者是联机日志中去。

dbms_logmnr包:包含三个过程:

(1)       add_logfile:用来添加/删除用于分析的日志文件。

(2)       start_logmnr:用来开启日志分析,而且在9i/10g中,可以开启很多不同的分析选项。

(3)       end_logmnr:用来终止分析会话,它将回收LogMiner所占用的内存。

 

如果普通用户想使用以上的包,必须现在sys中授权才可以使用,如:

 

sys用户执行授权:

SQL> grant execute on dbms_logmnr to scott;

 
 

 

与LogMiner相关的数据字典如下:

u       v$logmnr_dictionary:LogMiner可能使用的数据字典信息

u       v$logmnr_parameters:当前LogMiner所设定的参数信息

u       v$logmnr_logs:当前用于分析的日志列表

u       v$logmnr_contents:日志分析结果

 

Logmnr分析过程演示

创建一张表,然后插入一些数据,再删除这些数据。

 

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

 

SQL> alter system archive log current;

 

系统已更改。

 

SQL> create table mytesttab as select * from scott.dept;

 

表已创建。

 

SQL> insert into mytesttab values(80,''IT'',''WA'');

 

已创建 1 行。

 

SQL> insert into mytesttab values(90,''MGR'',''YR'');

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> delete from mytesttab;

 

已删除6行。

 

SQL> commit;

 

提交完成。

 

SQL> alter system archive log current;

 

系统已更改。
 

 

然后找出操作过程记录的日志文件

D:\oracle\flash_recovery_area\MYORACLE\ARCHIVELOG\2007_08_11目录下的

O1_MF_1_4_3CVHLKJM_.ARC

文件,我们需要对这个文件进行分析处理。

 

SQL> exec sys.dbms_logmnr.add_logfile(LogFileName=>''D:\oracle\flash_recovery_area\MYORACLE\ARCHIVELO

G\2007_08_11\O1_MF_1_4_3CVHLKJM_.ARC'',options=>dbms_logmnr.new);

 

PL/SQL 过程已成功完成。

 

SQL> exec sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.dict_from_online_catalog);

 

PL/SQL 过程已成功完成。
 

 

 

OK,分析完成。

 

查看日志记录的内容

 

SQL> select t.scn,t.timestamp,t.seg_owner,t.operation

  2  from v$logmnr_contents t where t.seg_name=''MYTESTTAB'';

 

       SCN TIMESTAMP      SEG_OWNE OPERATION

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

   5483840 11-8月 -07     SYS      DDL

   5483863 11-8月 -07     SYS      INSERT

   5483874 11-8月 -07     SYS      INSERT

   5483885 11-8月 -07     SYS      DELETE

   5483885 11-8月 -07     SYS      DELETE

   5483885 11-8月 -07     SYS      DELETE

   5483885 11-8月 -07     SYS      DELETE

   5483886 11-8月 -07     SYS      DELETE

   5483886 11-8月 -07     SYS      DELETE

 

已选择9行。

 

SQL> select t.SQL_REDO from v$logmnr_contents t where t.seg_name=''MYTESTTAB'';

 

SQL_REDO

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

create table mytesttab as select * from scott.dept;

insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values (''80'',''IT'',''WA'');

insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values (''90'',''MGR'',''YR'');

delete from "SYS"."MYTESTTAB" where "DEPTNO" = ''10'' and "DNAME" = ''ACCOUNTING'' and "LOC" = ''NEW


YORK

delete from "SYS"."MYTESTTAB" where "DEPTNO" = ''20'' and "DNAME" = ''RESEARCH'' and "LOC" = ''DALLAS'' an

delete from "SYS"."MYTESTTAB" where "DEPTNO" = ''30'' and "DNAME" = ''SALES'' and "LOC" = ''CHICAGO'' and

delete from "SYS"."MYTESTTAB" where "DEPTNO" = ''40'' and "DNAME" = ''OPERATIONS'' and "LOC" = ''BOSTON''

delete from "SYS"."MYTESTTAB" where "DEPTNO" = ''80'' and "DNAME" = ''IT'' and "LOC" = ''WA'' and ROWID =

delete from "SYS"."MYTESTTAB" where "DEPTNO" = ''90'' and "DNAME" = ''MGR'' and "LOC" = ''YR'' and ROWID =

 

已选择9行。

 

SQL> select t.SQL_UNDO from v$logmnr_contents t where t.seg_name=''MYTESTTAB'';

 

SQL_UNDO

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

 

delete from "SYS"."MYTESTTAB" where "DEPTNO" = ''80'' and "DNAME" = ''IT'' and "LOC" = ''WA'' and ROWID =

delete from "SYS"."MYTESTTAB" where "DEPTNO" = ''90'' and "DNAME" = ''MGR'' and "LOC" = ''YR'' and ROWID =

insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values (''10'',''ACCOUNTING'',''NEW YORK'');

insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values (''20'',''RESEARCH'',''DALLAS'');

insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values (''30'',''SALES'',''CHICAGO'');

insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values (''40'',''OPERATIONS'',''BOSTON'');

insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values (''80'',''IT'',''WA'');

insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values (''90'',''MGR'',''YR'');

 

已选择9行。
 

 

 

通过查看v$logmnr_contents视图中的一些列可以看到日志的记录详细信息。

 

注意其中:SQL_UNDO和SQL_REDO列记录的信息。这就是我们需要找回的内容!

 

 

可以将结果转存在一张用户表中

 

SQL> create table my_logmnr_contents

  2  as

  3  select * from v$logmnr_contents;

 

表已创建。
 

 

 

清空session内存信息

 

SQL> exec sys.dbms_logmnr.end_logmnr;

 

PL/SQL 过程已成功完成。
 

 


文章出处:http://www.diybl.com/course/7_databases/oracle/oraclejs/2008515/116714.html

分享到:
评论

相关推荐

    Oracle10G LogMiner的配置

    Oracle 10G LogMiner 是Oracle数据库系统中一个强大的日志分析工具,它允许用户在不使用归档重做日志的情况下分析数据库的redo log files,获取对数据库更改历史的详细视图。LogMiner 提供了一种有效的方式来进行...

    Oracle 日志挖掘(LogMiner)使用详解

    Logminer依赖于2个包:DBMS_LOGMNR和DBMS_LOGMNR_D,Oracle 11g默认已安装 Logminer 基本使用步骤 <1>. Specify a LogMiner dictionary. 指定Logminer字典 <2>. Specify a list of redo log files for analysis. ...

    Oracle_10g_LogMiner

    在Oracle 10g中,LogMiner 的安装主要涉及创建DBMS_LOGMNR程序包和数据字典。首先,通过执行`@?/rdbms/admin/dbmslm.sql`来创建DBMS_LOGMNR包,这会创建必要的存储过程和函数。接着,执行`@?/rdbms/admin/dbmslmd....

    Oracle 10g中LogMiner的使用.pdf

    Oracle 10g中的LogMiner是一个强大的工具,主要用于分析Oracle数据库的日志文件,从而获取数据库的DML(数据操纵语言)操作历史。这个工具在Oracle 10g版本中得到了显著的提升,使得分析过程更为简便且功能更为强大...

    dbms_logmnr使用

    DBMS_LOGMNR 是 Oracle 中的一个日志分析包,用于分析和解释redo日志文件,以便追踪和诊断数据库中的操作。下面是 DBMS_LOGMNR 的使用方法。 首先,需要安装 LogMiner 工具,包括两个脚本 dbmslm.sql 和 dbmslmd....

    Oracle11g搭建物理DG.docx|Oracle11g搭建物理DG.docx

    在Oracle 11g中,物理DG是一种复制方法,通过实时地传输和应用生产数据库的日志到一个或多个备用数据库,使得备用数据库与主库保持几乎同步的状态。这样,当生产数据库遇到故障时,可以通过快速切换到备用数据库来...

    精通Oracle.10g.PLSQL编程

    br>精通Oracle 10g PL/SQL编程 <br> 【作 者】王海亮 林立新 于三禄 郑建茹 【丛 书 名】 万水Oracle技术丛书 <br>http://images.china-pub.com/ebook20001-25000/21975/shupi.jpg<br><br>PL/SQL是...

    oracle 10g dataguard 详细配置步骤

    在Oracle 10g中,DataGuard是一种高可用性解决方案,它可以创建并维护一个或多个物理、逻辑或快照副本数据库(称为standby数据库),这些副本与主数据库(primary database)同步或异步运行。通过这种方式,即使主...

    Oracle_10g_Logminer_研究及测试

    在Oracle 10g环境中,为了确保LogMiner能够正确解析并分析包含DML(数据操纵语言)语句的日志,数据库需设置`SUPPLEMENTAL LOG DATA PRIMARY KEY`和`SUPPLEMENTAL LOG DATA UNIQUE INDEX`。这些设置使得Oracle记录...

    oracle views 10g

    ### Oracle 10g 视图详解 #### 高可用性和恢复能力 Oracle 10g 的高可用性与恢复功能对于确保数据安全至关重要。以下列出的视图提供了关于备份、归档和恢复过程的关键信息。 1. **V$ARCHIVE**: 展示了归档日志的...

    Oracle11G DataGuard相同SID物理Standby搭建手册

    Oracle 11g DataGuard是Oracle数据库系统中的一个强大特性,用于实现高可用性和灾难恢复。DataGuard通过创建和维护一个或多个备用数据库,确保在主数据库出现问题时,业务能够迅速切换到备用数据库,减少数据丢失和...

    Oracle数据库归档日志挖掘步骤

    Oracle 数据库归档日志挖掘是指从 Oracle 数据库中提取有价值的信息,以便追溯和分析数据库的操作记录。这种操作可以帮助数据库管理员和开发者更好地理解数据库的行为,提高数据库的性能和安全性。 Oracle 数据库...

    ORACLE11G搭建DATAGUARD步骤.pdf

    Oracle 11g 数据守护(Data ...通过以上步骤,你可以成功地在Oracle 11g环境中搭建Data Guard,提供了一个可靠的数据保护方案。在实际操作中,还需要考虑网络配置、安全性、性能优化等因素,确保整个系统的稳定运行。

    GoldenGate12 for Oracle11g测试

    ### GoldenGate 12 for Oracle 11g 测试知识点详解 #### 一、环境准备与配置 **1. 用户配置文档编辑** - **命令行操作**:`[oracle@enmo ~]$ vi .bash_profile` - 这一步是通过`vi`编辑器来编辑用户的`.bash_...

    ORACLE常用命令总结

    在Oracle数据库中,日志管理是维护数据库稳定性和完整性的重要组成部分。以下是一些常见的日志管理命令及其详细解释: 1. **强制切换日志(Forcing Log Switches)** - **命令**: `ALTER SYSTEM SWITCH LOGFILE;`...

    典藏之作 oracle 常用命令大汇总

    G、sql> execute dbms_logmnr.end_logmnr; ``` #### 第二章:表空间管理 表空间是Oracle数据库的基本存储单位,负责存储数据库对象的数据。表空间管理包括创建、修改和删除表空间等操作。 ##### 1. 创建表空间 ...

    Oracle LogMiner

    Oracle LogMiner 是一个强大的分析工具,自 Oracle 8i 版本开始提供,用于解析和提取重作日志文件(redo log files)中的详细信息。重作日志是 Oracle 数据库的重要组成部分,记录了所有对数据库进行的DML(插入、...

    Oracle 数据库中改善的表空间管理

    对于想要将 SYSAUX 中的对象转移到其他表空间的情况,Oracle 10g 提供了 `V$SYSAUX_OCCUPANTS` 视图,该视图详细列出了 SYSAUX 中的模式、描述、占用空间以及迁移方法。例如,LogMiner 对象可以使用 `SYS.DBMS_...

Global site tag (gtag.js) - Google Analytics