- Timestamp Ordering (TO) { Basic TO
Truy nhập dữ liệu lỗi do khóa(Data Access Failures Due To Locks)
Locks)
Khi công bố câu lệnh SQL, Oracle muốn khóa tài nguyên cần để vận hành lệnh thành công. Nếu dữ liệu yêu cầu được giữ bởi các câu lệnh giao dịch không chuyển giao khac, và vẫn còn bị khóa một thời gian dài, môt timeout sẽ xuất hiện.Hãy xem xét các kban lien quan đến sự cố dữ liệu:
Consider the following scenarios involving data access failure:
• Thời đoạn giao dịch
Thời đoạn Giao dịch(Transaction Timeouts)
Một lệnh DML yêu cầu các khóa trên csdl xa có thể bị khóa nếu các giao dịch khác sở hữu khóa trên các dữ liệu yêu cầu. Nếu khóa tiếp tục khóa câu lệnh SQL,thì chuỗi sau sẽ xuất hiện:
1. Xuất hiện thời đoạn (A timeout occurs. )
2. Oracle quay về câu lệnh(Oracle rolls back the statement. ) 3. Oracle trả về thông điệp lỗi đối với nsd
ORA-02049: time-out: distributed transaction waiting for lock
Vì giao dịch không thay đổi dữ liệu, không có hành động nào cần thiết khi timeout. Các ứng dụng nên xlys như deadlock đã được tính đến. Nsd vận hành câu lệnh có thể cố gắng vận hành lại sau. Nếu khóa vẫn như vậy, nên giao tiếp với người quản trị.
Khóa từ các giao dịch nghi ngờ(Locks from In-Doubt Transactions)
Một tvahay câu lệnh DML yêu cầu khóa trên một Csdl cục bộ có thể bị khóa một các xác định do các tài nguyên giao dịch phân tán nghi ngờ. Trong trường hợp này, Oracle công bố một thông điệp lỗi sau:
ORA-01591: lock held by in-doubt distributed transaction identifier
Trong trường hợp này, Oracle quay lại câu lệnh SQL của mình ngay lập tức. Nsd vận hành câu lệnh có thể cố vas au đó. Nếu vẫn bị khóa, nsd nên báo cho người quản trị đưa cả ID của giao dịch nghi ngờ .
Sự thay đổi hoàn cảnh trên xuất hiện ít khi xem xét xác suất của sự cố trong phần găng của chuyển giao 2 pha. Thậm chí nếu sự cố xuất hiện và giả thiết phục hồi nhanh từ sự cố mạng hay hệ thống. Vấn đề được giải quyết mà không cần can thiệp của người.