zoukankan      html  css  js  c++  java
  • v$logmnr_contents中特殊delete语句解惑

    疑惑:在v$logmnr_contents中,SQL_REDO为DELETE语句,但是SQL_UNDO为null是什么情况呢?

     

    其实这种情况是因为SQL插入失败,数据库内部回滚了这条记录。比较特殊的一种情况,如果以前没有注意过这些细节信息,还真有点懵。这里模拟构造了一个案例,演示一下这种情况:

     

    SQL> INSERT INTO SCOTT.EMP
      2  VALUES(7934,'MILLER','CLERK','7782' , SYSDATE, 1200, NULL,10);
    INSERT INTO SCOTT.EMP
    *
    ERROR at line 1:
    ORA-00001: unique constraint (SCOTT.PK_EMP) violated

     

     

    然后我们使用LogMiner去挖掘redo log就会发现redo log里面生成了两条记录一条INSERT、一条DELETE记录。

     

    SQL> execute dbms_logmnr.add_logfile('/u01/oradata/gsp/redo03.log', dbms_logmnr.new);
     
    PL/SQL procedure successfully completed.
     
    SQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
     
    PL/SQL procedure successfully completed.
     
    SQL> create table scott.log_miner_output
      2  as
      3  select * from v$logmnr_contents where table_name='EMP' ;
     
    Table created.
     
    SQLexecute dbms_logmnr.end_logmnr();
     
    PL/SQL procedure successfully completed.

     

    clip_image001

     

     

    所以对于这种情况: ROLLBACK字段值为1表示回滚, OPERATION为DELETE, SQL_REDO为DELETE语句, SQL_UNDO为NULL值。有时候,我们可能这样去挖掘分析(加上查询条件OPERATION='DELETE',如下所示),没有加上ROLLBACK字段,这样在不了解、熟悉的情况下,可能会以为它是一个客户端发出的一个DELETE语句,实质上是一个INSERT语句回滚操作。

     

    CREATE TABLE SCOTT.LOG_MINER_OUTPUT
    AS
    SELECT SQL_REDO,SQL_UNDO, USERNAME,SESSION_INFO FROM V$LOGMNR_CONTENTS WHERE TABLE_NAME='EMP' AND OPERATION='DELETE';

    AWR报告中如果你看到一些指标例如user rollbackstransaction rollbacksRollback per transaction%的值较大而你又无法定位原因时那么你可以用Logminer来帮你分析定位原因(root cause)。这个也算是Logminer的一个特殊用途!!

  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/kerrycode/p/13415164.html
Copyright © 2011-2022 走看看