จากการขั้นตอนติดตั้ง Oracle Data Guard 11gR2 (Primary & Standby Database)

  • เครื่อง Standby ตอนแรกนั้น ผมใช้วิธี Create Standby Using DUPLICATE โดยวิธี duplicate ผ่าน rman นั้นจะทำการสร้าง Standby Redo Logs บน Standby Server ให้เอง แต่ต้องสร้าง Standby Redo Logs บน Primary Server ไว้ก่อน
  • สาเหตุที่ควรต้องมี Standby Redo Logs บน Primary Server ก็เผื่อกรณีที่ว่ามีการสวิตซ์ Primary เป็น Standby กรณีเกิดปัญหาขึ้นกับตัว Primary เองซึ่งต้องโปรโมท Standby ขึ้นมาใช้งานก่อน จะได้ไม่ติดปัญหาต่อไป
  • กลับกัน กรณีที่ต้องมี Redo Logs บน Standby Server ก็เป็นกรณีที่โปรโมท Standby ให้เป็น Primary Server ในอนาคตนั้นเอง
  • ดังนั้นทำให้แต่ละ Primary & Standby Database จะประกอบด้วย Redo Logs Group ในแต่ละเครื่อง ด้วยกัน 2 group คือ
    • Normal Redo Logs Group (เหมือนเครื่อง Oracle Database Standalone ทั่วไป)
    • Standby Redo Logs Group

ดังนั้นเวลาเปลี่ยนขนาด Redo Logs ของ Member ใน Group ควรเปลี่ยนทั้ง 2 Group ข้างต้น
ส่วนสาเหตุที่เราจำเป็นต้องเปลี่ยนขนาดของ Redo Logs นั้น เกิดการ switches redo logs rate ต่อ ชม. เยอะเกินค่าแนะนำทั่วไป
มาจากบทความที่แล้ว How to check the frequency of redo log switches ? 

ขั้นตอน Resizing Redo Logs in Data Guard

ล้อตามลิงค์ในส่วน Resources ด้านล่าง / แล้วเรียบเรียง / เพิ่มเติมกรณีต้องการใช้ Redo Logs Group ให้เป็นเลขเรียงกัน

  1. ssh เข้าไปยัง Primary & Standby Server
  2. ตรวจสอบ database_role ปัจจุบันว่าตรงตามที่เรา configuration ไว้ก่อนหน้าหรือไม่ ?
    เครื่อง Primary Server

    เครื่อง Standby Server
  3. มาดูเฉพาะฝั่ง Primary Server ก่อน สามารถลบเฉพาะ Group สถานะ INACTIVE และ UNASSIGNED เท่านั้น
    กรณีที่ต้องการให้ชื่อ Group เรียงกัน และ ให้ทำขั้นตอน Drop Standby Redo Logs Group ก่อน
    เช่น ผมต้องการ Group 1 – 5 เป็น Redo Logs Group และ 6 – 8 เป็น Standby Redo Logs Group

    ** บนเครื่อง Primary ตัว Redo Logs ธรรมดาจะทำงาน ดังนั้น สามารถเริ่มทำ Standby Redo Logsได้ก่อน **

    – กรณีที่ไม่มี Group INACTIVE จำเป็นต้องเพิ่ม Group ใหม่เข้าไป แล้วทำการ alter system switch logfile; หลายรอบหน่อย;
    เบื้องต้นไม่จำเป็นต้องทำคำสั่ง alter system checkpoint; ก่อนนะ ให้ทดลองทำการ alter system switch logfile; ไปก่อนแทนครับ (*กรณีจำเป็น เช่น รอนานแล้ว log ไม่เปลี่ยนสถานะจาก ACTIVE เป็น INACTIVE สักที)
    – แล้วรอจน status ของ Group เป็น INACTIVE แล้วค่อย drop แล้ว create group ชื่อเดิม / เปลี่ยนขนาด size / ใช้ชื่อ filename เดิมผ่าน REUSE option

    เสร็จสิ้นขั้นตอนฝั่ง Primary Server แล้ว
    จะมาทำฝั่ง Primary อีกครั้งในการ switch logfile บน Primary เพื่อ switch logfile ในฝั่ง Standby Server
    _

  4. มาดูฝั่ง Standby  เหมือนฝั่ง Primary Server / Drop ได้เฉพาะ status เป็น CLEARING และ UNASSIGNED เท่านั้น
    กรณีที่ต้องการให้ชื่อ Group เรียงกัน และ ให้ทำขั้นตอน Drop Standby Redo Logs Group ก่อน
    เช่น ผมต้องการ Group 1 – 5 เป็น Redo Logs Group และ 6 – 8 เป็น Standby Redo Logs Group

    ** ก่อนอื่นต้องปรับ standby_file_management เป็น Manual และยกเลิก apply log process จาก Primary **


    ** บนเครื่อง Standby ตัว Standby Redo Logs จะทำงาน ดังนั้น สามารถเริ่มทำ Redo Logs ธรรมดาได้ก่อน **

    ทำการ switch logfile บนฝั่ง Primary เพื่อให้ Redo Logs บนฝั่ง Standby rotate ด้วย

    มาดูฝั่ง Standby และทำการแก้ไข Group 1 พร้อมปรับขนาดจาก 50M Size เป็น 200M ด้วย

    ยังคงเหลือ Group 4, 5 ที่ถูกใช้งานใน Standby Logs Group อยู่ ค้างไว้ก่อน / ข้ามไปทำ Standby Logs Group ต่อไป
    มาดู Standby Logs Group บน Standby Server กัน ( Drop -> Group 4 , 5, 6 | Create -> Group 6, 7, 8 )

    Group 4 Active อยู่ข้ามไปก่อน / ลบ Group 5 , 6 / สร้าง 6 – 8 โลด

    ส่วนการเปลี่ยนสถานะของ Group 4 ให้เป็น INACTIVE ต้องมีการ switch log file ที่เครื่อง Primary เพื่อให้ redo logs rotate

    มาดูเครื่อง Standby ต่อ

    บนเครื่อง Standby ไปทำ Group 4, 5 ที่ยังเหลือการทำอยู่ใน Redo Logs Group
  5. ปรับ standby_file_management เป็น AUTO และเริ่มทำการ apply log จากเครื่อง Primary ตามเดิม
  6. อ่านมาถึงตรงนี้แล้ว… มีคำถามหรือไม่ว่า Redo Logs & Standby Redo Logs ไม่กำหนดจำนวน Group เท่าไปกันเลย ?
    เพื่อต้องการให้เห็น Group ชัดเจนในการยกตัวอย่างเลยขอแยกชุดเป็น 1 – 5 และ 6 – 8 ครับ
    หากไม่ติดขัดเรื่อง disk space หรือข้อจำกัดอื่นๆ ที่ชัดเจน ควรกำหนดให้ Group & Size เท่ากันไปเลย
    เพราะเครื่อง Primary ใช้ Redo Logs Group ธรรมดา และ เครื่อง Standby ใช้ Standby Redo Logs Group นั้นเอง 🙂
    v$log and v$standby_log บนเครื่อง Standby
    Redo Logs & Standby Redo Logs (Standby Database)

Resources

Resizing Redo Logs in Data Guard (Primary & Standby Database)