Saturday, May 9, 2009

การแบ็คอัพแบบ Copy Incremental Level 0, 1 (No Archivelog Mode)

Updated: 5/4/2009

ผลที่ได้จากกระบวนการแบ็คอัพนี้ จะคล้าย ๆ กับ การทำ Daily Backup ใน Enterprise Manager (EM) โดยเป็นการแบ็คอัพเมื่อดาต้าเบสรันเป็นแบบ No Archivelog ซึ่งในวันแรกจะทำการ Copy Datafile ทั้งหมดก่อน (Level 0) พอวันที่สองจะทำการแบ็คอัพเพิ่มเฉพาะข้อมูลส่วนต่าง (Level 1) พอวันที่สามข้อมูลที่เพิ่มของวันที่สองจะถูกเอารวมเข้ากับ Datafile ในวันที่ 1 รวมทั้งจะทำการแบ็คอัพเพิ่มเฉพาะข้อมูลส่วนต่างของวันที่สาม พอวันต่อ ๆ มาก็จะทำเหมือนกับวันที่สาม

ด้วยหลักการข้างบนสามารถใช้คำสั่งในกรอบข้างล่างซึ่งจะแบ็คออัพลงบนดิสก์เท่านั้น การก๊อปปี้ขึ้น Tape อาจจะใช้ Third Party software หรืออื่น ๆ
****************************************************************************************************************
ตัวอย่างของการรัน RMAN ที่จะทำการแบ็คอัพข้อมูลที่สามารถกู้ข้อมูลกลับมาได้ ณ ช่วงเวลาต่าง ๆ ที่อยู่ในช่วง 7 วันก่อนที่จะกู้ข้อมูล

RUN {
RECOVER COPY OF DATABASE WITH TAG 'incr_update'
UNTIL TIME 'SYSDATE - 7';
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update'
DATABASE;
}

คำสั่งข้างต้นจะมีผลดังนี้:
คืนแรกคำสั่ง RECOVER COPY... UNTIL TIME จะไม่มีผลอะไร และคำสั่ง BACKUP INCREMENTAL... FOR RECOVER OF COPY จะสร้างไฟล์แบ็คอัพ Level 0

พอคืนที่สองถึงคืนที่เจ็ด คำสั่ง RECOVER COPY... UNTIL TIME จะยังคงไม่มีผลเนื่องจาก SYSDATE-7 ยังไม่มีข้อมูลที่จะ Recover (เพื่ออัพเดท Datafile Copy)คำสั่ง BACKUP INCREMENTAL... FOR RECOVER OF COPY จะสร้างไฟล์แบ็คอัพ Differential Level1 ซึ่งจะแบ็คอัพเฉพาะข้อมูลส่วนต่างของแต่ละวันไว้

พอวันที่แปดเป็นต้นไป คำสั่ง RECOVER COPY... UNTIL TIME จะทำการอัพเดทไฟล์แบ็คอัพ โดยเอาไฟล์แบ็คอัพแบบ Incremental Level1 ที่ได้ทำไว้ทุกวัน (เมื่อเจ็ดวันก่อน)และเช่นเดียวกับวันก่อนหน้า คำสั่ง BACKUP INCREMENTAL... FOR RECOVER OF COPY จะสร้างไฟล์แบ็คอัพ Differential Level1 ซึ่งจะแบ็คอัพเฉพาะข้อมูลส่วนต่างของแต่ละวันไว้

ดังตัวอย่าง คุณสามารถทำการกู้ข้อมูลไป ณ จุด SCN ใด ๆ ระหว่างจุดที่ได้ทำการแบ็คอัพไว้ ร่วมกับ Redo Logs ซึ่งเนื่องจากเราทำการอัพเดทไฟล์แบ็คอัพทุกวัน เราจึงจะใช้ข้อมูลใน Redo Logs ย้อนหลังไม่เกิน 1 วัน

จากการทดสอบ
สมมติว่าเราตั้งตารางการแบ็คอัพดังนี้
อาทิตย์ backup incremental level 0 ลงดิสก์, ก๊อปปี้ขึ้น TapeWeek1
วันจันทร์ backup incremental level1 ลงดิสก์, ก๊อปปี้ขึ้น TapeDay1
วันอังคาร backup incremental level 1 ลงดิสก์, ก๊อปปี้ขึ้น TapeDay2
วันพุธ backup incremental level 1 ลงดิสก์, ก๊อปปี้ขึ้น TapeDay3
วันพฤหัส backup incremental level 1 ลงดิสก์, ก๊อปปี้ขึ้น TapeDay4
วันศุกร์ backup incremental level 1 ลงดิสก์, ก๊อปปี้ขึ้น TapeDay5
วันเสาร์ backup incremental level1 ลงดิสก์, ก๊อปปี้ขึ้น TapeDay6

-- เมื่อ backup level 0 จะได้ไฟล์ copy จาก database file จำนวน 4 ไฟล์ และ backupset ของ controlfile อีกหนึ่ง
-- เมื่อ backup level 1 cumulative จะได้ไฟล์ backupset (rman ไม่ support incremental level อื่น นอกจาก 0 กรณีเป็น backup copy ก็เลยมีแต่ backup set เท่านั้น) ของการเปลี่ยนแปลงรวมทั้ง 4 ไฟล์เป็นไฟล์เดียว และ backupset ของ controlfile อีกหนึ่ง
-- ไฟล์สุดท้ายที่เป็น incremental backup จะหายไม่ได้ เราไม่สามารถจะ recover จากไฟล์ incremental ก่อนหน้าได้ กรณีหายจริงๆ จะต้องใช้ recover database until cancel แทน recover database noredo แทน ซึ่งจะได้ข้อมูลคืนเท่ากับ level 0 (whole backup) เท่านั้น

No comments:

Post a Comment