2012-01-25 13 views
5

Giả sử bạn có hai cơ sở dữ liệu Oracle, DB_A và DB_B. Có một bảng tên tab1 trong DB_A với một khúc gỗ nhìn cụ thể hóa, và một cái nhìn cụ thể hóa tên SNAP_TAB1 trong DB_B tạo ra vớiCó cách nào để truy vấn các thay đổi được thực hiện bởi chế độ xem được làm mới nhanh trong Oracle?

CREATE SNAPSHOT SNAP_TAB1 
REFRESH FAST 
AS SELECT * FROM [email protected]_A; 

Có cách nào để truy vấn trong DB_B những thay đổi thực hiện để SNAP_TAB1 sau mỗi cuộc gọi đến tiến nhanh làm mới quan điểm vật hoá?

DBMS_SNAPSHOT.REFRESH('SNAP_TAB1', 'F'); 

Trong DB_A, trước khi làm mới, bạn có thể truy vấn bảng nhật ký xem vật hoá, MLOG $ _TAB1, để xem hàng nào đã được thay đổi trong TAB1. Tôi đang tìm một cách để truy vấn trong DB_B, sau mỗi lần làm mới, những hàng nào đã được làm mới trong SNAP_TAB1.

Cảm ơn!

Trả lời

1

Tôi nghĩ rằng các dòng dưới đây làm việc với bảng dựng sẵn:

Bạn có thể thêm một cột trong bảng SNAP_TAB1.

Để chèn Bạn có thể đặt nó trên default sysdate => cho mỗi lần chèn bạn sẽ có dấu thời gian chèn.

Để cập nhật, bạn có thể sử dụng trình kích hoạt. Vì cột không được tham gia vào Chế độ xem vật hoá nên việc cập nhật cột bằng trình kích hoạt sẽ không thành vấn đề.

Probaly tốt hơn, với sự kích hoạt, bạn có thể sử dụng một id duy nhất để lưu trữ trong cột đó, tăng lên trước mỗi refresh mới. (Lấy id duy nhất có thể có aproaches khác nhau.)

Rõ ràng, bạn có thể' t theo dõi xóa với ý tưởng này.