Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Chuyển Đổi Cơ Sở Dữ Liệu Oracle Non-Container Legacy Sang CDB Multitenant

Thiết Lập Trường Hợp Kiểm Thử

Bài viết này mô tả các phương pháp bạn có thể sử dụng để chuyển đổi cơ sở dữ liệu non-CDB thành cơ sở dữ liệu CDB. Oracle® phiên bản 12c cung cấp các tùy chọn cơ sở dữ liệu multitenant để lưu trữ nhiều pluggable database (PDB) với một container database (CDB) duy nhất. Đôi khi, bạn cần chuyển đổi cơ sở dữ liệu non-CDB thành CDB pluggable database.

Thiết Lập Trường Hợp Kiểm Thử

Senario kiểm thử này bắt đầu với một instance cơ sở dữ liệu non-CDB, noncdb12c, đang chạy trên máy ABC123.xyz.com. Nhiệm vụ là tạo cơ sở dữ liệu CDB, cdb12c, trên cùng một máy. Bạn cần đảm bảo có đủ dung lượng đĩa để chứa cơ sở dữ liệu CDB đã chuyển đổi.

Máy chủ: ABC123.xyz.com

Cơ sở dữ liệu Non-CDB: noncdb12c

Phiên bản Oracle: 12.1.0.2

Hình ảnh sau hiển thị senario kiểm thử:

Chuyển Đổi Cơ Sở Dữ Liệu Oracle Non-Container Legacy Sang CDB Multitenant

Các Bài Kiểm Thử Chuyển Đổi

Sử dụng các bước trong phần này để chuyển đổi cơ sở dữ liệu non-CDB sang cơ sở dữ liệu CDB.

Bước 1: Thực hiện tắt sạch

Thực hiện các bước sau để tắt sạch cơ sở dữ liệu non-CDB:

  • Đặt môi trường thành noncdb12c.
  • Thực thi 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 ở chế độ chỉ đọc

Sau khi bạn đã tắt sạch cơ sở dữ liệu, thực hiện các bước sau để khởi động cơ sở dữ liệu ở chế độ mount exclusive và mở cơ sở dữ liệu ở chế độ chỉ đọc:

  • Đặt môi trường thành noncdb12c.
  • Thực thi 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 file manifest PDB

Thực hiện các bước sau để tạo file manifest PDB từ non-CDB:

  • Đặt môi trường thành noncdb12c.
  • Thực thi 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 non-CDB

Thực hiện các bước sau sau khi Bước 3 hoàn tất để tắt file non-CDB.

  • Đặt môi trường thành noncdb12c.
  • Thực thi 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, thực hiện các bước sau để khởi động nó và kiểm tra khả năng tương thích:

  • Đặt môi trường thành cdb12c.
  • Thực thi 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, thực hiện các bước sau để kiểm tra lỗi trong view PDB_PLUG_IN_VIOLATIONS:

  • Đặt môi trường thành cdb12c.
  • Thực thi 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 khắc phục chúng trước khi tiếp tục.

Bước 7: Kết nối với CDB và plug vào PDB

Thực hiện các bước sau để kết nối với CDB và plug vào database PDDB12C bằng cách sử dụng file manifest non-CDB:

  • Đặt môi trường thành cdb12c.
  • Thực thi 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_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 mình:

  • COPY: Các datafile của noncdb vẫn còn nguyên vẹn, và noncdb được sao chép để tạo PDB tại vị trí mới và giữ các datafile gốc nguyên vẹn tại vị trí gốc. Điều này có nghĩa là cơ sở dữ liệu noncdb vẫn hoạt động sau khi tạo PDB.
  • MOVE: Các datafile của noncdb được di chuyển đến vị trí mới để tạo PDB. Trong trường hợp này, cơ sở dữ liệu noncdb không còn khả dụng sau khi PDB được tạo.
  • NOCOPY: Các datafile của noncdb được sử dụng để tạo PDB2, và nó sử dụng cùng vị trí với noncdb. Trong trường hợp này, cơ sở dữ liệu noncdb không còn khả dụng sau khi PDB được tạo.

Bạn có thể sử dụng tham số FILE_NAME_CONVERT để chỉ định vị trí mới của datafile khi sử dụng tùy chọn COPY hoặc MOVE.

Bước 8: Chạy script chuyển đổi

Sau khi Bước 7 hoàn thành thành công, thực hiện các bước sau để chuyển sang container PDB và chạy script chuyển đổi, $ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql:

  • Đặt môi trường thành cdb12c.
  • Thực thi 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ế độ là open:

  • Đặt môi trường thành cdb12c.
  • Thực thi 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 non-CDB sang CDB pluggable database, 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ơ sở dữ liệu.

Nếu cơ sở dữ liệu rất lớn, bạn có thể sử dụng tùy chọn NOCOPY. Điều này giảm thiểu lượng không gian thêm cần thiết và giảm thời gian thực hiện thao tác chuyển đổi. Tuy nhiên, tùy chọn NOCOPY có rủi ro vì bạn không giữ nguyên các file 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á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 tùy chọn COPY để, nếu có bất kỳ vấn đề nào, việc quay lại non-CDB cũ sẽ đơn giản vì các file 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.