복붙노트

[SQL] 커밋 된 트랜잭션을 롤백

SQL

커밋 된 트랜잭션을 롤백

오라클 11g에서 커밋 된 트랜잭션을 롤백 할 수있는 방법이 있나요

제가 DB에 테이블에서 삭제를 제작하고 최선을 다하고 있습니다, 지금은 커밋 된 변경 사항을 롤백합니다. 그것을 할 수있는 방법이 있습니까?

해결법

  1. ==============================

    1.이미 커밋 된 내용을 롤백 할 수 없습니다. 당신이 할 수있는 일이 특정 상황에서, 가장 빠른 옵션 중 하나로서,에서와 다시 삽입하면 행을 삭제 한 테이블에 대한 플래시백 쿼리를 실행하는 것입니다. 다음은 간단한 예이다 :

    이미 커밋 된 내용을 롤백 할 수 없습니다. 당신이 할 수있는 일이 특정 상황에서, 가장 빠른 옵션 중 하나로서,에서와 다시 삽입하면 행을 삭제 한 테이블에 대한 플래시백 쿼리를 실행하는 것입니다. 다음은 간단한 예이다 :

    참고 :이 작업의 성공은 UNDO_RETENTION 매개 변수의 값 (기본 9백초)에 따라 달라집니다 - 시간의 기간 (자동으로 줄일 수있다) 동안 정보를 실행 취소 테이블 스페이스에 유지됩니다 취소.

    /* our test table */
    create table test_tb(
       col number
    );
    /* populate test table with some sample data */
    insert into test_tb(col)
       select level
         from dual
      connect by level <= 2;
    
    select * from test_tb;
    
    COL
    ----------
             1
             2
    /* delete everything from the test table */    
    delete from test_tb;
    
    select * from test_tb;
    
    no rows selected
    

    삽입 행이 다시 삭제 :

    /* flashback query to see contents of the test table 
      as of specific point in time in the past */ 
    select *                                   /* specify past time */
      from test_tb as of timestamp timestamp '2013-11-08 10:54:00'
    
    COL
    ----------
             1
             2
    /* insert deleted rows */
    insert into test_tb
       select *                                 /* specify past time */  
        from test_tb as of timestamp timestamp '2013-11-08 10:54:00'
       minus
       select *
         from test_tb
    
    
     select *
       from test_tb;
    
      COL
      ----------
              1
              2
    
  2. from https://stackoverflow.com/questions/19853150/rollback-a-committed-transaction by cc-by-sa and MIT license