
Last Updated (Saturday, 08 August 2009 20:04) Monday, 12 January 2009 17:31
เคยไหมครับ ที่เราลบตาราง ทั้งตั้งใจ หรือ พลั้งพลาดไป ด้วยคำสั่ง DROP TABLE .. แล้วต้องการเอาตารางนั้นคืนมา ?
ปัญหา คือว่า คำสั่ง DROP TABLE เป็น คำสั่ง DDL (Data Definition Language) จึงไม่สามารถใช้ คำสั่ง ROLLBACK ; กู้คืนกลับมาได้ ไม่เหมือนคำสั่ง DELETE TABLE ซึ่งเป็นคำสั่ง DML (Data Manipulation Language )
แล้วเราจะทำไงดีล่ะ ช่วยด้วย T T
ถ้า เป็น สมัยก่อน เราต้องเอาข้อมูลที่ backup หรือ เอา dump file ที่ export เอาไว้ ทำการ restore หรือ import กลับ ซึ่งเป็นเรื่องที่ยุ่งยาก .. ถ้าไม่มี backup เอาไว้ล่ะก็ เป็นอันจบเห่
โชค ดี ที่นับตั้งแต่ Oracle Database 10g เป็นต้นมา ออราเคิล มีฟีเจอร์ "FLASHBACK" เพื่อกู้ข้อมูล ที่ถูกลบไป กลับคืนมา แม้ว่า คำสั่งที่ลบไปนั้น จะเป็นคำวั่ง DDL ที่ไม่สามารถใช้การ ROLLBACK กู้คืนมาได้ก็ตาม
การใช้ FLASHBACK กู้คืนตารางที่ถูกลบ ด้วยคำสั่ง DROP TABLE มี synstax ดังนี้
SQL> FLASHBACK TABLE ชื่อตารางที่ถูกลบ TO BEFORE DROP ;ตัวอย่างต่อไปนี้ ผมจะลบตาราง EMP ด้วยคำสั่ง DROP TABLE แล้วจะใช้ FLASHBACK TABLE กู้คืนกลับมา
สังเกตดีๆ จะเห็นว่า ไม่มีตาราง EMP แล้ว แต่จะมีตาราง BIN$ ตามด้วยภาษาต่างดาวยึกยือ โผล่มาแทน .. มันก็คือ ตาราง EMP นั่นแหละครับ มันยังไม่ถูกลบออกไปจริงๆ แต่จะถูกเก็บเข้า Recycle Bin ของ ออราเคิล เอาไว้ก่อน
เมื่อ เรากู้คืนตาราง ด้วยคำสั่ง FLASHBACK TABLE ... TO BEFORE DROP ; ตาราง EMP ที่ถูกลบไป ก็จะกู้กลับคืนมา โดยง่ายดาย ...เฮ้อ รอดตัวไป
oracle database table oracle database data using pl/sql index oracle tutorial password oracle thailand oracle training thailand database administrator oracle thai oracle dba oracle training oracle consulting oracle consultance thai oracle consultance oracle consulting thailand mysql tuning indexes statistics join column migration rman tables production


