Flashback Database

  • Oracle Database 10g 이전까지는 transactional point-in-time recovery를 위해서는 backup용 file과 redo log file을 이용하여 원하는 시간까지 복구를 해야만 했었습니다. 그러나 이 방법은 backup용 file이 오래됐고, archive log가 많이 쌓여 있을 때는 많은 시간이 소요될 수 밖에 없습니다.Oracle 10g부터는 flashback database를 이용하여 좀 더 빠른 recovery가 가능하게 되었습니다.
  • Flashback database의 사용 용도는 logical data corruption이나 user error시 유용합니다. Flashback Database의 장점은 기존의 point-in-time recovery에 비해 매우 빠른 recovery가 가능하다는 것입니다. Flashback database는 database의 크기에 비례해서 recovery 시간이 늘어나는 것이 아니기 때문입니다.

     
     

    Flashback Database를 위해 필요한 요소

  • Database의 ARCHIVELOG mode 운영
  • Flashback log를 위한 flash recovery area
  • Real Application Cluster databases는 Flash Recovery Area를 clustered file system이나 ASM에 둬야 합니다.

     
     

    Flashback Drop

  • Oracle 10g부터는 아래 그림과 같이 recycle bin(휴지통)이 있어서 어떤 table을 drop하면, drop된 table과 해당 table과 관계되는 object들을 일반적인 SQL 명령어를 통해 되살릴 수 있게 되었습니다.

     
     

    Flashback Table

  • 하나의 SQL 문장으로 한 테이블 혹은 여러 테이블에 대해 과거 특정 시점으로 되돌릴 수 있습니다.

     
     

    Flaskback Query

  • 하나의 SQL 문장을 통해 UNDO 정보를 이용해서 특정 테이블에 대한 과거 특정 시점의 테이블 데이터를 간편하게 조회해 볼 수 있습니다.

     
     

    Flashback Version Query

  • Flashback Versions Query는 Select시 versions between명령을 넣으면 해당 정보의 history 정보가 아래의 그림과 같이 undo tablespace를 통해 row level로 나타나게 됩니다.

     
     

    Flashback Transaction Query

  • Flashback Transaction Query는 아래의 그림과 같이 user의 실수로 잘못된 DML을 수행하였을 경우, transaction level로 변경 이력을 조회할 수 있습니다. 이를 기반으로 undo할 수 있기 때문에 human error에 대한 복구를 더욱 손쉽게 수행할 수 있습니다.

    Flashback Transaction

  • 단순한 transaction의 되돌리기를 넘어, 의존성이 있는 transaction들까지 함께 되돌릴 수 있는 기능을 제공합니다.

     
     

     
     

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다