0
0
Lập trình
Admin Team
Admin Teamtechmely

Oracle 19c: Chỉ Kiểm Tra Các Lệnh SQL Cấp Cao

Đăng vào 6 tháng trước

• 4 phút đọc

Giới thiệu

Trong Oracle 19c, tính năng mới "Kiểm Tra Chỉ Lệnh SQL Cấp Cao" cho phép bạn tối ưu hóa việc ghi lại nhật ký kiểm tra (audit trail) một cách hiệu quả hơn. Nếu khối lượng nhật ký từ tính năng kiểm tra thống nhất quá lớn, việc tham khảo và duy trì nhật ký có thể dẫn đến các vấn đề về hiệu suất và thiếu hụt dung lượng lưu trữ. Do đó, việc cấu hình kiểm tra cần được thực hiện sao cho không lưu trữ thông tin không cần thiết trong bảng liên quan.

Tính năng Kiểm Tra Chỉ Lệnh SQL Cấp Cao

Tính năng mới này cho phép bạn kích hoạt kiểm tra chỉ cho các lệnh được thực thi trực tiếp bởi người dùng (các lệnh cấp cao - Top-Level statements) và bỏ qua các lệnh được thực thi như một phần của cuộc gọi thủ tục. Điều này giúp giảm thiểu lượng dữ liệu không cần thiết trong nhật ký kiểm tra.

Cách sử dụng tính năng này

Để sử dụng tính năng này, bạn chỉ cần thêm điều khoản ONLY TOPLEVEL vào câu lệnh CREATE AUDIT POLICY. Để kiểm tra các chính sách kiểm tra đang sử dụng tính năng này, bạn có thể xem cột AUDIT_ONLY_TOPLEVEL trong view AUDIT_UNIFIED_POLICIES.

Ví dụ thực tế

Giả sử bạn có một thủ tục như sau:

sql Copy
CREATE OR REPLACE PROCEDURE myproc1 AS
BEGIN
    INSERT INTO mytbl SELECT * FROM v$datafile;
    INSERT INTO mytbl SELECT * FROM v$datafile;
    INSERT INTO mytbl SELECT * FROM v$datafile;
    INSERT INTO mytbl SELECT * FROM v$datafile;
    INSERT INTO mytbl SELECT * FROM v$datafile;
    INSERT INTO mytbl SELECT * FROM v$datafile;
    INSERT INTO mytbl SELECT * FROM v$datafile;
    INSERT INTO mytbl SELECT * FROM v$datafile;
    INSERT INTO mytbl SELECT * FROM v$datafile;
    COMMIT;
END;

Tạo chính sách kiểm tra

Để kiểm tra một số hành động thực hiện bởi người dùng usef, bạn sẽ tạo một chính sách kiểm tra như sau:

sql Copy
CREATE AUDIT POLICY actions_all_pol ACTIONS ALL;

Sau đó, bạn kích hoạt chính sách kiểm tra vừa tạo cho người dùng usef:

sql Copy
AUDIT POLICY actions_all_pol BY usef;

Khi người dùng usef thực thi thủ tục myproc1:

sql Copy
EXEC myproc1;
PL/SQL procedure successfully completed

Kiểm tra nhật ký

Bằng việc kiểm tra view unified_audit_trail, bạn sẽ thấy rằng đã có 11 bản ghi được thêm vào nhật ký kiểm tra cho lần thực thi thủ tục này:

sql Copy
SELECT COUNT(*) FROM unified_audit_trail f WHERE f.unified_audit_policies='ACTIONS_ALL_POL';

Kết quả:

Copy
11

Bạn có thể hiển thị thông tin được ghi lại với câu lệnh sau:

sql Copy
SELECT f.sessionid, f.action_name, f.object_schema, f.object_name FROM unified_audit_trail f WHERE f.unified_audit_policies='ACTIONS_ALL_POL';

Như vậy, văn bản của các lệnh INSERT bên trong thủ tục myproc1 đã được ghi lại trong nhật ký kiểm tra.

Sử dụng tính năng Kiểm Tra Chỉ Lệnh SQL Cấp Cao

Giả sử bạn muốn sử dụng tính năng này để ngăn chặn việc ghi lại thông tin không cần thiết. Hãy làm theo các bước sau:

  1. Xóa các bản ghi hiện có khỏi bảng aud$unified và vô hiệu hóa chính sách kiểm tra đã tạo:
sql Copy
BEGIN
    dbms_audit_mgmt.clean_audit_trail(
        audit_trail_type => dbms_audit_mgmt.audit_trail_unified,
        use_last_arch_timestamp => FALSE
    );
END;
/

NOAUDIT POLICY actions_all_pol BY usef;
  1. Tạo một chính sách kiểm tra mới với điều khoản ONLY TOPLEVEL:
sql Copy
CREATE AUDIT POLICY TOPLEVEL_on ACTIONS ALL ONLY TOPLEVEL;
  1. Kích hoạt chính sách kiểm tra mới cho người dùng usef:
sql Copy
AUDIT POLICY TOPLEVEL_on BY usef;
  1. Thực thi thủ tục bởi người dùng usef:
sql Copy
EXEC myproc1;
PL/SQL procedure successfully completed
  1. Với lần thực thi này, chỉ có 1 bản ghi sẽ được thêm vào nhật ký kiểm tra:
sql Copy
SELECT f.sessionid, f.action_name, f.sql_text
FROM unified_audit_trail f
WHERE f.unified_audit_policies = 'TOPLEVEL_ON';

Kết luận

Với tính năng "Kiểm Tra Chỉ Lệnh SQL Cấp Cao" trong Oracle 19c, bạn có thể giảm thiểu dung lượng nhật ký kiểm tra bằng cách chỉ ghi lại những lệnh SQL cấp cao do người dùng thực thi. Điều này không chỉ giúp tiết kiệm dung lượng lưu trữ mà còn cải thiện hiệu suất của hệ thống. Hãy áp dụng tính năng này trong môi trường Oracle của bạn để có được hiệu quả tốt nhất trong việc quản lý nhật ký kiểm tra.

Mẹo và Lưu ý

  • Thực hiện sao lưu thường xuyên: Đảm bảo rằng bạn có quy trình sao lưu để tránh mất mát dữ liệu.
  • Theo dõi hiệu suất: Luôn theo dõi hiệu suất của hệ thống khi áp dụng các chính sách kiểm tra mới.
  • Kiểm tra thường xuyên: Hãy kiểm tra các bản ghi nhật ký để đảm bảo rằng chúng đang hoạt động như mong đợi.

Câu hỏi thường gặp (FAQ)

  1. Tính năng này có hoạt động với tất cả các phiên bản Oracle không?

    • Tính năng "Kiểm Tra Chỉ Lệnh SQL Cấp Cao" chỉ khả dụng trong Oracle 19c trở lên.
  2. Tôi có thể kiểm tra nhiều người dùng cùng một lúc không?

    • Có, bạn có thể kích hoạt chính sách kiểm tra cho nhiều người dùng bằng cách chỉ định tên người dùng trong câu lệnh.
  3. Có cách nào để xem các chính sách kiểm tra đã được tạo không?

    • Bạn có thể sử dụng câu lệnh SELECT * FROM AUDIT_UNIFIED_POLICIES để xem danh sách các chính sách kiểm tra đã được tạo.
  4. Làm thế nào để xoá dữ liệu trong nhật ký kiểm tra?

    • Bạn có thể sử dụng DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL để xoá dữ liệu trong nhật ký kiểm tra.
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào