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

Kiểm toán trong Oracle

Nếu bạn có phiên bản doanh nghiệp 10g, bạn nên xem Kiểm toán chi tiết của Oracle. Nó chắc chắn sẽ tốt hơn so với việc bạn tự làm.

Nhưng nếu bạn có phiên bản nhỏ hơn hoặc vì lý do nào đó FGA không phù hợp với sở thích của bạn, thì đây là cách thực hiện. Điều quan trọng là: xây dựng một bảng kiểm tra riêng cho từng bảng ứng dụng .

Tôi biết đây không phải là điều bạn muốn nghe vì nó không phù hợp với cấu trúc bảng mà bạn đã nêu ở trên. Nhưng lưu trữ một hàng với các giá trị CŨ và MỚI cho mỗi cột bị ảnh hưởng bởi bản cập nhật là một ý tưởng thực sự tồi:

  1. Nó không chia tỷ lệ (một bản cập nhật duy nhất chạm vào mười cột sẽ tạo ra mười lần chèn)
  2. Còn khi bạn chèn một bản ghi thì sao?
  3. Hoàn toàn khó khăn khi tập hợp trạng thái của một bản ghi tại bất kỳ thời điểm nào

Vì vậy, hãy có một bảng kiểm tra cho mỗi bảng ứng dụng, với cấu trúc giống hệt nhau. Điều đó có nghĩa là bao gồm CHANGED_TIMESTAMP và CHANGED_USER trên bảng ứng dụng, nhưng đó không phải là một điều xấu.

Cuối cùng, và bạn biết điều này đang dẫn đến đâu, hãy có một trình kích hoạt trên mỗi bảng để chèn toàn bộ bản ghi chỉ với:các giá trị MỚI vào bảng kiểm tra. Trình kích hoạt sẽ kích hoạt khi CHÈN và CẬP NHẬT. Điều này mang lại lịch sử hoàn chỉnh, đủ dễ dàng để phân biệt hai phiên bản của hồ sơ. Đối với DELETE, bạn sẽ chèn một bản ghi kiểm tra chỉ với khóa chính được điền và tất cả các cột khác đều trống.

Sự phản đối của bạn sẽ là bạn có quá nhiều bảng và quá nhiều cột để triển khai tất cả các đối tượng này. Nhưng nó đủ đơn giản để tạo bảng và kích hoạt các câu lệnh DDL từ từ điển dữ liệu (user_tables, user_tab_columns).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mặt nạ định dạng ngày Oracle cho múi giờ là gì?

  2. Hàm RAWTONHEX () trong Oracle

  3. Hàm TRUNC (số) trong Oracle

  4. Sử dụng pivot trên nhiều cột của một hàng Oracle

  5. Chèn một lượng lớn dữ liệu hiệu quả với SQL