Được xuất bản lần đầu bởi TriCore:29 tháng 8, 2017
Oracle® phiên bản 12c cung cấp các tùy chọn cơ sở dữ liệu nhiều đối tượng cho các cơ sở dữ liệu có thể kết hợp nhiều lưu trữ (PDB) với một cơ sở dữ liệu vùng chứa duy nhất (CDB). Đôi khi, bạn cần chuyển đổi cơ sở dữ liệu không phải CDB thành cơ sở dữ liệu có thể cắm CDB. Blog này mô tả các phương pháp mà bạn có thể sử dụng để chuyển đổi cơ sở dữ liệu không phải CDB thành cơ sở dữ liệu CDB.
Thiết lập trường hợp thử nghiệm
Kịch bản thử nghiệm này bắt đầu với phiên bản cơ sở dữ liệu không phải CDB, noncdb12c
, đang chạy trên máy ABC123.xyz.com
. Nhiệm vụ là tạo CDBdatabase, cdb12c
, trên cùng một máy. Bạn cần đảm bảo rằng bạn có đủ dung lượng đĩa để chứa cơ sở dữ liệu CDB đã chuyển đổi.
Máy chủ lưu trữ :ABC123.xyz.com
Cơ sở dữ liệu không phải CDB :noncdb12c
Phiên bản Oracle :12.1.0.2
Hình ảnh sau đây cho thấy kịch bản thử nghiệm:
Kiểm tra chuyển đổi
Sử dụng các bước trong phần này để chuyển đổi cơ sở dữ liệu không phải CDB sang cơ sở dữ liệu CDB.
Bước 1:Tiến hành tắt hoàn toàn
Thực hiện các bước sau để tắt hoàn toàn cơ sở dữ liệu không phải CDB:
-
Đặt môi trường thành
noncdb12c
. -
Thực hiện lệnh sau:
sqlplus / as sysdba
-
Chạy mã sau tại dấu nhắc SQL:
shutdown immediate
Bước 2:Mở cơ sở dữ liệu dưới dạng chỉ đọc
Sau khi bạn đã tắt hoàn toàn cơ sở dữ liệu, hãy thực hiện các bước sau để khởi động cơ sở dữ liệu ở chế độ gắn kết độc quyền và mở cơ sở dữ liệu ở chế độ chỉ đọc:
-
Đặt môi trường thành
noncdb12c
. -
Thực hiện lệnh sau:
sqlplus / as sysdba
-
Chạy mã sau tại dấu nhắc SQL:
startup mount exclusive alter database open read only;
Bước 3:Tạo tệp kê khai PDB
Thực hiện các bước sau để tạo tệp kê khai PDB từ không phải CDB:
-
Đặt môi trường thành
noncdb12c
. -
Thực hiện lệnh sau:
sqlplus / as sysdba
-
Chạy mã sau tại dấu nhắc SQL:
exec dbms_pdb.describe (pdb_descr_file=>'/tmp/noncdb12c_manifest_file.xml');
Bước 4:Tắt không phải CDB
Thực hiện các bước sau sau khi Bước 3 hoàn tất để tắt tệp không phải CDB.
-
Đặt môi trường thành
noncdb12c
. -
Thực hiện lệnh sau:
sqlplus / as sysdba
-
Chạy mã sau tại dấu nhắc SQL:
shutdown immediate
Bước 5:Khởi động CDB
Nếu CDB chưa chạy, hãy thực hiện các bước sau để khởi động nó và kiểm tra tính tương thích:
-
Đặt môi trường thành
cdb12c
. -
Thực hiện lệnh sau:
sqlplus / as sysdba
-
Chạy mã sau tại dấu nhắc 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; /
Bước 6:Kiểm tra lỗi
Sau khi khởi động cơ sở dữ liệu CDB hoàn tất, hãy thực hiện các bước sau để kiểm tra lỗi trong PDB_PLUG_IN_VIOLATIONS
xem:
-
Đặt môi trường thành
cdb12c
. -
Thực hiện lệnh sau:
sqlplus / as sysdba
-
Chạy mã sau tại dấu nhắc SQL:
startup SELECT name, cause, type, message, status FROM PDB_PLUG_IN_VIOLATIONS WHERE name='NONCDB12C';
Lưu ý :Nếu có bất kỳ lỗi nào, hãy sửa chúng trước khi tiếp tục.
Bước 7:Kết nối với CDB và cắm vào PDB
Thực hiện các bước sau để kết nối với CDB và cắm vào PDDB12Cdatabase bằng cách sử dụng tệp kê khai không phải CDB:
-
Đặt môi trường thành
cdb12c
. -
Thực hiện lệnh sau:
sqlplus / as sysdba
-
Chạy mã sau tại dấu nhắc SQL:
CREATE PLUGGABLE DATABASE pdb12c USING '/tmp/noncdb12c_manifest_file.xml' COPY FILE_NAME_CONVERT = ('<Datafile_Location_for_noncdb>', 'Datafile_Location_for_pdb');
Lưu ý :Các tùy chọn sau được hỗ trợ và bạn có thể chọn một tùy chọn dựa trên môi trường của bạn:
- SAO CHÉP :Các tệp dữ liệu của
noncdb
vẫn còn nguyên vẹn vànoncdb
được sao chép để tạo một PDB tại vị trí mới và giữ nguyên các tệp dữ liệu gốc ở vị trí ban đầu. Điều này có nghĩa là cơ sở dữ liệu noncdb vẫn hoạt động sau khi tạo PDB. - DI CHUYỂN :Các tệp dữ liệu của
noncdb
được chuyển đến một vị trí mới để tạo PDB. Trong trường hợp này,noncdb
cơ sở dữ liệu không khả dụng sau khi PDB được tạo. - NOCOPY :Các tệp dữ liệu của
noncdb
được sử dụng để tạo PDB2 và nó sử dụng cùng một vị trí vớinoncdb
. Trong trường hợp này,noncdb
cơ sở dữ liệu không khả dụng sau khi PDB được tạo.
Bạn có thể sử dụng FILE_NAME_CONVERT
để chỉ định vị trí mới của các tệp dữ liệu trong khi sử dụng SAO CHÉP hoặc DI CHUYỂN tùy chọn.
Bước 8:Chạy tập lệnh chuyển đổi
Sau khi bước 7 hoàn tất thành công, hãy thực hiện các bước sau để chuyển sang vùng chứa PDB và chạy tập lệnh chuyển đổi, $ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
:
-
Đặt môi trường thành
cdb12c
. -
Thực hiện lệnh sau:
sqlplus / as sysdba
-
Chạy mã sau tại dấu nhắc SQL:
alter session set container=pdb12c @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
Bước 9:Khởi động PDB và xác minh chế độ
Thực hiện các bước sau để khởi động PDB và xác minh rằng chế độ đang mở :
-
Đặt môi trường thành
cdb12c
. -
Thực hiện lệnh sau:
sqlplus / as sysdba
-
Chạy mã sau tại dấu nhắc SQL:
alter pluggable database open; SELECT name, open_mode FROM v$pdbs;
Kết luận
Khi bạn chuyển đổi cơ sở dữ liệu không phải CDB sang cơ sở dữ liệu có thể cắm CDB, bạn có thể chọn từ một số tùy chọn tùy thuộc vào kích thước của cơ sở dữ liệu.
Nếu cơ sở dữ liệu rất lớn, bạn có thể sử dụng NOCOPY quyền mua. Điều này giảm thiểu lượng không gian thừa cần thiết và giảm thời gian cần thiết để thực hiện hoạt động chuyển đổi. NOCOPY Tuy nhiên, tùy chọn này có rủi ro vì bạn không giữ nguyên các tệp cơ sở dữ liệu gốc. Do đó, nếu bạn cần khôi phục cơ sở dữ liệu về trạng thái trước đó, bạn phải khôi phục cơ sở dữ liệu bằng cách sử dụng các bản sao lưu được thực hiện trước hoạt động chuyển đổi.
Nếu kích thước cơ sở dữ liệu nhỏ hơn, bạn nên sử dụng SAO CHÉP để, nếu có bất kỳ vấn đề nào, việc dự phòng cho tệp không phải CDB cũ sẽ dễ dàng thực hiện vì các tệp gốc luôn nguyên vẹn.
Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào.
Tìm hiểu thêm về các dịch vụ ứng dụng Rackspace.