
Last Updated (Thursday, 08 January 2009 17:12) Thursday, 08 January 2009 17:10
ฟีเจอร์ของ ออราเคิล หลายตัว อย่างเช่น RMAN หรือ FLASHBACK จะสามารถย้อนเวลาไปดูข้อมูลเก่า หรือ ถอยหลังฐานข้อมูล ย้อนไปเป็นข้อมูลเก่า โดยระบุว่า ให้ย้อนไปหมายเลข SCN (System Change Number) หมายเลขอะไร
แต่โดยธรรมชาติ แล้ว มนุษย์เราจะคิดในมิติของเวลา เช่น อยากจะย้อนฐานข้อมูล ไปอยู่ในช่วงเวลา 6 มกราคม 2009 เวลา บ่ายโมง ดังนั้น เราต้องหาวิธีแปลง หน่วย เวลา ไปเป็น หมายเลข SCN
ตั้งแต่ Oracle 10g ได้ให้ฟังก์ชั่น มาช่วย คือ TIMESTAMP_TO_SCN()
ตัวอย่างเช่น อยากรู้ว่า 6 มกราคม 2009 เวลา บ่ายโมง จะเป็น SCN หมายเลขอะไร
SQL> col SCN format 999999999999
SQL> select TIMESTAMP_TO_SCN(
2. to_timestamp('06-JAN-2009 13:00:00',
'DD-MON-YYYY HH24:MI:SS')
3. ) AS SCN
4. from dual ;

ตัวอย่าง ข้างบน ผมใช้ ฟังก์ชั่น to_timestamp() ช่วยจัดการ convert วัน เวลา ในรูปแบบที่ผมถนัดซะก่อน ค่อยเอาไปเข้าฟังก์ชั่นหลัก เพราะ การเขียน timestamp ในรูปแบบของออราเคิล ต้องเขียนยาวเหมือนกันครับ ... ผมขี้เกียจ
ในทางกลับกัน ถ้าเรารู้หมายเลข SCN เราก็จะสามารถแปลงกลับเป็น timestamp ได้เช่นกัน ด้วยฟังก์ชั่น SCN_TO_TIMESTAMP()
SQL> select SCN_TO_TIMESTAMP(22754201478)
2. from dual ;

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


