Oracle Tips : How to recover dropped table from recyclebin

Oracle Tips : How to recover dropped table from recyclebin

สวัสดีครับพบกันอีกเช่นเคย วันนี้มี oracle tips มาฝากสักเล็กน้อยครับ เป็นเรื่องของการกู้คืนตารางที่ถูกลบไปแล้ว ไม่ว่าจะตั้งใจหรือไม่ตั้งใจก็ตาม (ส่วนใหญ่มักจะพลาดครับ :P) โดยปกติการกู้คืนตารางที่ถูกลบไปแล้ว เราจะนึกถึงการกู้คืนจากการ Backup ซึ่งวิธีการ Backup ที่สามารถกู้คืนตารางเดียวได้ง่ายก็คือการ “Export or Data Pumb(10g)” เพราะเราสามารถเลือกตารางที่จะกู้คืนได้เลย



แต่ถ้าไม่ได้ Backup แบบนี้ ก็มีอีกวิธีคือการใช้ Online Backup ไม่ว่าจะเป็น “Begin Backup…” หรือ “RMAN” ก็ตาม การกู้คืนจะต้องกู้คืนทั้งระบบฐานข้อมูล (Database Restore and Recovery) เรียกได้ว่า “ขี่ช้างจับตั้กแตนเลยก็ว่าได้” ถ้าสมมติว่าลบตารางเล็กๆแต่สำคัญมากๆไป ไม่ว่าจะเป็นวิธีการไหนก็ใช้เวลามากทั้งนั้น



แต่…ทว่าวันนี้มีวิธีการที่ง่ายและรวดเร็วกว่านั้น (ใช้ได้ตั้งแต่ Oracle 10g เป็นต้นมา) นั่นคือ “Oracle flashback” เป็นคุณสมบัติใหม่ที่เพิ่มเข้ามา โดย Oracle จะเก็บตารางข้อมูลที่ถูกลบไว้ในฐานข้อมูลบนพื้นที่ที่จองไว้ตอนติดตั้ง (flash_recovery_area) หากไม่ได้ปรับแก้ค่าใด โดยปกติจะจองพื้นที่ไว้ประมาณ 2GB



ด้วยคุณสมบัติพิเศษบนออราเคิล 10g หลังจากลบตารางข้อมูลไปแล้ว ระบบฐานข้อมูลจะจัดเก็บตารางข้อมูลดังกล่าวไว้ใน Recyclebin ก่อน โดยจะเปลี่ยนชื่อเป็น “BIN$……” เช่น ? “BIN$UIlmirybYvjgRAADuoU6oQ==$0” ซึ่งอาจจะก่อความรำคาญให้เราเป็นอย่างมากเวลาเรียกดูชื่อตารางทั้งหมด แต่จริงๆแล้วมันอาจจะช่วยเราในอนาคตได้ครับ โดยเราสามารถเรียกใช้คำสั่ง “SHOW RECYCLEBIN” เพื่อเรียกดูได้ว่า ตารางที่เห็นเป็นขยะเหล่านี้เดิมทีเป็นตารางอะไร ถูกลบเมื่อไร ดังตัวอย่าง

? SQL> show recyclebin
ORIGINAL NAME ? ?RECYCLEBIN NAME ? ? ? ? ? ? ? ?OBJECT TYPE ?DROP TIME
—————- —————————— ———— ——————-
TEST1 ? ? ? ? ? ?BIN$UIlmirybYvjgRAADuoU6oQ==$0 TABLE ? ? ? ?2008-06-26:09:23:42 ?



จากตัวอย่าง นั่นคือ มีตารางชื่อ “TEST1” ถูกลบไปเมื่อวานนี้ เวลา 9:23.42น.สำหรับวิธีการกู้คืนออราเคิลจะมีคำสั่งที่เรียกว่า “FLASHBACK” ซึ่งเราจะเรียกใช้ได้ดังนี้

? ? FLASHBACK TABLE <ชื่อตารางเดิม หรือ ชื่อที่ขึ้นต้นด้วย “BIN$….”> TO BEFORE DROP ; ? ?



ดังตัวอย่าง

SQL> flashback table TEST1 to before drop ;
Flashback complete.

SQL>



?เพียงเท่าันี้ท่านก็สามารถกู้คืนตารางที่ลบไปด้วยความไม่ตั้งใจได้แล้วครับ ไม่ต้องง้อ DBA และยังสามารถกู้คืนได้รวดเร็ว

สนับสนุนบทความโดย วลัญช์ ครองสัตย์

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *