Jan
24
2009
Back to the future เจาะเวลาหาอดีตกับ Oracle
Written by Administrator   

     นึกถึงชื่อหนังเรื่องนี้แล้วก็นานมากทีเดียว  สมัยก่อนถือได้ว่าเป็นหนังที่สนุกมากมีตั้ง 3 ภาคแน่ะ มันทำให้คิดได้ว่า่เรื่องราวของการย้้อนเวลาหาอดีต เป็นสิ่งที่มีการค้นคว้ามาหลายยุคหลายสมัย ตั้งแต่ก่อนพุทธกาล มาจนถึงในยุคของวิทยาศาสตร์ครองโลก เพราะมนุษย์มักจะทำอะไรผิดพลาดโดยไม่รู้ตัว และหลายๆครั้งเราก็เกิดความสงสัยในปัจจุบันว่าเกิดเหตุการณ์เช่นนี้กับเราได้อย่างไร  อดีตจึงเป็นสิ่งเดียวที่สามารถไขความกระจ่างนี้ได้ 

     อารัมภบทซะยาว แล้วมันเกี่ยวอะไรกับ Oracle แน่้นอนคนที่เคยทำงานเกี่ยวกับข้อมูลย่อมเคยเจอข้อมูลหาย Laughing  หลังจากนั้นก็จะมีเหตุการณ์ระลึกชาติ  นั่งเทียน  หรือแม้แต่ตีอกชกหัวตัวเองก็มี  ดังนั้น Oracle จึงคิดค้นความสามารถที่จะค้นหาอดีตขึ้น โดยให้ชื่อ Flashback Technology ซึ่งคำนี้เริ่มเกิดขึ้นใน Oracle 9i และได้รับการพัฒนามาอย่างต่อเนื่องและใน Orcle 11g ได้เพิ่ม Feature ขึ้นมาอีกหลายอย่างทีเดียว ลองมาดูกันว่าเจ้า Flashback นี่มันทำอะไรได้บ้างและ เอาเฉพาะ Version 10 และ 11 มาดูความแตกต่างกัน คร่าวๆนะครับ

   ความสามารถของ Flashback ใน 10g

  1. query ข้อมูลในช่วงเวลาย้อนหลังจากปัจจุบันได้
  2. query ดูการเปลี่ยนแปลงของ Database ได้
  3. Recover Table หรือ ข้อมูลจากช่วงเวลาย้อนหลังได้

 ส่วนเพิ่มเติมใน Version 11g

  4. Track และ  archive การเปลี่ยนแปลงข้อมูล ของ  Transaction อัตโนมัติ
  5. Rollback Transactionที่กำลังใช้งานอยู่ไปจนถึง Transaction ที่เกี่ยวข้องได้   แต่ต้องในขณะที่ Database อยู่ในสถานะ  Online 

ต่อไปเป็นการทดสอบ

  SQL>conn system/password ; 

เราจะใช้ user  Scott ในการ ทดสอบ สำหรับผู้เข้าใช้งานครั้งแรก User นี้จะถูก Lock ไว้ ให้ไปปลด Lock ด้วยคำสั่งนี้ 

 SQL> alter user scott account unlock;

 SQL> conn scott/tiger

ใช้ table DEPTสำหรับทดสอบ 

 SQL> select * from dept

 SQL> insert into dept values(50,'Management','TEXAS');

 SQLl> commit; 

 SQL> select * from dept;

ถึงตรงนี้หลังจากคำสั่ง Commit ดังนั้นต่อไปนี้ Table Dept จะมีข้อมูล 5 Record เสมอ

 เราสามารถกลับไปดูข้อมูลเก่าในช่วงเวลาที่กำหนดได้ โดยคำสั่งต่อไปนี้ 

 SQL> select * from dept as of timestamp
   to_timestamp('24-01-2009 09:00:00','dd-mm-yyyy hh24:mi:ss') ; -- เวลาที่ย้อนถอยหลังไป 

  จะพบข้อมูลเดิม 

  เห็นได้ว่า  ความสามารถเหล่านี้  สามารถนำเรากลับไปดูข้อมูลในช่วงเวลาที่กำหนดได้ แต่ทว่าใน Version ก่อน 11 g ไม่สามารถกำหนดได้ว่าจะให้ข้อมูลเก่าเหล่านี้คงอยู่ได้นานแค่ไหน  เนื่องจากว่า Flashback นั้นเป็นการเข้าไปดูข้อมูลจากส่วนของ Undo Segment ซึ่งมีระยะเวลากำหนดจาก Undo_retention Parameter  ถ้าข้อมูลใน Undo Segment หายไป เราก็ไม่สามารถย้อนเข้าไปดูขอ้มูลเหล่านั้นได้อีก  ดังนั้น Oracle 11g ได้สร้าง Flashback Data Archive ขึ้นมาเพื่อกำหนดพื้นที่ และ ระยะเวลาที่เก็บข้อมูลได้ตามความต้องการ   โดยมีขั้นตอนดังต่อไปนี้

 1. สร้าง Flashback Data Archive 

   SQL> conn sys/password as sysdba 

   SQL> create flashback archive default fb1 tablespace  users quota 1g retention 1 year ;

2. กำหนด Default Archive (สร้าง Archive ได้หลายตัว แต่ำหนด Default ได้ทีละตัว )

   SQL> alter flasback arvhive fb1 set default;

3. เิปิดใช้งาน Archive

   SQL> alter table scott.dept flashback archive;

เรียบร้อย เท่านี้ก็การันตีได้ว่า ข้อมูลจะอยู่กับเราได้นาน 1ปี  

  กรณีที่ต้องการขยายเวลา 

   SQL>  alter flashback archive fb1 modify retention 2 year;

กรณีที่ต้องการปิดการใช้งาน

  SQL>  alter table scott.dept no flashback archive ;

กรณีที่ต้องการ Drop Archive

  SQL> drop flashback archive fb1;


สุดท้าย Oracle มี View ที่เพิ่มขึ้นมาเพื่อดูข้อมูลเกี่ยวกับ Flashback Data Archive 3 view ด้วยกัน คือ

   *_FLASHBACK_ARCHIVE  ข้อมูลเกี่ยวกับ Archive

   *_FLASHBACK_ARCHIVE_TS  ข้อมูลเกี่ยวกับ Tablespace ที่ทำ Archive

   *_FLASHBACK_ARCHIVE_TABLES ข้อมูลเกี่ยวกับTable ที่ทำ Archive

  eg. select * from dba_flasback_archive ;

 จบแล้วครับ  ....  ยังไม่ได้ลงรูปให้ดูนะคับ เดี๋ยว Upload อีกที   

รายละเอียดเพิ่มเิติมดูได้จาก  Advanced Application Developer's Guide 11g Release 1 (11.1)   


Comments
Add New Search
Write comment
Name:
Email:
 
Website:
Title:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."