Thứ Tư, 2 tháng 11, 2022

Di chuyển PDB sang CDB khác bằng kỹ thuật plug/unplug trong Oracle Database 12c, 19c

Mục đích: Di chuyển PDB sang CDB khác bằng kỹ thuật plug/unplug trong Oracle Database 12c, 19c 
Giới thiệu

 

Kiến trúc Multitenant được đưa ra trong phiên bản Oracle 12c, cho phép các database con (PDB) gắn vào database mẹ (CDB). Việc quản lý database trên kiến trúc mới này trở nên rất đơn giản và dễ hiểu.

 

Trong bài viết này, tôi sẽ hướng dẫn các bạn cách di chuyển PDB từ CDB này sang CDB khác. Bài toán này có thể xảy ra khi bạn muốn chuyển PDB sang 1 máy chủ khác có cấu hinh mạnh hơn, hoặc bạn muốn gom các database có cùng mục đích hoặc cùng 1 nhóm nghiệp vụ nào đó vào 1 CDB để cho dễ quản lý.

 

Các bước chính như sau::

  •    Đóng PDB cần di chuyển lại.
  •    Gỡ (Unplug) PDB ra khỏi CDB1
  •    Di chuyển các datafile cần thiết của PDB sang CDB2.
  •    Gắn (Plug) PDB vào CDB2


   Các bước tiến hành

   Môi trường và bài toán đặt ra

Tôi thực hiện bài toán này với phiên bản Oracle 12.1.0.2 và hệ điều hành Oracle Linux 7.4

Đây là thông tin CDB1

SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PRODPDB READ WRITE NO

Bài toán đặt ra: Tôi cần di chuyển PDB PRODPDB từ CDB1 sang CDB2 (2 CDB nằm trên 2 máy chủ khác nhau với đường dẫn lưu datafile khác nhau)

   Đóng PRODPDB lại

Đầu tiên bạn cần đóng PRODPDB lại để không còn session nào can thiệp trong quá trình bạn thực hiện unplug

alter pluggable database prodpdb close immediate;

Chú ý: Trước khi làm bất cứ hành động gì, bạn hãy chắc chắn là database của bạn đã được backup thành công trước đó để khôi phục lại khi cần.

   Gỡ (Unplug) PDB PRODPDB khỏi CDB1

alter pluggable database PRODPDB unplug into '/home/oracle/prodpdb.xml';

 Câu lệnh này sẽ xuất ra 1 file xml có lưu tất cả thông tin cấu trúc (metadata) của PRODPDB, để có thể khi mang PDB sang CDB mới, có thể plug vào được.

 

Bạn mang file xml tạo được ở bước trước sang CDB2 để kiểm tra xem PRODPDB có đủ điều kiện để gắn vào CDB2 không nhé.

SET SERVEROUTPUT ON
DECLARE
l_result BOOLEAN;
BEGIN
l_result := DBMS_PDB.check_plug_compatibility(
pdb_descr_file => '/home/oracle/prodpdb.xml',
pdb_name => 'PRODPDB');
IF l_result THEN
DBMS_OUTPUT.PUT_LINE('Compatible!!!');
ELSE
DBMS_OUTPUT.PUT_LINE('Incompatible!!!');
END IF;
END;
/

Nếu kết quả trả về là Compatible là được.

   Kiểm tra đường dẫn lưu datafile của PDB

select file_name, con_id from cdb_data_files where con_id=3
FILE_NAME CON_ID
------------------------------------------------------------ ----------
/u01/app/oracle/oradata/CDB1/prodpdb/system01.dbf 3
/u01/app/oracle/oradata/CDB1/prodpdb/sysaux01.dbf 3
/u01/app/oracle/oradata/CDB1/prodpdb/undotbs01.dbf 3
/u01/app/oracle/oradata/CDB1/prodpdb/users01.dbf 3

(PRODPDB có con_id là 3, đã kiểm tra ở bước trên)

 

Như vậy các datafile của PRODPDB nằm trong thư mục /u01/app/oracle/oradata/CDB1/prodpdb

   Drop PDB khỏi CDB1

drop pluggable database PRODPDB keep datafiles;

 

Câu lệnh trên sẽ xóa PDB PRODPDB khỏi CDB1 nhưng vẫn giữ lại các datafile của nó

 

Kiểm tra lại bạn sẽ thấy PRODPDB đã biến mất trong CDB1

SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO

 

Như vậy bạn đã hoàn thành việc unplug PDB khỏi CDB

   Gắn (Plug) PRODPDB vào CDB2

 

Bây giờ, bạn copy các datafile của PRODPDB nằm trong thư mục /u01/app/oracle/oradata/CDB1/prodpdb sang đường dẫn /u01/app/oracle/oradata/CDB2/prodpdb nằm trên CDB2

create pluggable database PRODPDB using '/home/oracle/prodpdb.xml' NOCOPY
SOURCE_FILE_NAME_CONVERT=('/u01/app/oracle/oradata/CDB1/prodpdb','/u01/app/oracle/oradata/CDB2/prodpdb');

Tham số SOURCE_FILE_NAME_CONVERT cho phép bạn thay đổi đường dẫn datafile cũ của PRODPDB trên CDB1 sang đường dẫn mới trên CDB2


   Cuối cùng là open PDB

alter pluggable database prodpdb open;

 Như vậy tôi đã hướng dẫn xong các bạn các bước để plug unplug PDB trong Oracle Database. Hẹn gặp lại các bạn ở các bài viết tiếp theo.

Hy vọng hữu ích cho bạn.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master