Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Chuyển đổi cơ sở dữ liệu không chứa thành cơ sở dữ liệu có thể cắm được nhiều đối tượng

Đượ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:

Chuyển đổi cơ sở dữ liệu không chứa thành cơ sở dữ liệu có thể cắm được nhiều đối tượng

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ới noncdb . 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.