Mục lục

1. Giới thiệu về Shared Undo và Local Undo

Ở một số bài viết trước, tôi có đề cập đến khái niệm Local Undo, và có nói đó là 1 tính năng mới có trong bản Oracle Database 12.2. Vậy chi tiết hơn, Local Undo, hay mở rộng ra cùng với nó là khái niệm Shared Undo là gì, hãy cũng tìm hiểu trong bài viết này nhé.

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

 

1. Shared Undo là gì

Ở phiên bản Oracle Database 12c release 1 (hay 12.1.x), Undo data của tất cả các PDB trong CDB đều lưu chung trong 1 UNDO tablespace. Chế độ này gọi là Shared Undo.

Trong chế độ Shared Undo, chỉ có 1 UNDO tablespace được active cho mỗi instance (Trong mô hình RAC, mỗi instance sẽ có 1 tablespace UNDO active).

Khi bạn muốn thực hiện 1 số thao tác bảo trì trên PDB như clone hay unplug PDB, Oracle sẽ yêu cầu đóng PDB lại, để trong UNDO tablespace không còn bất cứ 1 giao dịch chưa commit nào nữa.

Để kiểm tra xem database của bạn đang cấu hình Shared Undo hay không, hãy sử dụng câu lệnh sau:

SQL> select * from database_properties where property_name='LOCAL_UNDO_ENABLED';

Kết quả như sau tức là chế độ Shared Undo đang được kích hoạt.

PROPERTY_NAME        PROPERTY_VALUE       DESCRIPTION
-------------------- -------------------- --------------------------------------------------
LOCAL_UNDO_ENABLED   FALSE                true if local undo is enabled

2. Local Undo là gì

Như các bạn thấy, trong chế độ Shared Undo, tất cả các PDB đều sử dụng chung 1 Undo tablespace. Mà ở trên đời này, phàm cái gì là của chung thì sẽ đến lúc có xung đột, trong Oracle Database cũng y như vậy.

Kể từ bản Oracle Database 12c release 2 (hay 12.2.x), Oracle đưa thêm cho chúng ta một lựa chọn nữa, đó là: Cho phép mỗi 1 PDB có một UNDO tablespace riêng để lưu trữ  UNDO data của nó. Đó là Local Undo.

Mặc định từ bản Oracle Database 12.2 trở đi, chế độ Local Undo sẽ được enable theo mặc định. Bạn cũng hoàn toàn có thể chuyển sang chế độ Shared Undo nếu muốn. Tuy nhiên, Oracle khuyến nghị chúng ta nên sử dụng chế độ Local Undo để tối ưu hóa được hiệu năng.

Ngoài ra, khi bạn muốn sử dụng các tính năng sau, điều kiện cần là chế độ Local Undo phải được kích hoạt:

  • Hot clone
  • Refreshable PDB
  • PDB Relocate
  • Flashback PDB

Chạy câu lệnh kiểm tra bên trên để xem chế độ Local Undo đã được kích hoạt hay chưa

PROPERTY_NAME        PROPERTY_VALUE       DESCRIPTION
-------------------- -------------------- --------------------------------------------------
LOCAL_UNDO_ENABLED   TRUE                 true if local undo is enabled

Như vậy các bạn đã hiểu Local Undo và Shared Undo rồi chứ. Ở phần tiếp theo của bài viết, tôi sẽ hướng dẫn các bạn cấu hình qua lại giữa 2 chế độ này.

3. Chuyển database về Shared Undo mode

1. Kiểm tra lại các tablespace UNDO

Đầu tiên, các bạn kiểm tra các tablespace UNDO trong toàn bộ CDB nhé

SQL> select tablespace_name, con_id from cdb_tablespaces;

Các bạn thấy không, mỗi PDB (hay container) đang có 1 Undo tablespace riêng và đều có tên là UNDOTBS1.

2. Khởi động lại database ở chế độ upgrade.

Chế độ này thông thường chỉ áp dụng khi các bạn thực hiện nâng cấp database hay các tính năng mới.

SQL> shutdown immediate
SQL> startup upgrade

3. Tắt chế độ Local Undo

alter database local undo off;

4. Khởi động lại database

SQL> shutdown immediate
SQL> startup

5. Khởi động các PDB

SQL> alter pluggable database pdb3 open;

6. Kiểm tra lại:

SQL> select * from database_properties where property_name='LOCAL_UNDO_ENABLED';

Chú ý: Các bạn đã tắt chế độ Local Undo, tuy nhiên, các undo tablespace của các PDB vẫn tồn tại, mặc dù không còn được sử dụng. Chúng ta nên xóa các tablespace này đi để tránh nhầm lẫn cũng như tiết kiệm dung lượng.

SQL> alter session set container=pdb3;
SQL> drop tablespace UNDOTBS1 including contents and datafiles;

4. Chuyển database về Local Undo mode

Quy trình chuyển database từ Shared Undo mode sang Local Undo mode cũng rất đơn giản, các bạn làm theo các bước sau nhé

1. Khởi động database ở chế độ Upgrade

SQL> shutdown immediate 
SQL> startup upgrade

2. Kích hoạt chế độ Local Undo

alter database local undo on;

3. Khởi động lại database

SQL> shutdown immediate
SQL> startup
SQL> alter pluggable database pdb3 open;

Như vậy là xong rồi đó. Các bạn chú ý là khi chuyển database về từ Shared Undo mode sang Local Undo mode, các PDB sẽ tự động tạo ra các Undo tablespace của riêng mình mà không cần các bạn phải can thiệp đâu.

4. Kiểm tra lại

Sử dụng lệnh sau:

select con_id, tablespace_name
from   cdb_tablespaces
where  tablespace_name LIKE 'UNDO%'
order by con_id;

Kết quả như sau:

    CON_ID TABLESPACE_NAME
---------- ------------------------------
         1 UNDOTBS1
         7 UNDO_1

 

Các bạn sẽ thấy UNDO_1 chính là Undo tablespace mới được tạo ra khi bạn kích hoạt chế độ Local Undo đấy.

Như vậy là tôi đã giới thiệu đến các bạn 2 chế độ mới rất thú vị trong phiên bản Oracle database 12c, nếu các bạn có câu hỏi nào, hãy để lại comment ở dưới bài viết này, hoặc tham gia vào nhóm “Kho tài liệu kiến thức về Database” để yêu cầu tôi demo 1 tính năng hay sản phẩm về database nào đó nhé.

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