2009-09-25 35 views
5

Tôi đang nói về oracle. Tôi có một vài quan điểm vật hoá, và chúng được cập nhật theo thời gian (nó được thực hiện với một nhiệm vụ theo lịch trình). Thật dễ dàng để biết ngày làm mới cuối cùng - chỉ cần truy vấn USER_MVIEW_REFRESH_TIMES. Và có cách nào để biết liệu một số chế độ xem đang được cập nhật trong thời điểm hiện tại không?Làm cách nào để biết liệu cập nhật CHẾ ĐỘ HOẠT ĐỘNG có đang chạy không?

Trả lời

4

bạn có thể thấy gián tiếp nếu chế độ xem vật liệu đang được làm mới bằng cách xem liệu quy trình có chứa khóa trên đó hay không: chế độ xem vật chất chỉ được sửa đổi khi được làm mới (ngoại trừ FOR UPDATE lần xem được sử dụng để sao chép hai chiều).

truy vấn này sẽ trả về hàng chỉ khi nhìn cụ thể hóa của bạn đang được làm mới:

xem
SELECT sid 
    FROM v$lock 
WHERE type = 'TX' 
    AND id1 = (SELECT object_id 
       FROM all_objects 
       WHERE owner = :owner 
       AND object_name = :object_name) 
4

thể hóa được định nghĩa được làm mới theo một lịch trình với" ... BẮT ĐẦU VỚI ... TIẾP THEO ... "như một phần của DDL của họ sẽ được thực hiện dưới sự kiểm soát DBMS_JOB. Nếu đang làm mới các MV này, bạn sẽ thấy các giá trị cho THIS_DATE và THIS_SEC trong chế độ xem USER_JOBS (hoặc DBA_JOBS) cho công việc tương ứng và/hoặc một hàng trong DBA_JOBS_RUNNING.

Nếu bạn đã xác định MV sẽ được làm mới theo yêu cầu và đang khởi chạy làm mới bên ngoài thì câu trả lời của Vincent là một cách để xác định trạng thái.

+0

Cảm ơn bạn đã phản hồi. Nhưng các khung nhìn được cập nhật với nhiệm vụ java bên ngoài. –

5

Bạn có thể thử:

SELECT CURRMVOWNER, CURRMVNAME FROM V$MVREFRESH

để có được danh sách các quan điểm làm mới ngay bây giờ.

Các vấn đề liên quan