Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hoàn tác và làm lại trong cơ sở dữ liệu Oracle là gì

Nhiều người thường hỏi tôi những câu hỏi

Hoàn tác và làm lại trong cơ sở dữ liệu Oracle là gì ? Nó dùng để làm gì?

Tôi đang cố gắng xóa tất cả những nghi ngờ về nó ở đây trong bài đăng

Hoàn tác trong Oracle là gì?

Hoàn tác được lưu trữ trong không gian bảng Hoàn tác trong cơ sở dữ liệu, nó được lưu trữ các giá trị trước của các khối dữ liệu đã thay đổi bất cứ khi nào chúng ta đưa ra câu lệnh chèn, cập nhật hoặc xóa (thao tác DML). Khi chúng tôi đưa ra bất kỳ câu lệnh DML nào, các khối đã thay đổi được lưu trữ trong bộ đệm đệm và các giá trị trước của các khối đã thay đổi đó trong các phân đoạn UNDO. Bất cứ khi nào chúng tôi đưa ra lệnh ROLLBACK, nó sẽ sử dụng phân đoạn hoàn tác để khôi phục về giá trị trước đó.

Nó giống như hoàn tác trong Notepad hoặc Microsoft word

Việc hoàn tác để xóa còn nhiều hơn so với thao tác chèn, đó là vì việc hoàn tác để xóa thực sự là việc Chèn lại toàn bộ hàng. Vì vậy, nó có các giá trị bảo toàn cho mỗi cột của hàng để có thể “Hoàn tác” việc xóa.
Ngược lại, việc hoàn tác cho một lần chèn là Xóa hàng bằng ROWID - không phải giữ nguyên các giá trị đang bị xóa.

Hoàn tác cũng cung cấp cho chúng tôi tính nhất quán đọc đối với người dùng vì anh ta chỉ có thể nhìn thấy các giá trị trước đó cho đến khi một giao dịch được cam kết. Để giải thích, tôi sẽ đưa ra một ví dụ

Người dùng A khởi động con trỏ đã chọn trên bảng tại thời điểm t. Con trỏ sẽ chạy trong một thời gian

Người dùng B bắt đầu cập nhật cùng một bảng tại thời điểm t ’.

Bây giờ người dùng A sẽ nhận được phiên bản nhất quán đã đọc của bảng tại thời điểm t. Nhưng các khối sẽ được Người dùng B cập nhật sau một thời gian.

Vì vậy, Oracle sử dụng các phân đoạn Hoàn tác để khôi phục hình ảnh trước khi cập nhật cho các khối đó từ các phân đoạn Hoàn tác để có được các chế độ đọc nhất quán

Hoàn tác không bị hủy ngay sau khi cam kết hoặc khôi phục vì chúng sẽ được sử dụng trong cơ chế Đọc nhất quán.

Chúng cũng được sử dụng trong các truy vấn hồi tưởng để xem dữ liệu đã cam kết cũ bằng cách sử dụng hoàn tác khôi phục.

Dữ liệu hoàn tác được lưu trữ trong cơ sở dữ liệu trong bao lâu?
Oracle cung cấp tính linh hoạt về thời gian hoàn tác dữ liệu sẽ được lưu trữ với sự trợ giúp của tham số undo_retention. Chúng tôi có thể đặt tham số undo_management thành tự động để oracle quản lý việc lưu giữ hoàn tác (mặc định), hoặc thậm chí đặt giá trị này theo cách thủ công và giá trị của nó phải lớn hơn thời gian thực hiện bởi truy vấn chạy lâu nhất trong cơ sở dữ liệu của bạn. theo kích thước của vùng bảng hoàn tác

Giao dịch là gì ?
Một giao dịch là tập hợp các câu lệnh của ngôn ngữ thao tác dữ liệu SQL (DML) được coi như một đơn vị logic.
Việc bất kỳ câu lệnh nào bị lỗi dẫn đến giao dịch bị “hoàn tác”. Nếu tất cả các câu lệnh đều xử lý, SQLPlus hoặc ứng dụng lập trình sẽ đưa ra một COMMIT để thực hiện các thay đổi cơ sở dữ liệu vĩnh viễn. tiến độ.

