อ่าน 3 นาที
บันทึกการทำซ้ำ
ในสภาพแวดล้อม ของ Oracle RDBMS ไฟล์ redo log ประกอบด้วยไฟล์ในรูปแบบเฉพาะที่บันทึกประวัติการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นกับ ฐานข้อมูล ไฟล์ redo log แต่ละไฟล์ประกอบด้วย redo record...
บันทึกการทำซ้ำ
ในสภาพแวดล้อมของ Oracle RDBMS ไฟล์ redo logประกอบด้วยไฟล์ในรูปแบบเฉพาะที่บันทึกประวัติการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นกับฐานข้อมูลไฟล์ redo log แต่ละไฟล์ประกอบด้วย redo record redo record หรือที่เรียกว่า redo entry จะเก็บกลุ่มของchange vector ซึ่งแต่ละ change vectorจะอธิบายหรือแสดงถึงการเปลี่ยนแปลงที่เกิดขึ้นกับบล็อกเดียวในฐานข้อมูล
ตัวอย่างเช่น หากผู้ใช้UPDATEแก้ไขค่าเงินเดือนในตารางที่มีข้อมูลเกี่ยวกับพนักงาน ระบบจัดการฐานข้อมูล (DBMS)จะสร้างเรคอร์ดแก้ไข (redo record) ที่มีเวกเตอร์การเปลี่ยนแปลง (change vector) ซึ่งอธิบายถึงการเปลี่ยนแปลงใน บล็อก ส่วนข้อมูลของตารางนั้น และหากผู้ใช้COMMITยืนยันการอัปเดตนั้น Oracle จะสร้างเรคอร์ดแก้ไขอีกรายการหนึ่งและกำหนด "หมายเลขการเปลี่ยนแปลงระบบ" (SCN) ให้กับการเปลี่ยนแปลงนั้น
เมื่อใดก็ตามที่มีการเปลี่ยนแปลงในไฟล์ข้อมูล Oracle จะบันทึกการเปลี่ยนแปลงนั้นลงในไฟล์บันทึกการทำซ้ำ (redo log) ชื่อไฟล์บันทึกการทำซ้ำบ่งบอกถึงวัตถุประสงค์ของมัน: หากฐานข้อมูลล่ม RDBMS สามารถทำซ้ำ (ประมวลผลใหม่) การเปลี่ยนแปลงทั้งหมดในไฟล์ข้อมูล ซึ่งจะทำให้ข้อมูลในฐานข้อมูลกลับไปสู่สถานะเดิมเมื่อมีการเขียนบันทึกการทำซ้ำครั้งล่าสุด ผู้ดูแลระบบฐานข้อมูล (DBA) ใช้มุมมองV$LOG, V$LOGFILE, V$LOG_HISTORYและV$THREADเพื่อค้นหาข้อมูลเกี่ยวกับไฟล์บันทึกการทำซ้ำของฐานข้อมูล ไฟล์บันทึกการทำซ้ำแต่ละไฟล์เป็นของกลุ่มเพียงกลุ่มเดียว (ซึ่งต้องมีอย่างน้อยสองกลุ่ม) หนึ่งในกลุ่มเหล่านี้คือกลุ่มปัจจุบัน (สามารถสอบถามได้โดยใช้คอลัมน์ status ของ v$log) Oracle ใช้กลุ่มปัจจุบันนั้นในการเขียนรายการบันทึกการทำซ้ำ เมื่อกลุ่มเต็มการสลับบันทึกจะเกิดขึ้น ทำให้กลุ่มอื่นกลายเป็นกลุ่มปัจจุบัน การสลับบันทึกแต่ละครั้งจะทำให้เกิดจุดตรวจสอบ (checkpoint) อย่างไรก็ตาม ในทางกลับกันนั้นไม่เป็นความจริง: จุดตรวจสอบจะไม่ทำให้เกิดการสลับบันทึกการทำซ้ำ นอกจากนี้ยังสามารถทำให้เกิดการสลับบันทึกการทำซ้ำด้วยตนเองโดยใช้ALTER SYSTEM SWITCH LOGFILEคำสั่ง
การจำแนกประเภท
ไฟล์บันทึกการทำซ้ำเกิดขึ้นสองประเภท: [ 1 ]
- บันทึกการทำซ้ำออนไลน์ (" ORL " [ 2 ]หรือ " บันทึกการทำซ้ำ " [ 3 ] เรียกสั้นๆ)
- บันทึกการทำซ้ำที่เก็บถาวร (" บันทึกการเก็บถาวร ") [ 4 ]
การใช้งาน
ก่อนที่ผู้ใช้จะได้รับข้อความ " Commit complete " ระบบจะต้องเขียนข้อมูลใหม่หรือข้อมูลที่เปลี่ยนแปลงลงในไฟล์ redo log ให้สำเร็จก่อน
ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ ( RDBMS) จะเขียนการเปลี่ยนแปลงทั้งหมดที่รวมอยู่ในธุรกรรมลงในบัฟเฟอร์บันทึกในพื้นที่ส่วนกลางของระบบ (SGA) ก่อน การใช้หน่วยความจำในลักษณะนี้สำหรับการบันทึกเบื้องต้นมีจุดประสงค์เพื่อลดการอ่านเขียนลงดิสก์ แน่นอนว่าเมื่อธุรกรรมเสร็จสมบูรณ์ บัฟเฟอร์บันทึกการทำซ้ำจะต้องถูกเขียนลงดิสก์ เพราะมิฉะนั้นจะไม่สามารถรับประกันการกู้คืนสำหรับธุรกรรมนั้นได้ กระบวนการ LGWR (Log Writer) จะทำหน้าที่เขียนข้อมูลลงดิสก์
การมี redo log ทำให้สามารถเล่นซ้ำคำสั่ง SQL ได้ ก่อนที่ฐานข้อมูล Oracle จะเปลี่ยนแปลงข้อมูลในไฟล์ข้อมูล ระบบจะเขียนการเปลี่ยนแปลงลงใน redo log หากเกิดอะไรขึ้นกับไฟล์ข้อมูลไฟล์ใดไฟล์หนึ่ง ขั้นตอนการกู้คืนสามารถกู้คืนไฟล์ข้อมูลที่สำรองไว้ จากนั้นเล่นซ้ำ redo ที่เขียนไว้ตั้งแต่เวลาสำรองข้อมูล ซึ่งจะทำให้ไฟล์ข้อมูลกลับมาอยู่ในสถานะเดิมก่อนที่จะไม่สามารถใช้งานได้ ฐานข้อมูลสแตนด์บายใน สภาพแวดล้อม Oracle Data Guardใช้เทคนิคเดียวกันนี้: ฐานข้อมูลหนึ่ง (ฐานข้อมูลหลัก) บันทึกการเปลี่ยนแปลงทั้งหมดและส่งไปยังฐานข้อมูลสแตนด์บาย ฐานข้อมูลสแตนด์บายแต่ละฐานจะนำ redo ที่ได้รับมาใช้ (เล่นซ้ำ) ส่งผลให้เกิดการซิงโครไนซ์กับฐานข้อมูลหลัก[ 5 ]
หากฐานข้อมูลล่ม กระบวนการ กู้คืนจะต้องนำธุรกรรมทั้งหมด ทั้งที่ยังไม่ได้ยืนยันและที่ยืนยันแล้ว ไปใช้กับไฟล์ข้อมูลบนดิสก์ โดยใช้ข้อมูลในไฟล์บันทึกการทำซ้ำ Oracle ต้องทำธุรกรรมบันทึกการทำซ้ำทั้งหมดที่มีทั้งรายการ a BEGINและ b COMMIT(roll forward) ซ้ำ และต้องยกเลิกธุรกรรมทั้งหมดที่มีBEGINรายการ a แต่ไม่มีCOMMITรายการ b (roll back) [ 6 ] (การทำธุรกรรมซ้ำในบริบทนี้หมายถึงการนำข้อมูลในไฟล์บันทึกการทำซ้ำไปใช้กับฐานข้อมูล ระบบไม่ได้เรียกใช้ธุรกรรมนั้นซ้ำ) ดังนั้น ระบบจึงสร้างธุรกรรมที่ยืนยันแล้วขึ้นใหม่โดยการนำบันทึก "ภาพหลัง" ในไฟล์บันทึกการทำซ้ำไปใช้กับฐานข้อมูล และยกเลิกธุรกรรมที่ไม่สมบูรณ์โดยใช้บันทึก "ภาพก่อน" ในพื้นที่ตารางยกเลิก
การบันทึกการเปลี่ยนแปลงข้อมูลสามารถอ่านบันทึกการทำซ้ำได้
ในการกำหนดค่า Oracle Data Guard บันทึก redo สแตนด์บายจะมีลักษณะคล้ายกับบันทึก redo ออนไลน์ที่เทียบเท่ากัน แต่ทำหน้าที่จัดเก็บข้อมูล redo ที่ส่งมาจากฐานข้อมูลอื่น[ 7 ]
ผลกระทบ
เนื่องจากกระบวนการบันทึกข้อมูลมีความละเอียดสูงบริษัท Oracleจึงมีวิธีการจัดเก็บไฟล์บันทึกการเปลี่ยนแปลง (archive-logs) ซึ่งสามารถนำไปใช้ในสถานการณ์การสำรองข้อมูลและฐานข้อมูลสำรองได้
การมีอยู่ของชุดธุรกรรมและการกระทำที่บันทึกไว้อย่างละเอียดเป็นรายบุคคลเป็นพื้นฐานของการปรับปรุงการจัดการข้อมูลหลายอย่าง เช่นOracle Flashback , การขุดค้นบันทึกและการกู้คืน ณ จุดเวลาใดเวลา หนึ่ง แนวคิดของการสร้างฐานข้อมูล[ 8 ] สามารถส่งผลต่อการใช้ redo ในการกู้คืนฐานข้อมูลได้
เพื่อ วัตถุประสงค์ ในการปรับแต่งฐานข้อมูลการจัดการกับไฟล์ redo log อย่างมีประสิทธิภาพจำเป็นต้องใช้ดิสก์ที่มีพื้นที่มากและเข้าถึงได้อย่างรวดเร็ว
ดูเพิ่มเติม
ลิงก์ภายนอก
- การจัดการ Redo Log (เอกสารประกอบของ Oracle)