Undo trong Oracle database là gì và cách sử dụng?

Undo trong Oracle database là gì

Trong Oracle Database, “UNDO” là một khái niệm quan trọng liên quan đến quá trình giao dịch và quản lý transaction.

Screenshot 2024 02 28 110626

  1. Khái niệm:
    • “UNDO” là một vùng bộ nhớ được sử dụng để lưu trữ các thay đổi dữ liệu được thực hiện trong quá trình thực hiện một giao dịch.
    • Mục đích chính của UNDO là đảm bảo tính nhất quán và khả năng phục hồi (rollback) của dữ liệu trong trường hợp giao dịch bị hủy hoặc lỗi xảy ra.
  2. Cách sử dụng:
    • UNDO được quản lý bởi hệ thống Oracle Database và không cần được quản lý bằng tay.
    • Trong quá trình thực hiện một giao dịch, các thay đổi được ghi vào bộ nhớ UNDO.
    • Nếu giao dịch hoàn thành thành công, các thay đổi này được áp dụng vào cơ sở dữ liệu và không còn cần thiết cho UNDO nữa.
    • Nếu giao dịch bị hủy hoặc lỗi xảy ra, UNDO được sử dụng để hoàn tác các thay đổi, đưa cơ sở dữ liệu về trạng thái trước khi giao dịch được bắt đầu.
  3. Thao tác quản lý UNDO:
    • Oracle tự động quản lý UNDO thông qua các quy trình nội bộ của hệ thống.
    • Quản trị viên có thể cấu hình các tham số liên quan đến UNDO như dung lượng vùng bộ nhớ UNDO, thời gian lưu giữ, và cơ chế xử lý khi không gian UNDO đầy.
    • Đối với các tác vụ quản trị cao cấp, như sao lưu và phục hồi, UNDO cũng có vai trò quan trọng.

Giả sử chúng ta có một bảng trong cơ sở dữ liệu Oracle có tên là Employees với các cột EmployeeID, FirstName, LastName, và Salary. Bây giờ, chúng ta muốn thực hiện một giao dịch để cập nhật mức lương của một nhân viên và kiểm tra tính nhất quán và khả năng phục hồi của UNDO.

Dưới đây là một ví dụ về cách thực hiện giao dịch và sử dụng UNDO:

-- Bước 1: Bắt đầu giao dịch
BEGIN
    -- Bước 2: Thực hiện câu lệnh UPDATE để cập nhật mức lương
    UPDATE Employees
    SET Salary = Salary * 1.1 -- Tăng mức lương lên 10%
    WHERE EmployeeID = 101; -- Giả sử nhân viên có mã số 101

    -- Bước 3: Kiểm tra kết quả
    SELECT * FROM Employees WHERE EmployeeID = 101;

    -- Bước 4: Hủy bỏ giao dịch (không commit)
    ROLLBACK;
END;

Trong ví dụ trên:

  • Ở bước 1, chúng ta bắt đầu một giao dịch bằng cách sử dụng câu lệnh BEGIN.
  • Ở bước 2, chúng ta cập nhật mức lương của nhân viên có EmployeeID là 101 bằng cách tăng mức lương lên 10%.
  • Ở bước 3, chúng ta kiểm tra kết quả của việc cập nhật bằng cách truy vấn bảng Employees cho nhân viên có EmployeeID là 101.
  • Ở bước 4, thay vì commit (lưu trạng thái), chúng ta sử dụng ROLLBACK để hủy bỏ giao dịch. Khi giao dịch được hủy bỏ, UNDO sẽ được sử dụng để hoàn tác thay đổi, trả về mức lương của nhân viên về trạng thái ban đầu.
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận