Xoá các xung đột

Một phần của tài liệu CSDL Oracle (Trang 55 - 56)

VIII. giải quyết xung đột trong Oracle

2. Xoá các xung đột

Khi truyền các thay đổi trong một môi trờng sao bản bởi việc cố gắng làm trì hoãn hàng đợi giao tác, symmetric replication facility của Oracle gọi một thủ tục từ xa trong package đợc sinh ra tại vị trí nhận để phát hiện các xung đột. Ví dụ: Hai vị trí sửa đổi cùng một hàng trớc sự truyền các cập nhật của chúng tới các vị trí khác, một xung đột xảy ra. Cho mỗi hàng thay đổi oracle sớm biết giá trị cũ và mới của từng cột trong hàng.

Hình 6.III: Oracle tại vị trí nhận, so sánh giá trị cũ và giá trị hiện tại của hàng ra một xung đột nếu có bất kỳ sự khác nhau giữa các giá trị này cho bất kỳ cột nào trong hàng.

Chú ý: Vì một hàng có thể có các ROWID khác nhau tại các vị trí khác nhau, Oracle sử dụng các khoá chính của hàng để xác định hàng nào đợc so sánh. Nếu bạn không muốn sử dụng khoá chính, thiết kế một hay nhiều cột khác đợc gọi DBMS_REPLICAT.SET_COLUMNS.

Nếu thủ tục tại vị trí nhận phát hiện không xung đột, máy chủ tại vị trí nhận ghi các giá trị mới. Nếu một xung đột đợc phát hiện, Oracle áp dụng thủ tục giải quyết xung đột thích hợp, nếu một thủ tục là sẵn sàng. Các xung đột không giải quyết đợc sẽ ghi vào nhật ký trong DefError view tại vị trí nhận.

Vị trí chủ A

UPDATE emp SET comm = comm + 75 WHERE ename='Jones' ;

Emp table

empno ename comm

100 Jones 20

101 Kim 200

102 Braun 350

Vị trí chủ A

UPDATE emp SET comm = comm + 280 WHERE ename='Jones' ;

Emp table

empno ename comm 100 Jones 300

101 Kim 200

102 Braun 500 100 Jones 20

100 Jones 95 Đưa ra các thay đổi giá trị cũ và mới

100 Jones 20 100 Jones 300 So sánh giá trị cũ và

giá trị hiện thời

Cập nhật xung đột Hình 6.III: Phát hiện xung đột

Một phần của tài liệu CSDL Oracle (Trang 55 - 56)