กู้คืนข้อมูลที่ถูกลบด้วย Oracle Flashback Query

เคยเจอเหตุการณ์ที่ใช้คำสั่งผิดพลาดหรือเผลอลบข้อมูลไปโดยที่ไม่ได้ตั้งใจ และได้ทำการ commit ไปเรียบร้อยแล้วไม่สามารถ rollback กลับได้มั้ย 😊

สำหรับคำถามข้างต้นคิดว่าคงจะมีบ้างแหละที่จะพลาดกันบ้างใช่มั้ยคะ แต่ไม่เป็นไรค่ะ เรามีวิธีการแก้ปัญหาที่เกิดจากความผิดพลาดที่ไม่ได้ตั้งใจของเรา วันนี้จึงขอนำเสนอวิธีการที่จะกู้คืนข้อมูลได้ด้วยตัวเอง โดยที่ไม่ต้องไปร้องขอให้ DBA กู้คืนข้อมูลให้ด้วย Flashback Query กันค่ะ

Flashback Query เป็นฟีเจอร์ที่ช่วยให้เราสามารถเรียกดูข้อมูลย้อนหลัง ณ เวลา TIMESTAMP ที่ต้องการ ได้โดยใช้ AS OF clause การใช้งาน Flashback Query ก็ไม่ยาก ตามไปดูตัวอย่างการใช้งานกันค่ะ

ตัวอย่าง

Step1 : วันที่ 22 สิงหาคม 2565 เวลา 10:55:25 เรามีตารางข้อมูล TEST_NEW_STUDENT จำนวน 5 รายการ

Step2 : เวลา 11:01:18 คงเบรอ ๆ นิดหน่อย ทำการลบข้อมูลตาราง TEST_NEW_STUDENT และทำการ COMMIT ไปเรียบร้อย นั่งไปสักพักเอะเมื่อกี้เราทำอะไรไป พลาดไปแล้ว ข้อมูลหายหมดแล้ว ทำไงดี

Step3 : ใช่ Oracle มีฟีเจอร์ Flashback Query งั้นขอเรียกดูข้อมูลย้อนหลัง ณ เวลา 10:55:25 เพราะจำได้ว่าตอนนั้นข้อมูลยังมีอยู่ครบถ้วนสมบูรณ์ ก่อนที่จะพลาดลบไป 😂

🎈TO_TIMESTAMP (‘2022-08-02 10:55:25 ‘, ‘YYYY-MM-DD HH24:MI:SS’) คือการทำการแปลงให้เป็น TIMESTAMP

Step4 : นี่ไงข้อมูลที่เราลบไป รออะไรหละ ดำเนินการกู้คืนข้อมูลกันเลยค่ะ

ไชโย😍 ข้อมูลกลับมาเรียบร้อยแล้ว Flashback Query ช่วยชีวิตเราได้จริง ๆ👍👍👍 หวังว่าโพสนี้จะเป็นประโยชน์ต่อผู้อ่านไม่มากก็น้อยนะคะ แล้วพบกันใหม่ค่ะ

หมายเหตุ : ถ้าเราใช้วิธีการ Truncate จะไม่สามารถกู้คืนข้อมูลกลับได้ด้วย Flashback Query น้า