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

Bắt đầu từ bản 12.1.0.2 trở đi, bạn có thể tạo ra PDB là bản copy từ 1 PDB ở xa. Tính năng này rất hữu dụng trong các bài toán như:

   Di chuyển PDB từ nơi này đến nơi khác

   Tạo các môi trường test/dev cho team phát triển một cách nhanh chóng

Trong bài viết này, tôi sẽ hướng dẫn các bạn các bước chi tiết và đầy đủ để thực hiện việc clone 1 PDB từ CDB này sang CDB khác bằng kỹ thuật remote clone nhé.


   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 còn 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.

   Chú ý: Bài lab này có thể thực hiện được với phiên bản Oracle database 12.1.0.2, chứ không nhất thiết phải là 12.2.0.1 như trên


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

Đầu tiên, tôi cần tạo ra 1 user trên PDB mà tôi cần clone (ở đây là PDB3 trên CDB orcl12)

   Kết nối vào PDB3

$ 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> alter session set container=pdb3;

Session altered.

SQL>

   Tạo user

SQL> CREATE USER clone_user IDENTIFIED BY oracle;
SQL> GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO clone_user;

Câu lệnh trên sẽ tạo ra 1 user có tên 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 PDB3 từ CDB prod và copy PDB3 về.

   Đưa database PDB3 về chế độ READ ONLY

SQL> conn / as sysdba
SQL> ALTER PLUGGABLE DATABASE pdb3 CLOSE;
SQL> ALTER PLUGGABLE DATABASE pdb3 OPEN READ ONLY;

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ề.

   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 PDB3 từ CDB prod nhé

PDB3 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.34)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb3)
    )
  )

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

SQL> CREATE DATABASE LINK clone_link CONNECT TO clone_user IDENTIFIED BY oracle USING 'pdb3';

   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.

Các bạn có thấy đơn giản và tiện lợi không? Ở bản 11g, để di chuyển 1 database từ nơi này sang nơi khác, tôi phải làm rất nhiều bước phức tạp, bây giờ thì chỉ cần vài thao tác đơn giản thế này thôi là xong.

Tuy nhiên, không hẳn phương pháp này không có khuyết điểm, bạn sẽ nhận thấy các vấn đề sau, khi áp dụng nó trong thực tế:

   Trong quá trình clone, PDB3 phải đưa về trạng thái read only, tức là database sẽ không thể thay đổi gì được trong thời gian clone. Ở bản 12.2.0.1 trở đi, Oracle mới cho phép bạn có thể không cần đưa PDB3 về read only mà vẫn clone được. Kỹ thuật này gọi là hot clone

Đọc thêm  12c New Features - Hướng dẫn kỹ thuật Hot clone PDB
   Do cơ chế clone là copy dữ liệu qua db link, do đó, chúng ta sẽ cần 1 đường truyền network giữa 2 server phải ổn định, không bị gián đoạn giữa chừng.

   Thời gian clone phụ thuộc vào tốc độ đường truyền và kích thước của database. Thông thường tôi chỉ áp dụng phương pháp này với các database nhỏ nhỏ xinh xinh thôi.

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é

     

    5 1 vote
    Article Rating
    Subscribe
    Notify of
    guest
    1 Comment
    Oldest
    Newest Most Voted
    Inline Feedbacks
    View all comments
    trackback

    […] bài viết “12c New Features – Remote Clone PDB“, tôi đã giới thiệu đến các bạn một kỹ thuật clone PDB khá tiện lợi […]