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