Hướng dẫn kỹ thuật HotClone PDB

Trong bài viết “12c New Features – Remote Clone PDB“, tôi đã giới thiệu đến các bạn kỹ thuật remote clone PDB khá tiện lợi đã có trên bản 12.1.0.2. Tuy nhiên, nó vẫn còn 1 số hạn chế, trong đó có việc: Trong quá trình clone, PDB phải ở trong trạng thái readonly, tức là không thể chỉnh sửa, thay đổi gì được.

Đọc thêm  12c New Features - Hướng dẫn kỹ thuật Remote Clone PDB

Tin vui là từ bản 12.2.0.1 trở đi, Oracle đã bổ sung 1 kỹ thuật Hot clone để khắc phục hạn chế này. Trong bài viết này tôi sẽ hướng dẫn các bạn cách thực hiện nhé.

À quên, nhắc lại ý nghĩa khái niệm clone chút, để cho các bạn vẫn chưa hiểu clone là gì: Clone là kỹ thuật nhân bản 1 database thành 1 database khác giống hệt, nhằm mục đích phục vụ việc kiểm thử hay di chuyển dữ liệu.


   Chuẩn bị môi trường

Trong bài lab này, tôi có 2 CDB nằm trên 2 máy chủ khác nhau:

   Thông tin Server 1:

IP: 192.168.50.34

OS: Oracle Linux 7

Phiên bản Oracle Database 12.2.0.1

Tên CDB: orcl12c

Các PDB thuộc CDB:

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         5 PDB2                           READ WRITE NO
         7 PDB3                           READ ONLY  NO

   Server 2: 

IP: 192.168.50.35

OS: Oracle Linux 7

Oracle Database 12.2.0.1

Tên CDB: prod

Nhiệm vụ của tôi bây giờ là tạo ra 1 PDB khác nằm trên CDB prod với cấu trúc và dữ liệu giống hệt với PDB3 trên CDB orcl12 (thao tác này gọi là clone). Việc này để tạo ra 1 môi trường kiểm thử để cho team phát triển làm việc. Tuy nhiên, điều kiện yêu cầu ở đây là:

“Trong quá trình thực hiện Clone, không được làm ảnh hưởng đến hoạt động của PDB3.”


   Các bước thực hiện:

Đầu tiên, tôi cần tạo ra 1 user trên CDB nguồn, tức là CDB chứa PDB mà tôi cần clone (trong tình huống này CDB đó là orcl12c)

   Kết nối vào CDB orcl12c

$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 19 23:49:49 2021

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQL>

   Tạo global user

SQL> CREATE USER c##clone_user IDENTIFIED BY oracle CONTAINER=ALL;
SQL> GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##clone_user CONTAINER=ALL;

Câu lệnh trên sẽ tạo ra 1 global user có tên c##clone_user với password là oracle. User này tôi sẽ sử dụng ở bước sau để kết nối vào CDB orcl12c từ CDB prod và copy PDB3 về.

Ở đây, các bạn đã thấy có 1 thay đổi so với cách remote clone ở phiên bản 12.1.0.2 rồi, đúng không? Đó là bạn sẽ dùng global user để kết nối, chứ không phải là local user nữa.

   Kiểm tra xem CDB orcl12c đã chạy ở chế độ ARCHIVE LOG hay chưa

Lại thêm 1 điểm khác nữa, với cách remote clone, nó không yêu cầu database của bạn phải ở chế độ archive log. Tuy nhiên để sử dụng kỹ thuật hot clone, archive log mode cần được cấu hình.

Để kiểm tra xem archive log đã được cấu hình hay chưa, bạn thực hiện câu lệnh như sau:

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     473
Next log sequence to archive   475
Current log sequence           475

Kết quả như bên dưới, có nghĩa là archive log mode đã được cấu hình.

Còn nếu kết quả khác, bạn thực hiện theo các bước trong bài viết này, để cấu hình ARCHIVE LOG cho database của mình nhé.

Đọc thêm  Chuyển database Oracle về Archive log mode

   Kiểm tra xem CDB orcl12c đã chạy ở chế độ LOCAL UNDO hay chưa

Tiếp tục là 1 điểm khác. LOCAL UNDO là 1 cải tiến mới trong bản 12.2.0.1, và để sử dụng được hot clone, bạn cũng phải enable nó lên.

SELECT property_name, property_value FROM database_properties WHERE property_name = 'LOCAL_UNDO_ENABLED';

Kết quả như sau là OK nhé.

PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED             TRUE

OK, như vậy các bước cần thực hiện trên PDB3 đã xong rồi đó. Bây giờ chúng ta chuyển sang CDB prod, nơi mà chúng ta muốn copy PDB3 về.

Đọc thêm  12c New Features - So sánh Local Undo và Shared Undo

   Tạo database link trên CDB prod

Đầu tiên, chúng ta cần tạo 1 TNS name để kết nối với CDB orcl12c từ CDB prod nhé.

ORCL12C =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.34)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl12c)
    )
  )

Sau đó, tôi kết nối vào CDB prod và tạo database link đến CDB orcl12c

SQL> CREATE DATABASE LINK clone_link CONNECT TO c##clone_user IDENTIFIED BY oracle USING 'orcl12c';

   Thực hiện clone PDB

Tiếp theo, tôi thực hiện copy PDB3 về CDB prod bằng lệnh sau:

SQL> CREATE PLUGGABLE DATABASE pdb3prod FROM [email protected]_link;

Pluggable database created.

Và cuối cùng, tôi sẽ open PDB3PROD mới được clone lên:

SQL> alter pluggable database pdb3prod open;

Pluggable database altered.

Nguồn: https://dangxuanduy.com/

   Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.

Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
    0 0 votes
    Article Rating
    Subscribe
    Notify of
    guest
    0 Comments
    Inline Feedbacks
    View all comments