Ở 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

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

   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

   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ó mâu thuẫn, 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ó.

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.


   Chuyển database về Shared Undo mode

   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.

   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

   Tắt chế độ Local Undo

alter database local undo off;

   Khởi động lại database

SQL> shutdown immediate
SQL> startup

   Khởi động các PDB

SQL> alter pluggable database pdb3 open;

   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;

   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é

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

SQL> shutdown immediate 
SQL> startup upgrade

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

alter database local undo on;

   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.

   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/

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é

     

    0 0 votes
    Article Rating
    Subscribe
    Notify of
    guest
    0 Comments
    Inline Feedbacks
    View all comments