เผยแพร่ครั้งแรกโดย TriCore:29 สิงหาคม 2017
Oracle® เวอร์ชัน 12c เสนอตัวเลือกฐานข้อมูลแบบหลายผู้เช่าสำหรับโฮสต์ฐานข้อมูลแบบเสียบได้หลายรายการ (PDB) ที่มีฐานข้อมูลคอนเทนเนอร์เดียว (CDB) บางครั้ง คุณต้องแปลงฐานข้อมูลที่ไม่ใช่ CDB เป็นฐานข้อมูลแบบเสียบได้ CDB บล็อกนี้อธิบายวิธีการที่คุณสามารถใช้เพื่อแปลงฐานข้อมูลที่ไม่ใช่ CDB เป็นฐานข้อมูล CDB
การตั้งค่ากรณีทดสอบ
สถานการณ์การทดสอบนี้เริ่มต้นด้วยอินสแตนซ์ฐานข้อมูลที่ไม่ใช่ CDB noncdb12c
ที่กำลังทำงานอยู่บนเครื่อง ABC123.xyz.com
. งานคือการสร้างฐานข้อมูล CDB cdb12c
,ในเครื่องเดียวกัน. คุณต้องแน่ใจว่าคุณมีพื้นที่ดิสก์เพียงพอที่จะเก็บฐานข้อมูล CDB ที่แปลงแล้ว
โฮสต์เซิร์ฟเวอร์ :ABC123.xyz.com
ฐานข้อมูลที่ไม่ใช่ CDB :noncdb12c
เวอร์ชัน Oracle :12.1.0.2
รูปภาพต่อไปนี้แสดงสถานการณ์การทดสอบ:
การทดสอบ Conversion
ใช้ขั้นตอนในส่วนนี้เพื่อแปลงฐานข้อมูลที่ไม่ใช่ CDB เป็นฐานข้อมูล CDB
ขั้นตอนที่ 1:ทำการปิดระบบใหม่ทั้งหมด
ทำตามขั้นตอนต่อไปนี้เพื่อปิดฐานข้อมูลที่ไม่ใช่ CDB อย่างหมดจด:
-
ตั้งค่าสภาพแวดล้อมเป็น
noncdb12c
. -
ดำเนินการคำสั่งต่อไปนี้:
sqlplus / as sysdba
-
เรียกใช้รหัสต่อไปนี้ที่พรอมต์ SQL:
shutdown immediate
ขั้นตอนที่ 2:เปิดฐานข้อมูลเป็นแบบอ่านอย่างเดียว
หลังจากที่คุณปิดฐานข้อมูลอย่างหมดจดแล้ว ให้ทำตามขั้นตอนต่อไปนี้เพื่อเริ่มฐานข้อมูลในโหมดเมานต์เอกสิทธิ์เฉพาะบุคคล และเปิดฐานข้อมูลในโหมดอ่านอย่างเดียว:
-
ตั้งค่าสภาพแวดล้อมเป็น
noncdb12c
. -
ดำเนินการคำสั่งต่อไปนี้:
sqlplus / as sysdba
-
เรียกใช้รหัสต่อไปนี้ที่พรอมต์ SQL:
startup mount exclusive alter database open read only;
ขั้นตอนที่ 3:สร้างไฟล์รายการ PDB
ทำตามขั้นตอนต่อไปนี้เพื่อสร้างไฟล์รายการ PDB จากที่ไม่ใช่ CDB:
-
ตั้งค่าสภาพแวดล้อมเป็น
noncdb12c
. -
ดำเนินการคำสั่งต่อไปนี้:
sqlplus / as sysdba
-
เรียกใช้รหัสต่อไปนี้ที่พรอมต์ SQL:
exec dbms_pdb.describe (pdb_descr_file=>'/tmp/noncdb12c_manifest_file.xml');
ขั้นตอนที่ 4:ปิดระบบที่ไม่ใช่ CDB
ทำตามขั้นตอนต่อไปนี้หลังจากขั้นตอนที่ 3 เสร็จสิ้นเพื่อปิดไฟล์ที่ไม่ใช่ CDB
-
ตั้งค่าสภาพแวดล้อมเป็น
noncdb12c
. -
ดำเนินการคำสั่งต่อไปนี้:
sqlplus / as sysdba
-
เรียกใช้รหัสต่อไปนี้ที่พรอมต์ SQL:
shutdown immediate
ขั้นตอนที่ 5:เริ่ม CDB
หาก CDB ไม่ได้ทำงานอยู่ ให้ทำตามขั้นตอนต่อไปนี้เพื่อเริ่มต้นและตรวจสอบความเข้ากันได้:
-
ตั้งค่าสภาพแวดล้อมเป็น
cdb12c
. -
ดำเนินการคำสั่งต่อไปนี้:
sqlplus / as sysdba
-
เรียกใช้รหัสต่อไปนี้ที่พรอมต์ SQL:
startup SET SERVEROUTPUT ON; DECLARE Compatible CONSTANT VARCHAR2(3) :=CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY (pdb_descr_file => '/tmp/noncdb12c_manifest_file.xml') WHEN TRUE THEN 'YES' ELSE 'NO' END; BEGIN DBMS_OUTPUT.PUT_LINE(compatible); END; /
ขั้นตอนที่ 6:ตรวจสอบข้อผิดพลาด
หลังจากการเริ่มต้นฐานข้อมูล CDB เสร็จสมบูรณ์ ให้ทำตามขั้นตอนต่อไปนี้เพื่อตรวจสอบข้อผิดพลาดใน PDB_PLUG_IN_VIOLATIONS
มุมมอง:
-
ตั้งค่าสภาพแวดล้อมเป็น
cdb12c
. -
ดำเนินการคำสั่งต่อไปนี้:
sqlplus / as sysdba
-
เรียกใช้รหัสต่อไปนี้ที่พรอมต์ SQL:
startup SELECT name, cause, type, message, status FROM PDB_PLUG_IN_VIOLATIONS WHERE name='NONCDB12C';
หมายเหตุ :หากมีข้อผิดพลาดให้แก้ไขก่อนดำเนินการต่อ
ขั้นตอนที่ 7:เชื่อมต่อกับ CDB และเสียบเข้ากับ PDB
ทำตามขั้นตอนต่อไปนี้เพื่อเชื่อมต่อกับ CDB และเสียบเข้ากับฐานข้อมูล PDDB12C โดยใช้ไฟล์ Manifest ที่ไม่ใช่ CDB:
-
ตั้งค่าสภาพแวดล้อมเป็น
cdb12c
. -
ดำเนินการคำสั่งต่อไปนี้:
sqlplus / as sysdba
-
เรียกใช้รหัสต่อไปนี้ที่พรอมต์ SQL:
CREATE PLUGGABLE DATABASE pdb12c USING '/tmp/noncdb12c_manifest_file.xml' COPY FILE_NAME_CONVERT = ('<Datafile_Location_for_noncdb>', 'Datafile_Location_for_pdb');
หมายเหตุ :รองรับตัวเลือกต่อไปนี้ และคุณสามารถเลือกได้ตามสภาพแวดล้อมของคุณ:
- คัดลอก :ไฟล์ข้อมูลของ
noncdb
ยังคงไม่บุบสลาย และnoncdb
ถูกคัดลอกเพื่อสร้าง PDB ที่ตำแหน่งใหม่และเก็บไฟล์ข้อมูลเดิมไว้ที่ตำแหน่งเดิม ซึ่งหมายความว่าฐานข้อมูล noncdb ยังคงทำงานอยู่หลังจากสร้าง PDB แล้ว - ย้าย :ไฟล์ข้อมูลของ
noncdb
ถูกย้ายไปยังตำแหน่งใหม่เพื่อสร้าง PDB ในกรณีนี้noncdb
ฐานข้อมูลไม่พร้อมใช้งานหลังจากสร้าง PDB แล้ว - NOCOPY :ไฟล์ข้อมูลของ
noncdb
ใช้เพื่อสร้าง PDB2 และใช้ตำแหน่งเดียวกับnoncdb
. ในกรณีนี้noncdb
ฐานข้อมูลไม่พร้อมใช้งานหลังจากสร้าง PDB แล้ว
คุณสามารถใช้ FILE_NAME_CONVERT
พารามิเตอร์เพื่อระบุตำแหน่งใหม่ของ thedatafiles ในขณะที่ใช้ COPY หรือ ย้าย ตัวเลือก
ขั้นตอนที่ 8:เรียกใช้สคริปต์การแปลง
หลังจากขั้นตอนที่ 7 เสร็จสมบูรณ์ ให้ทำตามขั้นตอนต่อไปนี้เพื่อสลับไปยังคอนเทนเนอร์ PDB และเรียกใช้สคริปต์การแปลง $ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
:
-
ตั้งค่าสภาพแวดล้อมเป็น
cdb12c
. -
ดำเนินการคำสั่งต่อไปนี้:
sqlplus / as sysdba
-
เรียกใช้รหัสต่อไปนี้ที่พรอมต์ SQL:
alter session set container=pdb12c @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
ขั้นตอนที่ 9:เริ่ม PDB และตรวจสอบโหมด
ทำตามขั้นตอนต่อไปนี้เพื่อเริ่ม PDB และตรวจสอบว่าโหมด เปิด :
-
ตั้งค่าสภาพแวดล้อมเป็น
cdb12c
. -
ดำเนินการคำสั่งต่อไปนี้:
sqlplus / as sysdba
-
เรียกใช้รหัสต่อไปนี้ที่พรอมต์ SQL:
alter pluggable database open; SELECT name, open_mode FROM v$pdbs;
บทสรุป
เมื่อคุณแปลงฐานข้อมูลที่ไม่ใช่ CDB เป็นฐานข้อมูลแบบเสียบได้ CDB คุณสามารถเลือกจากตัวเลือกต่างๆ ได้ขึ้นอยู่กับขนาดของฐานข้อมูล
หากฐานข้อมูลมีขนาดใหญ่มาก คุณอาจใช้ NOCOPY ตัวเลือก. วิธีนี้ช่วยลดจำนวนพื้นที่เพิ่มเติมที่จำเป็นและลดเวลาที่ใช้ในการดำเนินการแปลง NOCOPY ตัวเลือกมีความเสี่ยง อย่างไรก็ตาม เนื่องจากคุณไม่ได้เก็บไฟล์ฐานข้อมูลเดิมไว้ ดังนั้น หากคุณต้องการกู้คืนฐานข้อมูลเป็นสถานะก่อนหน้า คุณต้องกู้คืนฐานข้อมูลโดยใช้ข้อมูลสำรองที่ดำเนินการก่อนกิจกรรมการแปลง
ถ้าฐานข้อมูลมีขนาดเล็กลง คุณควรใช้ COPY เพื่อที่ว่าหากมีปัญหาใด ๆ ทางเลือกสำรองของ non-CDB แบบเก่านั้นตรงไปตรงมาเพราะไฟล์ต้นฉบับจะไม่เสียหายเสมอ
ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม
เรียนรู้เพิ่มเติมเกี่ยวกับบริการแอปพลิเคชัน Rackspace