[Script] Tìm ra nguyên nhân khiến hệ thống CSDL oracle switchlog nhiều

19:54

ORAPLUS xin chào các bạn!

Trong bài này mình sẽ hướng dẫn các bạn cách "Tìm ra object nào khiến hệ thống switchlog nhiều" trong một khoảng thời gian biết trước.



Trong quá trình chúng ta vận hành database, sẽ không tránh khỏi những câu hỏi của sếp như:
  • Tìm cho anh xem thủ phạm khiến switchlog thời điểm đó là gì?
  • Câu lệnh nào khiến hệ thống switchlog nhiều?
  • V.v.. 
Để trả lời cho câu hỏi này, chúng ta cần có chút võ (ở đây là script monitor) để biết được thủ phạm là object nào. Chúng ta thực hiện câu lệnh sau (mình đang lấy điệu kiện >= sysdate -1):

SELECT TO_CHAR (begin_interval_time, 'YY-MM-DD HH24') snap_time,
         dhso.object_name,
         SUM (db_block_changes_delta) BLOCK_CHANGED
    FROM dba_hist_seg_stat dhss,
         dba_hist_seg_stat_obj dhso,
         dba_hist_snapshot dhs
   WHERE     dhs.snap_id = dhss.snap_id
         AND dhs.instance_number = dhss.instance_number
         AND dhss.obj# = dhso.obj#
         AND dhss.dataobj# = dhso.dataobj#
         AND begin_interval_time >= SYSDATE - 1
GROUP BY TO_CHAR (begin_interval_time, 'YY-MM-DD HH24'), dhso.object_name
  HAVING SUM (db_block_changes_delta) > 0
ORDER BY SUM (db_block_changes_delta) DESC;
/

Nếu có khoảng thời gian cụ thể các bạn có thể thay bằng đoạn sau (mình lấy từ 08h ngày 12/02/15 đến 11h cùng ngày):

SELECT TO_CHAR (begin_interval_time, 'YY-MM-DD HH24') snap_time,
         dhso.object_name,
         SUM (db_block_changes_delta) BLOCK_CHANGED
    FROM dba_hist_seg_stat dhss,
         dba_hist_seg_stat_obj dhso,
         dba_hist_snapshot dhs
   WHERE     dhs.snap_id = dhss.snap_id
         AND dhs.instance_number = dhss.instance_number
         AND dhss.obj# = dhso.obj#
         AND dhss.dataobj# = dhso.dataobj#
         AND begin_interval_time BETWEEN TO_DATE ('15-02-12 08:00', 'YY-MM-DD HH24:MI') AND TO_DATE ('15-02-13 11:00', 'YY-MM-DD HH24:MI')
GROUP BY TO_CHAR (begin_interval_time, 'YY-MM-DD HH24'), dhso.object_name
  HAVING SUM (db_block_changes_delta) > 0
ORDER BY SUM (db_block_changes_delta) DESC;
/


Để xem thêm nhiều script về monitor cũng như quản trị CSDL Oracle, các bạn có thể nhấn vào ĐÂY.

Trên đó là một vài quan điểm cá nhân của mình, mọi ý kiến đóng góp vui lòng gửi về địa chỉ oraplus.net@gmail.com

---ORAPLUS team---

You Might Also Like

2 nhận xét

  1. Đúng cái mình đang cần. Cam ơn ad nhé, nhưng mà trang ít bài qua :)

    Trả lờiXóa
    Trả lời
    1. Site đang trong quá trình hoàn thiện, rất mong nhận được những ý kiến đóng góp từ bạn :)
      Thanks!

      Xóa

Popular Posts

Like us on Facebook

Flickr Images