Khi làm việc với AWR (Automatic Workload Repository) trong Oracle Database, một số người dùng có thể gặp phải tình trạng thiếu thông tin về thống kê I/O của tablespace. Điều này có thể gây khó khăn trong việc theo dõi và phân tích hiệu suất của hệ thống. Dưới đây là hướng dẫn chi tiết để xử lý lỗi này, bao gồm các nguyên nhân phổ biến và cách khắc phục.

1. Kiểm tra cấu hình AWR

Để AWR thu thập thông tin về thống kê I/O của tablespace, cần đảm bảo rằng nó đã được cấu hình đúng cách.

1.1. Kiểm tra thông số statistics_level

Đầu tiên, hãy kiểm tra giá trị của tham số statistics_level trong cơ sở dữ liệu của bạn. Tham số này quyết định mức độ thu thập thông tin thống kê.

SHOW PARAMETER statistics_level;
  • Giá trị của statistics_level cần phải là TYPICAL hoặc ALL. Nếu không, bạn có thể thay đổi bằng cách sử dụng lệnh sau:
ALTER SYSTEM SET statistics_level=TYPICAL SCOPE=BOTH;

2. Kiểm tra trạng thái của tablespace

Đảm bảo rằng các tablespace bạn quan tâm đều hoạt động bình thường và không ở trạng thái offline.

2.1. Kiểm tra trạng thái tablespace

Sử dụng câu lệnh sau để xem trạng thái của tất cả các tablespace trong cơ sở dữ liệu:

SELECT tablespace_name, status FROM dba_tablespaces;
  • Nếu bất kỳ tablespace nào có trạng thái OFFLINE, bạn cần phải đưa nó trở lại trạng thái ONLINE bằng cách:
ALTER TABLESPACE <tên_tablespace> ONLINE;

3. Kiểm tra thông tin I/O

Tiếp theo, bạn cần kiểm tra xem thông tin I/O có đang được thu thập không. Điều này giúp xác định xem dữ liệu thống kê đã được ghi nhận hay chưa.

3.1. Kiểm tra thống kê I/O của tablespace

Sử dụng câu lệnh sau để lấy thông tin về việc sử dụng tablespace:

SELECT *
FROM v$tablespace_usage_metrics;
  • Nếu không có dữ liệu, có thể là do các thống kê chưa được thu thập hoặc tablespace chưa hoạt động.

4. Kiểm tra cài đặt thu thập thống kê I/O

Hãy đảm bảo rằng việc thu thập thống kê I/O đã được bật trong cơ sở dữ liệu. Điều này có thể được thực hiện qua các lệnh dưới đây.

4.1. Thu thập thống kê cho dictionary

Sử dụng lệnh sau để thu thập thống kê cho dictionary, điều này sẽ bao gồm cả thông tin I/O:

EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
  • Lệnh này sẽ thu thập tất cả thông tin cần thiết mà AWR cần để tạo ra báo cáo chính xác.

5. Kiểm tra quyền truy cập

Đảm bảo rằng tài khoản người dùng mà bạn đang sử dụng để truy vấn AWR có đủ quyền truy cập. Tài khoản này cần có quyền SELECT trên các views liên quan đến AWR.

5.1. Kiểm tra quyền

Bạn có thể kiểm tra quyền của tài khoản bằng lệnh sau:

SELECT * FROM user_sys_privs WHERE privilege LIKE '%SELECT%';
  • Nếu tài khoản không có quyền cần thiết, hãy cấp quyền cho tài khoản bằng cách sử dụng lệnh:
GRANT SELECT ON dba_hist_tbspc_io_stat TO <tên_tài_khoản>;

6. Tạo lại AWR Snapshot

Nếu các bước trên không khắc phục được vấn đề, bạn có thể thử tạo lại AWR Snapshot. Điều này có thể giúp hệ thống ghi nhận lại các số liệu thống kê mới nhất.

6.1. Tạo AWR Snapshot

Sử dụng lệnh sau để tạo AWR Snapshot mới:

EXEC DBMS_WORKLOAD_REPOSITORY.create_snapshot;
  • Sau khi tạo snapshot, hãy kiểm tra lại thông tin thống kê I/O.

7. Cập nhật Oracle

Nếu vẫn còn gặp vấn đề sau khi thực hiện tất cả các bước trên, hãy kiểm tra xem có bản cập nhật hoặc bản vá nào cho phiên bản Oracle của bạn. Oracle thường phát hành các bản vá để khắc phục lỗi và cải thiện hiệu suất của hệ thống.

7.1. Kiểm tra bản cập nhật

Truy cập trang web chính thức của Oracle hoặc sử dụng lệnh sau để kiểm tra bản cập nhật:

SELECT * FROM v$version;

Kết luận

Thiếu thông tin về thống kê I/O của tablespace trong AWR có thể gây ra khó khăn trong việc theo dõi hiệu suất của hệ thống. Tuy nhiên, bằng cách thực hiện các bước kiểm tra và khắc phục như đã nêu trên, bạn có thể khắc phục lỗi này một cách hiệu quả. Nếu vấn đề vẫn tiếp diễn, bạn nên liên hệ với bộ phận hỗ trợ kỹ thuật của Oracle để được trợ giúp thêm. Hy vọng rằng hướng dẫn này sẽ giúp bạn giải quyết vấn đề một cách nhanh chóng và hiệu quả!