Mục lục

1. Giới thiệu về Hot clone 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.

2. 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:

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

2. Thông tin 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.”

3. 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)

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

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

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

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

5. 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';

6. 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 pdb3@clone_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.

Như vậy là xong rồi đó, chúc các bạn thành công.

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

KHOÁ DÀNH CHO NGƯỜI MỚI

KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)

CÁC KHOÁ NÂNG CAO:

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD

CÁC KHOÁ COMBO:

COMBO 1: ADMIN 1 + MULTITENANT 12c

COMBO 2: ADMIN 1 + DATA GUARD

COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD

LỊCH HỌC:

Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE 

ĐĂNG KÝ:

https://forms.gle/MtCAoRQFenP886y79

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

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x