Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต

ส่วนหนึ่งของชุดข้อมูลจะแนะนำ Oracle® refreshable clones รวมถึงเวลาและเหตุผลในการใช้งาน ในโพสต์นี้ ฉันสาธิตวิธีการตั้งค่า กำหนดค่า บำรุงรักษา และวางฐานข้อมูลโคลนที่สามารถรีเฟรชได้ (PDB) ใน Oracle 18c

ข้อกำหนดเบื้องต้นสำหรับ PDB โคลนที่รีเฟรชได้

หากต้องการติดตามการสาธิตนี้ ให้ทำตามข้อกำหนดเบื้องต้นต่อไปนี้:

  1. มีลิงก์ฐานข้อมูลสำหรับโคลนที่สร้างขึ้นใหม่ซึ่งชี้ไปที่โลคัลหรือคอนเทนเนอร์ระยะไกล

  2. ตั้งค่า archive_log_mode เพื่อ enabled .

  3. ใช้ระบบวิศวกรรมหรือ Enterprise Edition (EE) Oracle Cloud หากไม่มีในแพลตฟอร์มหรือเวอร์ชันเดียวกัน ให้ตั้งค่าพารามิเตอร์ที่ซ่อนอยู่ _exadata_feature_on ถึง True สำหรับการสาธิตนี้

  4. ตั้งค่า local_undo_mode เพื่อ enabled .

คุณสามารถตั้งค่า PDB ที่รีเฟรชได้ใน CLOSED หรือ เปิดอ่านเท่านั้น โหมดและใน เปิดอ่านเท่านั้น โหมดสำหรับการค้นหาหลังจากรีเฟรช

สิ่งแวดล้อม

สำหรับการสาธิตนี้ ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมของคุณเป็นไปตามข้อกำหนดต่อไปนี้:

  • ติดตั้ง Oracle 18c และปฏิบัติตามข้อกำหนดเบื้องต้นบนเครื่องและฐานข้อมูล

  • สำหรับบทบาทของฐานข้อมูลการผลิต:

    • ตั้งชื่อฐานข้อมูลคอนเทนเนอร์ (CDB):YCDB1

    • ตั้งชื่อ PDB:PURCH_PDB

  • สำหรับบทบาทของ PDB โคลนที่รีเฟรชได้:

    • ตั้งชื่อ CDB:XCDB1

    • ตั้งชื่อ PDB:PDB2_REFRO

    • ตั้งค่า PDB ให้รีเฟรชอัตโนมัติทุกๆ 30 นาที

  • สร้างลิงค์ฐานข้อมูลสาธารณะโดยใช้ create_pdb บน XCDB . ลิงก์ควรชี้ไปที่ PURCH_PDB บน YCDB .

- ดำเนินการคำสั่ง Transparent Network Substrate (TNS) ต่อไปนี้:

purch_pdb=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tejashost2.localdomain)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = purch_pdb)))

XCDB1=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tejashost2.localdomain)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XCDB1)))

YCDB1=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tejashost2.localdomain)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = YCDB1)))

สาธิต

การสาธิตนี้ดำเนินกิจกรรมดังต่อไปนี้:

  • ตั้งค่าสภาพแวดล้อม

  • ค้นหาโหมดรีเฟรชของฐานข้อมูลที่ใช้งานจริง

  • แสดงวิธีรีเฟรชโหมดของโคลนที่รีเฟรชได้ รวมถึงการปิดใช้งานการรีเฟรชบนโคลนที่รีเฟรชได้

  • สลับระหว่างการผลิตและโคลนที่รีเฟรชได้

ตั้งค่าสภาพแวดล้อมการโคลนที่รีเฟรชได้:

สำหรับสภาพแวดล้อมการโคลนที่รีเฟรชได้ ให้ดำเนินการดังต่อไปนี้

สิ่งที่ควรทำใน YCDB1:
  1. สร้างฐานข้อมูลที่ใช้งานจริงแล้วเปิดขึ้นมา
ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต
  1. นำเข้าข้อมูลจาก EXPDP ดัมพ์ที่คุณถ่ายโดยใช้ impdp ยูทิลิตี้หรือนำเข้าสคีมา HR ไปยัง PURCH_PDB . สำหรับตัวอย่างนี้ นำเข้าสคีมา HR โดยเรียกใช้สคริปต์ต่อไปนี้บนฐานข้อมูล:

     @?/demo/schema/human_resources/hr_main.sql
    

