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

   Giới thiệu

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.

Bài viết đến đây là kết thúc, hẹn gặp lại các bạn ở các bài viết sau nhé.

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

   Tặng bạn 02 khoá học “Linux thật là đơn giản” và “Các khái niệm phải biết về Database” hoàn toàn miễn phí. 2 khoá học này sẽ giúp bạn nắm được các kiến thức quan trọng nhất để học tập các kỹ năng cao hơn về Database.

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

 

Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.

 

    KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN  Xem ngay!

 

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

 

5 1 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
1 Comment
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
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 […]