Làm lại trong Oracle là gì?

Redo là viết tắt của ghi lại những công việc đã được thực hiện, Vì vậy, công việc đó không bị mất. Nhật ký REDO được sử dụng để phục hồi. Bất cứ khi nào chúng tôi chèn vào cơ sở dữ liệu, nó sẽ thực hiện những điều sau đây

  1. Chèn hàng vào bộ đệm
  2. tạo quá trình hoàn tác trong bộ đệm
  3. Viết các thay đổi làm lại, tức là chèn các hàng vào nhật ký làm lại
  4. Viết các thay đổi làm lại cho các phân đoạn hoàn tác trong nhật ký làm lại

Vì vậy, mọi hoạt động DML được thực hiện trong cơ sở dữ liệu được ghi lại trong nhật ký làm lại cho mục đích khôi phục

Làm lại lần đầu tiên được ghi trong bộ đệm nhật ký làm lại trong SGA. Quy trình ghi nhật ký (LGWR) ghi những thay đổi này từ 'bộ đệm nhật ký làm lại' để làm lại các tệp nhật ký trong đĩa

Làm lại nhật ký giúp khôi phục mọi mất mát dữ liệu do lỗi của con người, lỗi hệ điều hành, lỗi đĩa cứng.

Làm lại nhật ký rất quan trọng đối với hoạt động của cơ sở dữ liệu vì nó cung cấp khả năng chịu lỗi.

Trước khi ghi các thay đổi vào các bảng trong datafile, Oracle đầu tiên ghi bộ đệm làm lại vào tệp nhật ký làm lại.

chúng tôi có tùy chọn không ghi nhật ký có sẵn cho hoạt động nhất định không tạo bộ đệm làm lại.

Cách làm lại nhật ký hoạt động
Máy chủ Oracle ghi lại tuần tự tất cả các thay đổi được thực hiện đối với cơ sở dữ liệu trong bộ đệm nhật ký làm lại. Các mục nhập làm lại được ghi từ bộ đệm nhật ký làm lại vào một trong các nhóm nhật ký làm lại trực tuyến được quy trình LGWR gọi là nhóm nhật ký làm lại trực tuyến hiện tại. LGWR ghi trong
các tình huống sau:
• Khi giao dịch cam kết
• Khi bộ đệm nhật ký làm lại trở nên đầy một phần ba
• Khi có hơn một megabyte bản ghi đã thay đổi trong bộ đệm làm lại nhật ký
• Trước khi DBWn ghi các khối đã sửa đổi trong bộ đệm của bộ đệm cơ sở dữ liệu vào các tệp dữ liệu
Các nhật ký làm lại được sử dụng theo chu kỳ. Mỗi nhóm tệp nhật ký làm lại được xác định bởi một số thứ tự nhật ký được ghi đè mỗi khi nhật ký được sử dụng lại. LGWR ghi tuần tự vào các tệp nhật ký làm lại trực tuyến. Khi nhóm nhật ký làm lại trực tuyến hiện tại được lấp đầy, LGWR bắt đầu ghi vào nhóm tiếp theo. Đây được gọi là chuyển đổi nhật ký. Khi tệp nhật ký làm lại trực tuyến có sẵn cuối cùng được lấp đầy, LGWR sẽ quay lại nhóm nhật ký
làm lại trực tuyến đầu tiên và bắt đầu ghi lại.

Các bài viết có liên quan

cách tìm phiên tạo nhiều lần làm lại
thay đổi hệ thống chuyển đổi logfile v / s nhật ký lưu trữ hiện tại
tạo lại các tệp nhật ký làm lại trong cơ sở dữ liệu Oracle
câu hỏi phỏng vấn oracle dba cấp cao


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00904:số nhận dạng không hợp lệ

  2. Làm cách nào để xử lý các ngoại lệ to_date trong trạng thái SELECT để bỏ qua các hàng đó?

  3. UNPIVOT trên một số cột không xác định

  4. Chế độ xem ALL_PROCEDURES không hiển thị PROCEDURE_NAME

  5. Cách chuyển đổi hàng thành cột trong bảng Oracle