หลังจากเสร็จสิ้น ตรวจสอบรายละเอียดสคีมา HR ดังแสดงในรูปต่อไปนี้:

ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต
การดำเนินการที่ต้องทำบน XCDB1:
  1. สร้างลิงค์ฐานข้อมูลเพื่อชี้ไปที่ฐานข้อมูลที่ใช้งานจริง PURCH_PDB .

  2. สร้าง PDB ที่รีเฟรชได้ ตั้งระยะเวลาการรีเฟรชเป็นทุกๆ 30 นาที และตรวจสอบว่าข้อมูลได้รับการรีเฟรช

คุณสามารถใช้แอตทริบิวต์ทั้งหมดได้เมื่อคุณสร้าง PDB ที่คุณวางแผนที่จะใช้เพื่อสร้างฐานข้อมูลในตำแหน่งอื่น ตัวอย่างเช่น ในการแก้ไขตำแหน่งไฟล์ข้อมูล PDB ให้ใช้ CREATE_FILE_DEST หรือ FILE_NAME_CONVERT .

การเพิ่มเพียงอย่างเดียวคือ โหมดรีเฟรช คุณลักษณะ. เพื่อให้การสาธิตนี้ง่ายขึ้น ฉันไม่ได้เพิ่มแอตทริบิวต์ทางเลือกใดๆ

ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต

ค้นหาโหมดรีเฟรชและรายละเอียดฐานข้อมูลที่ใช้งานจริง

คุณสามารถสอบถามตาราง DBA_PDBS เพื่อตรวจสอบรายละเอียดของโหมด PDB ที่รีเฟรชได้ สถานะ การรีเฟรชล่าสุด SCN และรายละเอียดฐานข้อมูลการผลิตหลัก สำหรับPDB2_REFRO PDB ตรวจสอบผลลัพธ์ตามที่แสดงในตัวอย่างต่อไปนี้:

ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต

หลังจากที่คุณทำงานเสร็จแล้ว คุณควรแปลง PDB ที่รีเฟรชได้กลับไปเป็นMOUNTED โหมดสำหรับการรีเฟรชอย่างต่อเนื่องตามกำหนดเวลา ใช้คำสั่งต่อไปนี้เพื่อทำกิจกรรมนี้ open_mode.sql ใช้ที่นี่คือ aquery เพื่อตรวจสอบ open_mode ปัจจุบันของฐานข้อมูล

คุณอาจเห็นข้อผิดพลาดต่อไปนี้หากคุณไม่ได้ปิดอินสแตนซ์ฐานข้อมูลเพื่อรีเฟรช:

ORA-65025: Pluggable database is not closed on all instances
ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต

เปลี่ยนโหมดรีเฟรชของโคลนที่รีเฟรชได้

คุณสามารถเปลี่ยนโหมดของโคลนที่รีเฟรชได้ดังนี้:

  • เปลี่ยนการรีเฟรชด้วยตนเองเป็นการรีเฟรชอัตโนมัติ

  • เปลี่ยนการรีเฟรชอัตโนมัติเป็นการรีเฟรชด้วยตนเอง

  • ปิดใช้งานการรีเฟรชจากโหมดรีเฟรชอัตโนมัติหรือด้วยตนเอง

แปลงการรีเฟรชด้วยตนเองเป็นการรีเฟรชอัตโนมัติและในทางกลับกัน

หมายเหตุ :คุณไม่สามารถเปลี่ยนโหมดรีเฟรช PDB เมื่อเข้าสู่ระบบ PDB อื่น ตัวอย่างเช่น คุณไม่สามารถเปลี่ยนโหมดของ XPDB ขณะเข้าสู่ระบบ YPDB . หากคุณลอง จะเกิดข้อผิดพลาดต่อไปนี้:

ORA-65118: operation affecting a pluggable database cannot be performed from
another pluggable database.
ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต

ในโหมดรีเฟรชด้วยตนเอง คุณสามารถรีเฟรช PDB ที่โคลนไว้ได้ตามต้องการโดยใช้คำสั่งต่อไปนี้:

ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต
ปิดใช้งานการรีเฟรช PDB และแปลงโคลนแบบอ่านอย่างเดียวเป็นแบบอ่านอย่างเดียว ฐานข้อมูลที่เปิดใช้งานการเขียน

คุณสามารถปิดใช้งานโหมดรีเฟรชของ PDB เพื่อแปลงโคลนที่รีเฟรชได้ของคุณเป็นโหมดอ่าน-เขียนได้

หมายเหตุ :หลังจากที่คุณปิดใช้งานการรีเฟรชสำหรับฐานข้อมูลแบบเสียบได้ คุณจะไม่สามารถเปิดใช้งานได้อีก คุณต้องสร้าง PDB ใหม่เพื่อให้เป็น PDB ที่รีเฟรชได้ หากคุณพยายามที่จะแปลงจาก NONE โหมดรีเฟรชเป็นโหมดรีเฟรช คุณได้รับข้อผิดพลาดดังต่อไปนี้:

ORA-65261: pluggable database PDB2_REFRO3 not enabled for refresh.
ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต

หลังจากที่คุณปิดใช้งานการรีเฟรช PDB จะมีสิทธิ์อ่าน-เขียน

ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต

เปลี่ยนจากการผลิตเป็นโคลนที่รีเฟรชได้และในทางกลับกัน

ก่อน Oracle 18c คุณต้องดำเนินการตามขั้นตอนทั้งหมดเพื่อสลับบทบาท ซึ่งรวมถึงการปิดบทบาทหลักและการเปิดเป็นแบบอ่านอย่างเดียว

ในการสาธิตนี้ ฉันทำสิ่งต่อไปนี้:

  1. สร้างผู้ใช้ C##SWITCHUSER บนฐานข้อมูลคอนเทนเนอร์ XCDB1 และ YCDB1 โดยใช้การอนุญาตเชื่อมต่อ sysoper .

  2. สร้างลิงก์ฐานข้อมูล กะพริบ ชี้ไปที่ฐานข้อมูลคอนเทนเนอร์อื่นใน YCDB1 , สร้าง dblink, XCDB1SYSOPER เพื่อเชื่อมต่อ XCDB1 . ใช้มุมมองฐานข้อมูล DBA_DB_LINKS และ V$DATABASE เพื่อรวบรวมรายละเอียดฐานข้อมูลหลังจากสร้างลิงค์ฐานข้อมูลแล้ว

  3. เปิดฐานข้อมูลโคลนที่รีเฟรชได้เป็นแบบอ่านอย่างเดียว

  4. เรียกใช้คำสั่งเปลี่ยน

  5. ตรวจสอบสถานะฐานข้อมูลและโหมดเปิดหลังจากสลับการผลิตและฐานข้อมูลโคลนที่รีเฟรชได้

สิ่งที่ควรทำใน YCDB1:

ทำตามข้อกำหนดเบื้องต้นที่ 1 ถึง 3 ก่อนดำเนินการคำสั่งเปลี่ยน

รายละเอียดลิงค์ฐานข้อมูล:

ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต
การดำเนินการที่ต้องทำบน XCDB1

ตรวจสอบรายละเอียดลิงก์ฐานข้อมูลและค้นหาฐานข้อมูลโหมดเปิด โดยใช้DBA_DB_LINKS และ V$DATABASE .

ใช้คุณสมบัติโคลนที่รีเฟรชได้ของ Oracle Database—ส่วนที่สอง:การสาธิต

หลังจากการเปลี่ยนเสร็จสมบูรณ์ PDB ต้นทางดั้งเดิม PURCH_PDB กลายเป็น PDB โคลนที่รีเฟรชได้ PDB นี้อยู่ใน MOUNT สถานะ และจากนี้ไปเปิดได้เฉพาะใน อ่านอย่างเดียว โหมด. ในทางตรงกันข้าม โคลนต้นฉบับที่รีเฟรชได้ PDB PDB2_REFRO เปิดให้อ่านแล้วใน อ่าน หรือ เขียน โหมดและทำหน้าที่เป็น PDB ต้นทาง

สรุป:

คุณไม่ควรพิจารณาคุณลักษณะ PDB โคลนที่รีเฟรชได้เพื่อแทนที่ Data Guard จากมุมมองของความพร้อมใช้งานสูง อย่างไรก็ตาม คุณสามารถใช้ arefreshable clone เพื่อรักษาฐานข้อมูลจำลองบนเซิร์ฟเวอร์อื่นได้

โพสต์นี้อธิบายวิธีใช้ PDB ที่รีเฟรชได้เป็นแบบจำลอง เพื่อให้คุณดำเนินการกับแอปพลิเคชันที่โหลดต่ำและไม่สำคัญต่อได้ ไม่ว่าสวิตช์จะเป็นเหตุการณ์ที่วางแผนไว้หรือไม่ได้วางแผนไว้ โปรดจำไว้ว่า คุณควรพิจารณาการสับเปลี่ยนจากมุมมองของ Recovery Time Objectives (RTOs, time to resume operation) และ Recovery Point Objectives (RPOs เช่น การสูญเสียข้อมูลน้อยที่สุด)

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังแชทตอนนี้เพื่อเริ่มการสนทนาได้

เรียนรู้เพิ่มเติมเกี่ยวกับฐานข้อมูล