Quản trị dữ liệu undo data trong Oracle db là một khía cạnh quan trọng trong hệ thống cơ sở dữ liệu Oracle. Trong khóa học này, chúng ta sẽ tìm hiểu về cách quản lý và giám sát dữ liệu undo trong Oracle.
Bài học sẽ bắt đầu bằng việc giải thích DML (Data Manipulation Language) và quá trình tạo dữ liệu undo. Bạn sẽ hiểu được cách thức DML tác động đến dữ liệu undo và cách nó giúp khôi phục lại trạng thái trước đó của cơ sở dữ liệu.
Tiếp theo, chúng ta sẽ xem xét cách giám sát và quản lý dữ liệu undo. Bạn sẽ học cách theo dõi hoạt động của dữ liệu undo, đảm bảo rằng nó được duy trì với độ dài thích hợp và cấu hình để đảm bảo khả năng phục hồi hiệu quả.
Một phần quan trọng của khóa học này là khái niệm về sự khác biệt giữa dữ liệu undo và dữ liệu redo. Bạn sẽ được giải thích cách hai loại dữ liệu này hoạt động khác nhau và tại sao chúng là cần thiết cho hoạt động của cơ sở dữ liệu.
Chúng ta cũng sẽ khám phá cách cấu hình giữ lại dữ liệu undo và đảm bảo rằng nó được duy trì theo yêu cầu của hệ thống. Bạn sẽ học cách kích hoạt dữ liệu undo tạm thời và sử dụng công cụ tư vấn dữ liệu undo để đưa ra các khuyến nghị tối ưu cho việc quản trị dữ liệu undo.
Với kiến thức và kỹ năng được học từ khóa học này, bạn sẽ có khả năng quản trị hiệu quả dữ liệu undo trong hệ thống cơ sở dữ liệu Oracle, đảm bảo tính nhất quán và khả năng phục hồi của cơ sở dữ liệu.
Khái quát về Undo data trong oracle db
Trong cơ sở dữ liệu Oracle, máy chủ Oracle Database lưu trữ dữ liệu undo, tức là các giá trị cũ của dữ liệu, khi quá trình thay đổi dữ liệu trong cơ sở dữ liệu diễn ra. Dữ liệu undo được lưu trữ như trạng thái ban đầu trước khi có bất kỳ sự thay đổi nào. Việc ghi nhận dữ liệu undo cho phép bạn hoàn tác lại dữ liệu chưa được xác nhận(commit). Dữ liệu undo hỗ trợ các truy vấn đọc nhất quán và truy vấn flashback.
Truy vấn đọc nhất quán cung cấp kết quả phù hợp với dữ liệu vào thời điểm truy vấn bắt đầu. Để thành công, truy vấn đọc nhất quán yêu cầu thông tin gốc vẫn tồn tại dưới dạng thông tin undo. Nếu thông tin gốc không còn tồn tại, bạn sẽ gặp phải lỗi "Snapshot too old" (ORA-01555). Trong trường hợp thông tin undo vẫn được lưu giữ, máy chủ Oracle Database có thể tái tạo dữ liệu để đáp ứng các truy vấn đọc nhất quán.
Truy vấn flashback được sử dụng để yêu cầu phiên bản dữ liệu như nó tồn tại tại một thời điểm trong quá khứ. Khi thông tin undo cho thời điểm đó vẫn tồn tại, các truy vấn flashback có thể hoàn thành thành công. Oracle Flashback Transaction sử dụng dữ liệu undo để tạo ra các giao dịch bù, để hoàn tác một giao dịch và các giao dịch phụ thuộc của nó. Oracle Flashback Table cho phép bạn khôi phục lại một bảng đến một điểm thời gian cụ thể.
Dữ liệu undo cũng được sử dụng để phục hồi từ các giao dịch thất bại. Giao dịch thất bại xảy ra khi một phiên người dùng kết thúc một cách bất thường (có thể do lỗi mạng hoặc lỗi trên máy tính của người dùng) trước khi người dùng quyết định xác nhận (commit) hoặc hủy (roll back) giao dịch. Giao dịch thất bại cũng có thể xảy ra khi máy chủ bị sập hoặc khi bạn thực hiện lệnh SHUTDOWN ABORT.
Trong trường hợp giao dịch thất bại, máy chủ Oracle Database chọn hành vi an toàn nhất và hoàn tác tất cả các thay đổi do người dùng thực hiện, từ đó khôi phục lại dữ liệu ban đầu. Thông tin undo được lưu giữ cho tất cả các giao dịch, ít nhất là cho đến khi giao dịch kết thúc thông qua một trong các hành động sau:
- Người dùng hoàn tác (rollback) một giao dịch.
- Người dùng kết thúc (commit) một giao dịch.
- Người dùng thực hiện một lệnh DDL như CREATE, DROP, RENAME, hoặc ALTER. Nếu giao dịch hiện tại chứa các lệnh DML, máy chủ cơ sở dữ liệu sẽ commit giao dịch trước và sau đó thực hiện và commit lệnh DDL như một giao dịch mới.
- Phiên người dùng kết thúc không đúng cách (rollback giao dịch).
- Phiên người dùng kết thúc bình thường với lệnh thoát (commit giao dịch).
Số lượng thông tin undo được giữ lại và thời gian giữ lại phụ thuộc vào mức độ hoạt động của cơ sở dữ liệu và cấu hình cơ sở dữ liệu.
Lưu ý: Oracle Flashback Transaction sử dụng online redo logs để tìm thông tin undo SQL thích hợp để thực thi. Nó chỉ sử dụng thông tin undo như một ranh giới thời gian giả tạo để xác định thời điểm bắt đầu khai thác redo cho giao dịch mục tiêu nếu thời điểm bắt đầu giao dịch không được cung cấp trong việc gọi flashback transaction.
Các transactions và Undo Data trong Oracle DB
Khi một giao dịch bắt đầu, nó được gán cho một đoạn undo (undo segment). Trong suốt quá trình tồn tại của giao dịch, khi dữ liệu thay đổi, các giá trị gốc (trước khi thay đổi) được sao chép vào đoạn undo. Bạn có thể xem giao dịch nào được gán cho đoạn undo nào bằng cách kiểm tra thông qua xem hiệu năng động V$TRANSACTION.
Đoạn undo là các đoạn đặc biệt được tự động tạo ra bởi máy chủ cơ sở dữ liệu khi cần để hỗ trợ các giao dịch. Giống như tất cả các đoạn khác, đoạn undo được tạo thành từ các khối dữ liệu (data blocks). Đoạn undo tự động mở rộng và thu hẹp theo nhu cầu, hoạt động như một bộ đệm lưu trữ vòng tròn cho các giao dịch được gán cho nó.
Các giao dịch điền dữ liệu vào các khối trong đoạn undo cho đến khi giao dịch được hoàn thành hoặc không còn không gian nào. Nếu một khối đạt đến giới hạn và cần thêm không gian, giao dịch sẽ lấy không gian đó từ khối tiếp theo trong đoạn undo. Sau khi tất cả các khối đã được sử dụng, giao dịch sẽ quay trở lại khối đầu tiên hoặc yêu cầu cấp phát một đoạn undo mới.
Lưu ý: Các hoạt động DML và DDL song song có thể khiến một giao dịch sử dụng nhiều hơn một đoạn undo.
Lưu trữ thông tin Undo trong Oracle db
Undo segments chỉ có thể tồn tại trong một dạng đặc biệt của tablespace được gọi là undo tablespace. (Bạn không thể tạo các đoạn khác như bảng trong undo tablespace.) Database Configuration Assistant (DBCA) sẽ tự động tạo một undo tablespace kiểu smallfile. Bạn cũng có thể tạo một undo tablespace kiểu bigfile.
Tuy nhiên, trong một môi trường xử lý giao dịch trực tuyến (OLTP) có khối lượng cao và nhiều giao dịch ngắn đồng thời, có thể xảy ra cạnh tranh về tiêu đề tập tin. Việc sử dụng một undo tablespace được lưu trữ trong nhiều tập tin dữ liệu có thể giải quyết vấn đề này. Mỗi cơ sở dữ liệu chỉ có thể chọn một undo tablespace hiện tại trong một phiên bản cụ thể.
Undo segments được tự động tạo và luôn thuộc sở hữu của SYS. Vì undo segments hoạt động như một bộ đệm vòng tròn, nên mỗi segment ít nhất phải có hai khối dữ liệu. Số lượng khối tối đa mặc định phụ thuộc vào kích thước khối dữ liệu của cơ sở dữ liệu, nhưng giá trị này rất lớn (32,765 đối với kích thước khối 8 KB).
Undo tablespaces là các tablespaces được quản lý cục bộ và có cấp phát extent tự động. Chúng được cơ sở dữ liệu quản lý tự động. Vì dữ liệu undo được sử dụng để khôi phục từ các giao dịch thất bại (ví dụ như khi một phiên bản gặp sự cố), undo tablespaces chỉ có thể khôi phục khi phiên bản đang ở trạng thái MOUNT.
So sanh undo và redo data trong db Oracle
Dữ liệu Undo và dữ liệu Redo ban đầu có vẻ giống nhau, nhưng chúng có mục đích sử dụng khác nhau. Dữ liệu Undo được sử dụng để hoàn tác các thay đổi, ví dụ như đảm bảo tính nhất quán khi đọc và hoàn tác dữ liệu. Trong khi đó, dữ liệu Redo được sử dụng để thực hiện lại các thay đổi, đặc biệt khi dữ liệu bị mất.
Khi thực hiện commit, hệ thống sẽ kiểm tra và ghi lại các thay đổi trong giao dịch vào tệp redo log, một vùng lưu trữ bền vững trên đĩa cứng. Thông qua việc ghi vào redo log, tính nhất quán của cơ sở dữ liệu được đảm bảo. Thậm chí khi các thay đổi chưa được ghi vào các tệp dữ liệu nơi lưu trữ thực tế của bảng, việc ghi vào redo log bằng cách bền vững đã đảm bảo tính nhất quán của cơ sở dữ liệu.
Giả sử xảy ra một sự cố như mất điện trước khi các thay đổi được phản ánh trong các tệp dữ liệu. Trong trường hợp này, không có vấn đề gì xảy ra vì giao dịch đã được commit. Khi hệ thống khởi động lại, nó có thể tiến hành áp dụng lại các bản ghi redo mà chưa được phản ánh trong các tệp dữ liệu vào thời điểm sự cố xảy ra.
Quản trị Undo data trong Oracle database
Quản lý Undo trong Oracle Database được thực hiện thông qua một cơ chế tự động, giúp quản lý dữ liệu Undo và không gian liên quan trong một undo tablespace riêng biệt. Điều này đảm bảo rằng mọi phiên làm việc đều được hỗ trợ và dữ liệu Undo tự điều chỉnh để đảm bảo giữ được trong khoảng thời gian lâu nhất.
Các công việc của người quản trị cơ sở dữ liệu (DBA) liên quan đến việc hỗ trợ các hoạt động Flashback, một tính năng quan trọng trong Oracle Database. Một số nhiệm vụ cụ thể của DBA bao gồm:
- Cấu hình undo retention: DBA có khả năng cấu hình thời gian giữ Undo dựa trên yêu cầu của ứng dụng. Điều này đảm bảo rằng dữ liệu Undo được giữ trong một khoảng thời gian đủ lâu để hỗ trợ các truy vấn và hoạt động Flashback.
- Thay đổi kích thước undo tablespace thành kích thước cố định: Thỉnh thoảng, DBA có thể quyết định thay đổi kích thước của undo tablespace để đáp ứng nhu cầu lưu trữ và hiệu suất của hệ thống. Thay đổi này giúp điều chỉnh không gian Undo và đảm bảo rằng không có sự cố về không gian xảy ra.
- Tránh lỗi không gian và "Snapshot too old": DBA phải kiểm soát và quản lý không gian trong undo tablespace để tránh các lỗi không gian và lỗi "Snapshot too old". Điều này bao gồm giám sát sử dụng không gian Undo, đảm bảo rằng không gian đủ để lưu trữ dữ liệu Undo cần thiết để đáp ứng yêu cầu của ứng dụng và tránh các lỗi không gian không mong muốn.
Quản lý Undo hiệu quả là một phần quan trọng trong việc đảm bảo tính nhất quán và khả năng phục hồi của cơ sở dữ liệu Oracle. Các tác vụ của DBA như cấu hình undo retention, điều chỉnh kích thước undo tablespace và tránh lỗi không gian đóng vai trò quan trọng trong việc đảm bảo hoạt động ổn định và hiệu suất cao của hệ thống.
Cấu hình tham số UNDO_RETENTION trong Oracle Database
UNDO_RETENTION là một tham số trong Oracle Database, cho phép bạn chỉ định (theo giây) thời gian mà thông tin Undo đã được xác nhận sẽ được giữ lại. Bạn có thể thiết lập tham số này trong các trường hợp sau:
- Undo tablespace đã được kích hoạt tùy chọn AUTOEXTEND: Khi undo tablespace có tùy chọn AUTOEXTEND được bật, bạn có thể sử dụng tham số UNDO_RETENTION để xác định thời gian giữ Undo. Điều này đảm bảo rằng thông tin Undo được giữ trong một khoảng thời gian nhất định, dựa trên nhu cầu của ứng dụng.
- Bạn muốn thiết lập giữ Undo cho các LOB (Large Objects): Trong trường hợp bạn muốn áp dụng giữ Undo cho các LOB, bạn cũng có thể sử dụng tham số UNDO_RETENTION để xác định thời gian giữ lại Undo cho LOB cụ thể.
- Bạn muốn đảm bảo tính nhất quán của dữ liệu Undo: Nếu bạn muốn đảm bảo rằng dữ liệu Undo đã xác nhận sẽ được giữ lại trong một khoảng thời gian nhất định mà không bị xóa đi, bạn có thể sử dụng tham số UNDO_RETENTION để đảm bảo tính nhất quán của cơ sở dữ liệu.
Cấu hình giữ Undo thông qua tham số UNDO_RETENTION là một phương pháp quan trọng để kiểm soát và đảm bảo tính nhất quán của dữ liệu Undo trong Oracle Database. Bằng cách thiết lập thời gian giữ lại Undo theo yêu cầu và các tùy chọn khác nhau, bạn có thể đảm bảo rằng dữ liệu Undo sẽ được duy trì trong khoảng thời gian phù hợp và phù hợp với nhu cầu của ứng dụng của bạn.
Thực hành:
Để cấu hình tham số UNDO_RETENTION trong Oracle Database, bạn có thể tuân theo các bước sau:
Bước 1:
Kiểm tra trạng thái hiện tại của tham số UNDO_RETENTION bằng cách thực hiện truy vấn sau:
SQL> SELECT name, value FROM v$parameter WHERE name = 'undo_retention';
Bước 2:
Xác định giá trị thời gian (tính bằng giây) mà bạn muốn cấu hình cho UNDO_RETENTION. Ví dụ, giả sử bạn muốn giữ lại thông tin Undo đã xác nhận trong 3600 giây (1 giờ).
Bước 3:
Sử dụng câu lệnh ALTER SYSTEM để thiết lập giá trị cho tham số UNDO_RETENTION:
SQL> ALTER SYSTEM SET undo_retention = 3600;
Lưu ý: Đối với ALTER SYSTEM, bạn cần có quyền SYSDBA hoặc SYSOPER để thực hiện.
Bước 4:
Kiểm tra lại xem tham số UNDO_RETENTION đã được cấu hình thành công bằng cách thực hiện lại truy vấn từ Bước 1:
SQL> SELECT name, value FROM v$parameter WHERE name = 'undo_retention';
Kết quả truy vấn sẽ cho thấy giá trị mới của tham số UNDO_RETENTION.
Lưu ý: Cấu hình tham số UNDO_RETENTION chỉ áp dụng cho undo tablespace có tùy chọn AUTOEXTEND được bật. Đồng thời, tham số này cũng chỉ áp dụng cho các phiên bản Oracle Database từ 9i trở lên.
Ví dụ: Bạn đã cấu hình thành công tham số UNDO_RETENTION thành 3600 giây, điều này đồng nghĩa rằng dữ liệu Undo đã xác nhận sẽ được giữ lại trong 1 giờ trước khi bị xóa. Điều này giúp đảm bảo tính nhất quán của cơ sở dữ liệu và hỗ trợ các hoạt động như Flashback và truy vấn đồng nhất.
Các loại UNDO data trong Oracle DB
Thông tin Undo được chia thành ba loại:
- Thông tin Undo chưa được cam kết (Active): Hỗ trợ một giao dịch đang chạy và cần thiết nếu người dùng muốn hoàn tác hoặc nếu giao dịch gặp lỗi. Thông tin Undo chưa được cam kết không bao giờ bị ghi đè.
- Thông tin Undo đã được cam kết (Unexpired): Không còn cần thiết để hỗ trợ giao dịch đang chạy nhưng vẫn cần để đáp ứng khoảng thời gian lưu giữ Undo. Được gọi là thông tin Undo "unexpired". Thông tin Undo đã được cam kết được giữ lại nếu có thể mà không gây ra lỗi giao dịch đang hoạt động do thiếu không gian.
- Thông tin Undo đã hết hạn (Expired): Không còn cần thiết để hỗ trợ giao dịch đang chạy. Thông tin Undo đã hết hạn sẽ bị ghi đè khi giao dịch đang hoạt động yêu cầu thêm không gian.
Đảm bảo Retention của Undo
Mặc định, Undo sẽ ghi đè thông tin Undo của các giao dịch đã cam kết nhưng chưa hết hạn thay vì cho phép một giao dịch đang hoạt động gặp lỗi do thiếu không gian Undo. Tuy nhiên, bạn có thể thay đổi hành vi này bằng cách đảm bảo tính lưu giữ. Khi tính lưu giữ được đảm bảo, các thiết lập Undo retention sẽ được áp dụng ngay cả khi chúng gây ra lỗi cho các giao dịch.
Tính lưu giữ là một thuộc tính của tablespace Undo và không phải là một tham số khởi tạo. Bạn chỉ có thể thay đổi thuộc tính này bằng cách sử dụng các lệnh SQL trên dòng lệnh. Để đảm bảo tính lưu giữ cho một tablespace Undo, bạn có thể sử dụng câu lệnh sau:
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
Để trả lại một tablespace Undo đảm bảo tính lưu giữ về trạng thái bình thường, bạn có thể sử dụng câu lệnh sau:
SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;
Tuy chỉ áp dụng cho các tablespace Undo, nếu bạn cố gắng áp dụng tính lưu giữ cho một tablespace không phải là Undo, bạn sẽ nhận được thông báo lỗi sau:
SQL> ALTER TABLESPACE example RETENTION GUARANTEE;
ERROR at line 1:
ORA-30044: 'Retention' can only be specified for undo tablespace.
Thay đổi một tablespace Undo thành kích thước cố định
Bạn có thể có hai lý do để thay đổi tablespace Undo thành kích thước cố định: để hỗ trợ các hoạt động Flashback (khi bạn dự đoán sẽ sử dụng Undo trong tương lai) hoặc để ngăn tablespace phát triển quá lớn. Nếu bạn quyết định thay đổi tablespace Undo thành kích thước cố định, bạn phải chọn một kích thước đủ lớn để tránh hai lỗi sau đây:
- Giao dịch DML thất bại (do không đủ không gian để tạo Undo cho các giao dịch mới)
- Lỗi "Snapshot too old" (do không có đủ dữ liệu Undo để đảm bảo tính nhất quán cho các truy vấn)
Oracle khuyến nghị bạn chạy một khối lượng công việc đầy đủ thường xuyên để cho phép tablespace Undo tăng kích thước tối thiểu cần thiết. Các thống kê tự động thu thập bao gồm thời gian chạy truy vấn lâu nhất và tốc độ tạo Undo.
Tính toán kích thước tối thiểu của tablespace Undo dựa trên các thống kê này là đáng khuyến nghị cho một hệ thống không có các hoạt động Flashback và cho một hệ thống mà bạn không dự đoán sẽ có các truy vấn chạy lâu hơn trong tương lai.
Bạn có thể sử dụng Advisor Undo trong Enterprise Manager Cloud Control để nhập thời gian Undo mong muốn cho các truy vấn chạy lâu hơn và Flashback.
Undo tạm thời – Temporary Undo: Tổng quan
Bảng tạm thời được sử dụng phổ biến như các khu vực tạm thời để lưu trữ các kết quả trung gian. Điều này vì thay đổi các bảng tạm thời nhanh hơn so với các bảng không phải tạm thời. Hiệu suất được cải thiện chủ yếu do không tạo ra mục redo trực tiếp cho các thay đổi trên bảng tạm thời. Tuy nhiên, undo cho các hoạt động trên bảng tạm thời (và các chỉ mục) vẫn được ghi vào redo log.
Undo cho bảng tạm thời hữu ích cho việc đọc nhất quán và hoàn tác giao dịch trong suốt quá trình tồn tại của đối tượng tạm thời đó. Ngoài phạm vi này, undo là không cần thiết. Do đó, nó không cần được lưu trữ trong luồng redo. Ví dụ, phục hồi giao dịch chỉ cần loại bỏ undo cho các đối tượng tạm thời.
Bắt đầu từ Oracle Database 12c, có thể lưu trữ undo được tạo ra bởi các giao dịch của bảng tạm thời trong một luồng undo riêng biệt trực tiếp trong không gian bảng tạm thời để tránh việc ghi undo đó vào luồng redo. Chế độ này được gọi là undo tạm thời.
Lưu ý: Một đoạn undo tạm thời là riêng tư cho phiên làm việc. Nó lưu trữ undo cho các thay đổi trên các bảng tạm thời (đối tượng tạm thời nói chung) thuộc về phiên làm việc tương ứng.
Lợi ích của Undo tạm thời
Kích hoạt undo tạm thời mang đến những lợi ích sau đây:
- Undo tạm thời giảm số lượng undo được lưu trữ trong không gian bảng undo. Việc giảm undo trong không gian bảng undo có thể dẫn đến yêu cầu thời gian giữ undo thực tế hơn cho các bản ghi undo.
- Undo tạm thời giảm kích thước của redo log. Hiệu suất được cải thiện vì ít dữ liệu được ghi vào redo log và các thành phần phân tích các bản ghi redo log, như LogMiner, hoạt động tốt hơn vì có ít dữ liệu redo để phân tích.
- Undo tạm thời cho phép thực hiện các hoạt động ngôn ngữ thao tác dữ liệu (DML) trên các bảng tạm thời trong một cơ sở dữ liệu standby vật lý với tùy chọn Oracle Active Data Guard. Tuy nhiên, các hoạt động ngôn ngữ định nghĩa dữ liệu (DDL) tạo bảng tạm thời phải được thực hiện trên cơ sở dữ liệu chính.
Kích hoạt Undo Tạm thời
Bạn có thể kích hoạt undo tạm thời cho một phiên hoặc toàn bộ cơ sở dữ liệu. Khi bạn kích hoạt undo tạm thời cho một phiên bằng câu lệnh ALTER SESSION, phiên đó sẽ tạo undo tạm thời mà không ảnh hưởng đến các phiên khác. Khi bạn kích hoạt undo tạm thời cho hệ thống bằng câu lệnh ALTER SYSTEM, tất cả các phiên hiện có và phiên mới sẽ tạo undo tạm thời.
Khi một phiên sử dụng các đối tượng tạm thời lần đầu tiên, giá trị hiện tại của tham số khởi tạo TEMP_UNDO_ENABLED được thiết lập cho toàn bộ phiên. Do đó, nếu undo tạm thời được kích hoạt cho một phiên và phiên đó sử dụng các đối tượng tạm thời, thì không thể vô hiệu hóa undo tạm thời cho phiên đó. Tương tự, nếu undo tạm thời bị vô hiệu hóa cho một phiên và phiên đó sử dụng các đối tượng tạm thời, thì không thể kích hoạt undo tạm thời cho phiên đó.
Tính năng undo tạm thời chỉ có sẵn cho cơ sở dữ liệu có tham số khởi tạo COMPATIBLE được thiết lập ít nhất là 12.1.0.0.0.
Lưu ý: Undo tạm thời được kích hoạt theo mặc định cho một cơ sở dữ liệu standby vật lý với tùy chọn Oracle Active Data Guard. Tham số khởi tạo TEMP_UNDO_ENABLED không có tác dụng đối với cơ sở dữ liệu standby vật lý với tùy chọn Active Data Guard do thiết lập mặc định.
Ví dụ 1: Kích hoạt Undo tạm thời cho phiên (session)
Giả sử chúng ta có một phiên đang chạy trên cơ sở dữ liệu Oracle và chúng ta muốn kích hoạt Undo tạm thời cho phiên này. Chúng ta có thể sử dụng câu lệnh ALTER SESSION để thực hiện điều này. Dưới đây là ví dụ:
```
-- Kích hoạt Undo tạm thời cho phiên
ALTER SESSION SET TEMP_UNDO_ENABLED = TRUE;
```
Sau khi thực hiện câu lệnh trên, phiên hiện tại sẽ được cấu hình để tạo Undo tạm thời cho các hoạt động tạm thời trong phiên đó.
Ví dụ 2: Kích hoạt Undo tạm thời cho toàn bộ instance
Nếu chúng ta muốn kích hoạt Undo tạm thời cho toàn bộ cơ sở dữ liệu, chúng ta có thể sử dụng câu lệnh ALTER SYSTEM. Dưới đây là ví dụ:
```
-- Kích hoạt Undo tạm thời cho toàn bộ instance
ALTER SYSTEM SET TEMP_UNDO_ENABLED = TRUE;
```
Sau khi thực hiện câu lệnh trên, tất cả các phiên hiện có và các phiên mới sẽ được cấu hình để tạo Undo tạm thời cho các hoạt động tạm thời trong cơ sở dữ liệu.
Giám sát Undo tạm thời
Bảng V$TEMPUNDOSTAT hiển thị các thống kê liên quan đến nhật ký Undo tạm thời cho instance cơ sở dữ liệu. Nó hiển thị một biểu đồ thống kê để cho thấy cách hệ thống hoạt động.
Mỗi hàng trong bảng chứa các thống kê được thu thập trong instance trong một khoảng thời gian 10 phút. Các hàng được sắp xếp theo giá trị cột BEGIN_TIME theo thứ tự giảm dần. Bảng này có tổng cộng 576 hàng, bao gồm một chu kỳ 4 ngày. Bảng này tương tự như bảng V$UNDOSTAT.
Ví dụ dưới đây mô tả một số cột quan trọng trong bảng V$TEMPUNDOSTAT:
- BEGIN_TIME: Xác định thời điểm bắt đầu của khoảng thời gian
- TXNCOUNT: Tổng số giao dịch đã liên kết với đoạn Undo tạm thời trong khoảng thời gian tương ứng
- MAXCONCURRENCY: Số lượng giao dịch cao nhất được thực thi đồng thời, đã thay đổi các đối tượng tạm thời trong khoảng thời gian tương ứng
- UNDOBLKCNT: Tổng số khối Undo tạm thời đã sử dụng trong khoảng thời gian tương ứng
- USCOUNT: Số lượng đoạn Undo tạm thời đã được tạo trong khoảng thời gian tương ứng
- NOSPACEERRCNT: Tổng số lần gặp lỗi không còn không gian để lưu trữ Undo tạm thời trong khoảng thời gian tương ứng