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
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
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
AUDIT POLICY actions_all_pol BY usef;
Khi người dùng usef thực thi thủ tục myproc1:
sql
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
SELECT COUNT(*) FROM unified_audit_trail f WHERE f.unified_audit_policies='ACTIONS_ALL_POL';
Kết quả:
11
Bạn có thể hiển thị thông tin được ghi lại với câu lệnh sau:
sql
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:
- Xóa các bản ghi hiện có khỏi bảng
aud$unifiedvà vô hiệu hóa chính sách kiểm tra đã tạo:
sql
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;
- Tạo một chính sách kiểm tra mới với điều khoản
ONLY TOPLEVEL:
sql
CREATE AUDIT POLICY TOPLEVEL_on ACTIONS ALL ONLY TOPLEVEL;
- Kích hoạt chính sách kiểm tra mới cho người dùng
usef:
sql
AUDIT POLICY TOPLEVEL_on BY usef;
- Thực thi thủ tục bởi người dùng
usef:
sql
EXEC myproc1;
PL/SQL procedure successfully completed
- 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
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)
-
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.
-
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.
-
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.
- Bạn có thể sử dụng câu lệnh
-
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.
- Bạn có thể sử dụng