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

Đăng nhập để làm sạch các tệp có dấu ngày tháng

Logrotate xóa các tệp theo thứ tự trong danh sách được sắp xếp từ vựng gồm các tên tệp nhật ký được xoay vòng, và cả theo tuổi của tệp (sử dụng thời gian sửa đổi cuối cùng của tệp)

  • xoay là số lượng tệp được xoay tối đa, bạn có thể tìm thấy. Nếu có số lượng tệp nhật ký được xoay nhiều hơn, tên của chúng sẽ được sắp xếp theo từ vựng và những tệp nhỏ nhất về mặt từ vựng sẽ bị loại bỏ.

  • tối đa xác định một tiêu chí khác để xóa các tệp nhật ký đã xoay. Mọi tệp nhật ký đã xoay, cũ hơn số ngày nhất định sẽ bị xóa. Lưu ý rằng ngày được phát hiện từ lần sửa đổi cuối cùng của tệp, không phải từ tên tệp.

  • định dạng ngày cho phép định dạng cụ thể cho ngày tháng trong các tệp được xoay. Trang người đàn ông lưu ý rằng định dạng sẽ dẫn đến việc sắp xếp chính xác về mặt từ vựng .

  • ngày hôm qua cho phép sử dụng ngày tháng trong tên tệp nhật ký vào một ngày trước đó.

Để giữ số ngày nhất định trong các tệp được xoay vòng hàng ngày (ví dụ:7), bạn phải đặt rotate đến giá trị 7 và bạn có thể bỏ qua maxage , nếu các tệp của bạn được tạo và xoay vòng thực sự hàng ngày.

Nếu quá trình tạo nhật ký không diễn ra trong vài ngày, ví dụ:trong 14 ngày, số tệp nhật ký đã xoay sẽ vẫn như cũ (7).

maxage sẽ cải thiện tình hình trong các kịch bản "nhật ký không được tạo" bằng cách luôn xóa các tệp quá cũ. Sau 7 ngày không sản xuất nhật ký, sẽ không có tệp nhật ký được xoay vòng nào.

Bạn không thể sử dụng dateformat như OP cho thấy, vì nó không thể sắp xếp từ vựng. Lộn xộn với dateformat có thể sẽ dẫn đến việc xóa các tệp nhật ký xoay vòng khác mà bạn thực sự muốn.

Mẹo :Chạy logrotate từ dòng lệnh với -d tùy chọn để thực hiện chạy khô:bạn sẽ thấy những gì logrotate sẽ làm nhưng không thực sự làm bất cứ điều gì. Sau đó, thực hiện chạy thủ công bằng -v (dài dòng) để bạn có thể xác nhận rằng những gì được thực hiện là những gì bạn muốn.

Giải pháp:nhật ký sạch được tạo bởi cron

Khái niệm là:

Cho phép cron tạo và cập nhật tệp nhật ký, nhưng thực hiện sửa đổi nhỏ để tạo tệp, tuân theo tên tệp chuẩn logrotate khi sử dụng dateext mặc định

/data/tier2/scripts/logs/recover_standby_SID.log-`date +\%Y\%m\%d`.log

Chỉ sử dụng logrotate để xóa các tệp nhật ký quá cũ

  • nhắm vào tệp nhật ký không hiện có /data/tier2/scripts/logs/recover_standby_SID.log
  • sử dụng missingok để việc dọn dẹp logrotate diễn ra
  • đặt rotate đủ cao để bao gồm số lượng tệp nhật ký cần lưu giữ (ít nhất 7 tệp, nếu sẽ có một tệp nhật ký "xoay" mỗi ngày, nhưng bạn có thể an toàn đặt nó rất cao như 9999)
  • đặt maxage thành 7. Thao tác này sẽ xóa các tệp có thời gian sửa đổi lần cuối cao hơn 7 ngày.
  • dateext được sử dụng chỉ để đảm bảo, xoay vòng các tìm kiếm cho các tệp cũ hơn trông giống như được xoay vòng.

Tệp cấu hình logrotate sẽ giống như sau:

data/tier2/scripts/logs/recover_standby_SID.log {
    daily
    missingok
    rotate 9999
    maxage 7
    dateext
}

Giải pháp:xoay trực tiếp bằng logrotate mỗi ngày một lần

Tôi không rõ, tệp dự phòng khôi phục nguồn được tạo như thế nào, nhưng tôi sẽ giả sử rằng Oracle hoặc một số tập lệnh của bạn thường xuyên hoặc liên tục thêm vào một tệp /data/tier2/scripts/logs/recover_standby_SID.log

Khái niệm là:

  • xoay tệp mỗi ngày một lần bằng logrotate
  • làm việc trực tiếp với tệp nhật ký chứa dữ liệu khôi phục /data/tier2/scripts/logs/recover_standby_SID.log
  • daily sẽ gây ra xoay vòng mỗi ngày một lần (về cách thức cron hiểu daily )
  • rotate phải được đặt thành 7 (hoặc bất kỳ số nào cao hơn).
  • maxage đặt thành 7 (ngày)
  • dateext để sử dụng hậu tố ngày logrotate mặc định
  • dateyesterday được sử dụng để tạo ra các hậu tố ngày tháng trong các tệp được xoay vòng là một ngày trở lại.
  • missingok để làm sạch các tệp cũ hơn ngay cả khi không có nội dung mới để xoay.

Cấu hình logrotate sẽ giống như sau:

data/tier2/scripts/logs/recover_standby_SID.log {
    daily
    missingok
    rotate 7
    maxage 7
    dateext
    dateyesterday
}

Lưu ý rằng bạn có thể cần chơi một chút với copytruncate và các tùy chọn tương tự khác liên quan đến cách tệp nhật ký nguồn được tạo bởi quy trình bên ngoài và cách nó phản ứng với hành động xoay vòng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL Date to Long và ngược lại

  2. ORA-29278:Lỗi tạm thời SMTP:Dịch vụ không khả dụng khi chạy UTL_MAIL

  3. Lỗi SQL:ORA-00907:thiếu dấu ngoặc đơn bên phải

  4. Cách tìm các bản ghi có phạm vi ngày trùng lặp đệ quy trong Oracle DB

  5. Oracle PL / SQL - Cách tạo một biến mảng đơn giản?