• Khóa chết: hủy phiên???Retainnoun:retention:giữ lại, chặn LES9-Or After completing this lesson, you should be able to do the following: o Explain DML and undo data generation o Monito
Trang 1Bai tap trong dia2\ddbs\oracle\test*
Lenh SQL
Update set
Insert into
Merger into (xem VD dưới)
Có thể gan bí danh trong lênh SQL (xem VD dưới)
Có thể nhúng câu lệnh SQL vào lệnh SQL (xem VD dưới)
VD: MERGER INTO jobs j USING (SELECT * FROM ac) a ON (j.NUM=a.NUM)
Có thể dùng SQL hay PL/SQL để thực hiện thao tác
Nếu dùng PL/SQL có thể đảm bảo an ninh, cho phức tap, portable, mở rộng được coi là một dtuong của Oracle và có thể dùng
CÁc đối tượng PL/SQL
DBA có thể :
• Ddanh các vấn đề đối tượng PL/SQL
• Khuyến cáo việc sử dụng PL/SQL tương ứng.
• Nạp các dtuong PL/SQL vào csdl
• Trợ giúp người phát triển PL/SQL
Các đối tượng có thể dùng trợ giúp SEARCH để khảo sát
Hàm: trả về 1 gtri định kiểu nào đó-thuộc lược đồ nào- Thân hàm nằm giữa AS END;
Thủ tục : thực hiện các thao tác – thuộc lược đồ nào- Thân thủ tục nằm giữa AS END;
Gói- Tập hợp nhiều thủ tục và hàm(bản thân Oracle có 350 gói pvu DBA và các ứng dụng )- Thân gói nằm giữa AS END;- Có thể xem nội dung gói nhờ lệnh DISCRIBE <tên gói>
Trigger- Hàm/thủ tục cho các skien (DML: INSERT, UPDATE, DELETE /DDL: CREATE, DROP, ALTER, GRANT, REVOKE, RENAME /csdl: LOGON, LOGOFF, STARTUP, SHUTDOWN,
SERVERERROR) – Thuộc lược đồ nào- có thể phục vụ khi thao tác dữ liệu.
Trang 2Giải quyết giao dịch
Lệnh COMMIT và lệnh ROLLBACK
Giải quyết tương tranh
Khóa
• Khóa mức cao cho tương tranh dữ liệu: Khóa mức dòng cho inserts, updates, và deletes
• Tvan không yêu cầu khóa.
• Quản trị sắp xếp hàng đợi tự động
• Khóa được giữ cho tới khi kết thúc giao dịch (với thao tác COMMIT / ROLLBACK )
Khóa DML: Mối khóa giao dịch DML yêu cầu 2 khóa: (VD lệnh UPDATE)
• Khóa dòng dành riêng(EXCLUSIVE) cho dòng/các dòng được cập nhật
• Khóa mức bảng dòng dành riêng(ROW EXCLUSIVE ) cho bang chứa các dòng
Cơ chế hàng đợi
Bám vết của:
• Các phiên chờ khóa.
• Các chế độ khóa yêu cầu.
• Thứ tự trong đó phiên chờ khóa.
Nguyên nhân đụng độ khóa
• Uncommitted changes
• Long-running transactions
• Unnecessarily high locking levels
Các phien các đụng độ khóa: (Định danh khóa chết/sau đó pgiai khóa chết)
• Select Blocking Sessions from the Performance page:
o - đồ họa: Click lket ID phiên để xem ttin về khóa phiên, bao gồm cả các câu lệnh SQL.
o Đê giải quyết một đụng độ khóa:
Có phiên giữ khóa commit hay rollback
Kết thúc phiên giữ khóa như một resort cuối cung
o Có kill session Disable/Enable SQL trace
• Có thể dùng câu lệnh SQL (select từ v$session với gtri của sid là blocking_session, sau đó là alter )
o SQL> select sid, serial#, username
from v$session where sid in (select blocking_session from v$session) Kqua đưa ra sid, serial#,username
o Hủy phiên: SQL> alter system kill session '144,8982' immediate;
Trang 3• Khóa chết: hủy phiên???
Retain(noun:retention):giữ lại, chặn
LES9-Or
After completing this lesson, you should be able to do the following:
o Explain DML and undo data generation
o Monitor and administer undo data
o Describe the difference between undo data and redo data
o Configure undo retention
o Guarantee undo retention
o Use the Undo Advisor
• Bản sao của dlieu gốc, dlieu trước khi tdoi
• Đc chặn cho mọi giao dịch tdoi dlieu
• Đc giữ lại ít nhât cho tới khi giao dịch kthuc
• ĐC dùng để hỗ trợ
o Các ttac RB
o Nquan đọc và tvan flashback
o Pchoi từ các giao dịch sco
• Các giao dịch và dữ liệu undo
Transactions and Undo Data
• Mỗi giao dịch được gán chỉ đến một segment undo duy nhất
• Mỗi segment undo có thể pvu nhiều hơn 1 giao dịch 1 lúc
Lưu các thông tin undo: Các thông tin undo được lưu trong các segment undo, các segment này được lưu trong không gian bảng undo Các không gian bảng undo :
• ĐƯợC dùng chỉ cho các segment undo
• Có những xem xét phục hồi dbiet
• Có thể liên hiệp chỉ với một thể hiện đơn
• Yêu cầu chỉ 1 trong chúng là không gian bảng undo có thể ghi hiện thời cho thể hiện đã cho ở bất kỳ thời điểm nào
Undo Data Versus Redo Data
Ghi lại Undo một thay đổi như thế nào Lặp lại sự thay đổi như thế nào
Sử dụng cho Quay lại hay Đọc không nhất quán Đi tiếp việc tdoi dlieu
Lưu trong Các undo segment Các file Nhật ký redo
Bảo vệ tránh Đọc không nhất quán trong hệ thống
Trang 4Gsat Undo: Thường ycau qtri không nhiều Pvi gsat bao gồm:
• Không gian tự do trong không gian bảng
• Các lỗi “snapshoot too old”
Quản trị Undo: Quản trị Undo nên bao gồm :
• Không gian lỗi trong không gian bảng undo
• Kthuoc không gian bảng undo phải đúng
• Đảm bảo các giao dịch lớn chuyển giao chu kỳ
• Các lỗi “Snapshoot too old”
• Cấu hình 1 khoảng duy trì undo tương ứng
• Kthuoc không gian bảng đúng
• Đảm bảo duy trì undo
Sử dụng quản trị undo tdong :
UNDO_MANAGEMENT=AUTO
UNDO_TABLESPACE=UNDOTBS1
Cấu hình duy trì Undo : UNDO_RETENTION đặc tả (theo giây) tổng các thông tin undo đã chuyển giao đã được duy trì Thời điểm duy nhất phải tlap tso này là khi:
• Không gian bảng undo có tchon AUTOEXTEND được phép
• Ta muốn tlap duy trì undo cho các LOB
• Ta muốn đảm bảo duy trì
Đảm bảo duy trì undo
• Kthuoc không gian bảng
• Sử dụng Undo Advisor
Guaranteeing Undo Retention
• Một giao dịch có thể phát sinh nhiều undo hơn không gian sẵn có thì sẽ lỗi
• Câu lệnh SELECT chạy 15 phút hay ít hơn thường an toàn
Sizing the Undo Tablespace : Thay đổi khoảng thời gian/không gian bảng undo
Using the Undo Advisor: khảo sát undo theo đồ thị
4 Transaction Management
Dnghia gdich và mta ta qtri giao dịch thế nào:
Nội dung chương:
Trang 5• Introduction to Transactions
• Overview of Transaction Management
• Overview of Autonomous Transactions
Gthieu về giao dịch (Introduction to Transactions)
Một giao dịch là 1 đơn vị công việc logic chứa 1 hay 1 vài câu lệnh SQL 1 giao dịch là 1 đơn vị nguyên tử Ảnh hưởng của mọi câu lệnh SQL trong giao dịch có thể là được chuyển giao (ap dụng cho csdl) hay rollback tất cả(không làm cho csdl)
Một giao dịch bắt đầu với câu lệnh SQL có khả năng vận hành đầu tiên Một giao dịch kết thúc khi thực hiện tường minh COMMIT hay ROLLBACK hoặc lệnh không tường minh của DDL
Minh họa khái niệm giao dịch bằng việc gửi, rút tiền từ ngân hàng:
• Giảm số tiền tài khoản
• Tăng số tiền kiểm tra tài khoản
• Ghi giao dịch vào jounal giao dịch
Oracle cần cho phép 2 bối cảnh Nếu cả 3 câu lệnh SQL có thể thực hiện để dtri tkhoan theo cân đối đúng, ahuong của giao dịch có thể được adung cho csdl Tuy nhiên, nwus 1 vấn đề như không đủ tiền, sai tkhoan, hay sự cố pcung ngăn ngừa 1 trong 2 câu lệnh giao dịch không hoàn tất, thì toàn bộ giao dịch phải được rollback sao cho cân đối của mọi tài khoản là đúng
Figure 4-1illustrates the banking transaction example
Figure 4-1 A Banking Transaction
Trang 6Description of "Figure 4-1 A Banking Transaction"
Vận hành và điều khiển giao dịch (Statement Execution and
CHUYểN GIAO có nghĩa 1 nsd đã yêu cầu tường minh hoặc không tường minh
thay đổi trong giao dịch được thực hiện thường trực Một yêu cầu tường minh xuất hiện khi nsd công bố lệnh COMMIT Một yêu cầu không tường minh xuất hiện sau kết thúc bình thường một ứng dụng hay thao tác dnghia dữ
liệu(DDL) Sụ thay đổi bởi lệnh SQL của một giao dịch trở nên thường trực và
Trang 7nhìn thấy được bởi nsd khác chỉ sau khi giao dịch đã chuyển giao.Các tvan được công bố sau chuyển giao giao dịch nhìn thấy các thay đổi đã được chuyển giao
Ta có thể dặt tên 1 giao dịch dùng câu lệnh the SETTRANSACTION NAME trước khi bắt đầu giao dịch.Điều này làm nó dễ dàng giám sát các giao dịch dài
và pgiai các giao dịch nghi ngờ
Rollback mức câu lệnh(Statement-Level Rollback)
Nếu chạy câu lệnh SQL bị lỗi, mọi ảnh ưởng câu lệnh sẽ ROLLBACK , coi là lệnh chưa thực hiện thao tác là ROLLBACK mức câu lệnh
Các lỗi được phát hiện trong vận hành câu lệnh SQL gây ra ROLLBACK mức câu lệnh VD, đưa cùng gtri vao trường khóa Câu lệnh SQL kéo theo khóa chết(cạnh tranh cùng dữ liệu) cũng gây ra ROLLBACK mức câu lệnh Các lỗi được phát hiện trong khi dịch câu lệnh SQL, như sai cú pháp, chưa chạy được không được coi là ROLLBACK mức câu lệnh
Lệnh SQL gây lỗi làm mết dữ liệu chỉ của công việc nào đó nó thực hiện Nó không gây mất dữ liệu của công việc nào đó trước nó trong giao dịch hiện thời Nêu câu lệnh là DDL thì chuyển giao không tường minh thực hiện trước khi nó undo
Chú ý : Nsd không thể tham chiếu trực tiếp đên các điểm an toàn trong các câu lệnh ROLLBACK
Định vị không gian khả tiếp (Resumable Space Allocation)
Oracle cung cấp 1 phương tiện cho việc treo, sau đó tiếp tục vận hành của các thao tác csdl lớn trong sự kiện lỗi định vị không gian Điều này cho phép 1 người quản trị hành động đúng thay cho việc server csdl Oracle trả về 1 lỗi nsd Sau khi điều kiện lỗi được sửa đổi, thao tác treo tự động tiếp tục
Câu lệnh chạy trong chế độ khả tiếp tục chỉ khi client hiệu lực hóa tường minh ngữ nghĩa cho phiên dùng câu lệnh ALTER SESSION
Định vị không gian khả tiếp bị treo khi 1 trong các điều kiện sau xuất hiện :
• Hết không gian điều kiện
• Mở rộng cực đại đã tới
Trang 8• Cô ta không gian vượt quá điều kiện
Với định vị không gian không khả tiếp, các điều kiện này dẫn đến lỗi và sẽ
Giao dịch trong Oracle bắt đầu khi lệnh SQL thực thi đầu tiên được tính đến Một
câu lệnh SQL khả thi là một câu lệnh SQL phát sinh lời gọi đến 1 thể hiện,
bao gồm các leenhjDDDL và DML
Khi 1 giao dịch bắt đầu, Oracle gán giao dịch đến không gian bảng undo có sẵn
để lưu các lối vào rollback cho giao dịch mới
Giao dịch kết thúc khi xuất hiện bất kỳ trong:
• Nsd công bố câu lệnh ROLLBACK hay COM không có mệnh đề SAVEPOINT
• Khi nsd chạy các lệnh như CREATE, DROP, RENAME, hay ALTER Nếu giao dịch hthoi chứa bất kỳ các lệnh DML, trước hết Oracle chuyển giao cac giao dịch rồi chạy và chuyển giao câu lệnh DDL như 1 giao dịch đơn, mới
• 1 nsd ngắt khởi Oracle Giao dịch hiện thời được chuyển giao
• 1 tiến trình kết thúc bất thường Giao dịch được ROLLBACK
Sau khi 1 giao dịch kết thúc, câu lệnh SQL khả thi kế tiếp sẽ tự động giao dịch liền sau
Chú ý: Các ứng dụng nên thường xuyên chuyển giao tminh hay undo các giao
dịch trước khi kết thúc chương trình
Chuyển giao các giao dịch (Commit Transactions)
Chuyển giao có ng hĩa là thay đổi thường trực thực hiện bởi các câu lệnh SQL
trong giao dịch
Trang 9Trước khi giao dịch thay đổi dữ liệu được chuyển giao, xuất hiện:
• Oracle phat sinh thông tin undo Thông tin undo chứa các gtri dữ liệu cũ được thay đổi bởi câu lệnh của giao dịch
• Oracle phát sinh lối vào nhật ký redo trong bộ đệm của SGA Nhật ký redo chứa thay đổi với khối dữ liệu và thay đổi vơi khối rollback Các thay đổi nay có thể đến đĩa trước khi giao dịch được chuyển giao
• Các thay đổi được làm với bộ đệm csdl của SGA Các thay đổi này có thể đến đĩa trước khi 1 giao dịch được chuyển giao
Chú ý : Sự thay đổi cho một giao dịch được chuyển giao, lưu trong các
bộ đệm của SGA, không nhất thiết được ghi ngay vào file csdl bởi tiến trình nên ghi csdl(DBWW n) Việc ghi có thể xảy ra trước hay sau các chuyển giao giao dịch , lúc hiệu quả nhất đối với csdl
Khi một giao dịch được chuyển giao, sẽ xảy ra(4):
1 Bảng giao dịch nội tai cho các bản ghi không gian bảng undo mà giao dịch chuyển giao, và số thay đổi hệ thống duy nhất (SCN) của giao dịch được gán và ghi vào bảng
2 Tiến trình ghi nhật ký(LGWR) viết các lối vào redo trong bộ đệm nhật ký redo vào file nhật ký redo Nó cũng ghi SCN của giao dịch vào nhật ký redo Skien nguyên tử này cấu thành chuyển giao của giao dịch
3 Oracle giải phóng các khóa giữ trên dòng và bảng
4 Oracle đánh dấu giao dịch hoàn tất
Note:
Hành vi mặc định cho LGWR ghi redo vào file nhật ký redo online một cách đồng bộ và cho các giao dịch chờ redo chuyển đến đĩa trước khi quay về một chuyển giao cho nsd Tuy nhiên, với các ứng dụng trễ giao dịch chậm hơn, người lập trình có thể dta rằng redo được ghi không đồng
bộ và các giao dịch không cần phải chờ cho redo lên đĩa
Rollback các giao dịch (Rollback of Transactions)
ROLLBACK có nghĩa là undo bất kỳ sự thay đổi nào cho dữ liệu đã được thực
hiện bởi các câu lệnh SQL trong 1 giao dịch không chuyển giao Oracle sử dung không gian bảng undo (hay sment rollback ) để lưu các gtri cũ Nhật ký
redo chứa 1 bản ghi các thay đổi
Oracle cho ta rollback toàn bộ hay một phần đên 1 điểm an toàn
Trang 10Mọi kiểu rollback dùng chung một thủ tục:
• Rollback mức câu lệnh(do lỗi câu lệnh hay vận hành khóa chết)
• Rollback đến 1 điểm an toàn
• Rollback của 1 giao dịch do yêu cầu nsd
• Rollback của 1 giao dịch do kết thúc không bình thường tiến trình
• Rollback của mọi giao dịch đã biết khi 1 thể hiện kết thúc không bình thường
• Rollback của giao dịch không chuyển giao khi phục hồi
Khi rollback một giao dịch toàn bộ(không có điểm an toàn tchieu), sẽ xuất hiện:
o Oracle undo mọi thay đổi tạo ra bởi mọi câu lệnh SQL trong giao dịch bằng cách dùng không gian bảng undo tương ứng
o Oracle giải phóng mọi khóa giao dịch của dữ liệu
o Giao dịch kết thúc
Các điểm an toàn trong giao dịch (Savepoints In Transactions)
Ta có thể công bố các dấu hiệu gọi là điểm an toàn trong ngữ cảnh giao dịch Các điểm an toàn chia 1 giao dịch thành các giao dịch nhỏ hơn
Dùng điểm an toàn, ta có thể đánh dấu công việc ở bất kỳ điểm nào trong giao dịch dài Rồi ta có tchon sau đó việc ROLLBACK công việc trước điểm hiện thời trong giao dịch nhưng sau khi 1 điểm an toàn được công bố trong giao dịch.VD,
ta có thể dùng điểm an toàn qua một chuỗi các cập nhật phức tạp , vậy nếu ta gặp lỗi, ta không cần đệ trình lại mọi câu lệnh
Điểm an toàn hữu dụng như trong chương trình ứng dụng Nếu thủ tục chứa 1 vài hàm, ta có thể tao 1 điểm an toàn trước mỗi hàm bắt đầu Nếu khi hàm sự
cố, dễ dàng trả lại dữ liệu cho trạng thái của nó trước khi hàm băt đầu va chạy lại hàm với các tham số được xem xét lại hay thực thi hoạt động phục hồi
Sau khi ROLLBACK về một điểm an toàn , Oracle giải phóng các khóa dữ liệu dành được bởi các câu lệnh ROLLBACK Các giao dịch khác chờ các tài nguyên
bị khóa trước có thể xử lý.Các giao dịch khác muốn cập nhật các dòng bị khóa trước cũng có thể làm như vậy
Khi 1 giao dịch được ROLLBACK đên 1 điểm an toàn , những điều sau sẽ xuất hiện:
1/Oracle chỉ quay lại các câu lệnh chạy sau điểm an toàn
Trang 112/Oracle dành sẵn điểm an toàn đặc tả , nhưng mọi điểm an toàn đã được tlap sau điểm an toàn đặc tả đã mất
3/ Oracle giải phóng mọi bảng và các khóa dòng yêu cầu từ điểm an toàn đó nhưng duy trì mọi khóa dữ liệu yêu cầu trước đến điểm an toàn
Giao dịch vẫn active và có thể tiếp tục
Mỗi khi phiên chờ 1 giao dịch, rollback đên điểm an toàn không giải phóng các khóa dòng Để đảm bảo các giao dịch không treo nếu không thể dành được khóa, sử dụng FOR UPDATE NOWAIT trước khi công bố UPDATE hay
DELETE(Điều này tchieu đến các khóa giành được trước điểm an toàn mà giao dịch rollback đến Các khóa dòng giành được sau điểm an toàn nay được giải phóng,khi các câu lệnh được thực hiện sau điểm an toàn được rollback hoàn toàn.)
Đặt tên các giao dịch (Transaction Naming)
Ta có thể dung chuỗi ktu dgian và dễ nhớ để đặt tên.Tên giao dịch thay thế cgiao các comment cho giao dịch ptan với các ưu điểm:
• Dễ dàng giám sát các giao dịch dài và pgiai các giao dịch ptan nngo
• Ta có thể xem tên các giao dịch và ID trong các ứng dụng VD, người quản trị có thể xem các tên các giao dịch trong Enterprise Manager khi giám sát các hoạt động hệ thống
• Tên các giao dịch được viết cho việc kiểm toán bản ghi redo
• LogMiner có thể dngf tên các giao dịch để tkiem các giao dịch đặc tả trong nhật ký redo
• Ta có thể dùng tên giao dịch để tìm ra 1 giao dịch đặc tả trong view tdien
dữ liệu , như V$TRANSACTION.
Các giao dịch được đặt tên như thế nào(How Transactions Are Named)
Đặt tên giao dịch dùng SETTRANSACTION NAME trước khi bắt đầu 1 giao dịch Khi đặt tên 1 giao dịch nên liên hiệp tên với ID của nó Tên giao dịch không
là duy nhất; các giao dịch khác nhau có thể cùng tên giao dịch tại cùng một tdiem bởi cùng một người sở hữu Ta có thể dùng tên bky cho phép ta pbiet giao
dịch.(CÂN CHÚ Ý lệnh này)
Chuyển giao comment(Commit Comment)
Trang 12Trong phần trước, đã knoi giao dịch vói cgiao comment Tuy nhiên, comment có thể liên hiệp với gdich chỉ khi gdich đang cgiao
Chuyển giao comment vẫn được hỗ trợ cho tthich ngược Oracle khuyến cáo ta nên dùng các tên giao dịch Các chuyển giao bị bỏ qua trong các giao dịch đã được đặt tên
Note:
Trong tương lai, cgiao commit sẽ bị deprecated
Cche chuyển giao 2 pha(The Two-Phase Commit Mechanism)
Trong csdl ptan, Or cần phối hợp dkhien gdich qua mạng và duy trì tính nquan dlieu, thậm chí nếu sco mạng hay hthong xhien
Một giao dịch phân tán là giao dịch bao gồm 1 hay nhiều clenh, cnhat dlieu
trên 2 hay nhiều nút knhau của csdl ptan
Một cơ chế chuyển giao 2 pha dbao rằng mọi sv csdl tgia trong 1 gdich ptan
hoặc tất cả đc cgiao hoặc undo các clenh trong gdich Cche cgiao 2 pha cũng bảo vệ các ttac DML ko tminh thien bởi các ràng buộc tven, lời gọi ttuc từ xa và các trigger
Cche cgiao 2 pha là trong suốt hoàn toàn với nsd, người đang công bố các gdich ptan Thực tế, nsd thậm chí ko cần biết gdich ptan Lệnh COMMIT thông báo kthuc gdich và chuyển sang cche cgiao 2 pha để cgiao gdich Các cú pháp mã hay lệnh phức ko đc ycau để bao hàm các gdich trong thân của udung csdl
Ttrinh nền pchoi (RECO) pgiai tdong outcome của các gdich ptan nngo – các
gdich ptan ở đó sự cgiao bị ngắt bởi kiểu sco hthong hay mạng bky Sau khi sự
cố đã đc sửa chữa và cgiao đc tlap lại, ttrinh RECO cho mỗi csdl cbo sẽ cgiao hay rollbacj tdong bky các gdich ptan một cách nquan trên các nút lquan
Nếu sco trong tgian dai, Or cho phép mỗi người qtri cbo cgiao hay undo tcong các gdich ptan nngo Tchon này cho phép
In the event of a long-term failure, Oracle allows each local administrator to manually commit or undo any distributed transactions that are in doubt as a result of the failure This option enables the local database administrator to free any locked resources that are held indefinitely as a result of the long-term
failure
Trang 13If a database must be recovered to a point in the past, Oracle's recovery facilities enable database administrators at other sites to return their databases to the earlier point in time also This operation ensures that the global database
remains consistent
See Also:
Oracle Database Heterogeneous Connectivity Administrator's Guide
Tquan về các gdich tự trị(Overview of Autonomous
Once invoked, an autonomous transaction is totally independent of the main transaction that called it It does not see any of the uncommitted changes made
by the main transaction and does not share any locks or resources with the main transaction Changes made by an autonomous transaction become visible to other transactions upon commit of the autonomous transactions
One autonomous transaction can call another There are no limits, other than resource limits, on how many levels of autonomous transactions can be called.Deadlocks are possible between an autonomous transaction and its calling
transaction Oracle detects such deadlocks and returns an error The application developer is responsible for avoiding deadlock situations
Autonomous transactions are useful for implementing actions that need to be performed independently, regardless of whether the calling transaction commits
or rolls back, such as transaction logging and retry counters
Các khối PL/SQL tự trị (Autonomous PL/SQL Blocks)
(~gọi chương trình con)
Ta có thể gọi các giao dịch ttri bên trong 1 khối PL/SQL Sử dụng pragma
AUTONOMOUS_TRANSACTION Pragma là định hướng biên dịch Ta có thể khai báo các kiểu sau của khối PL/SQL sau là ttri:
• Stored procedure or function
• Local procedure or function
Trang 14• Package
• Type method
• Top-level anonymous block
Khi một khối PL/SQL đc đưa vào, ncanh giao dịch của nơi gọi sẽ treo Thao tác này dbao rằng cac thao tác SQL thực hiện trong khối này (hoặc các khối khác đc gọi từ nó) không pthuoc hay ahuong đến tthai của ncanh giao dịch gọi
Khi một khối ttri viện dẫn các khối ttri khác hay chính nó, khối đc gọi không chia
xẻ ncanh giao dịch với khối gọi Tuy nhiên, khi một khối ttri viện dẫn một khối không ttri(tức là khối không công bố trước là ttri) thì khối đc gọi thừa kế ncanh giao dịch của khối ttri gọi
Các clenh dkhien gdich trong các khối tự trị(Transaction Control
Statements in Autonomous Blocks)
Các clenh dkhien gdich trong 1 khối PL/SQL tự trị chỉ áp dụng với gdich tự trị active hthoi.VD, các clenh:
Tương tự các clenh dkhien
Similarly, transaction control statements in the main transaction apply only to that transaction and not to any autonomous transaction that it calls For
example, rolling back the main transaction to a savepoint taken before the beginning of an autonomous transaction does not undo the autonomous
transaction
CHƯƠNG IV: QUẢN LÝ GIAO DỊCH VÀ ĐIỀU KHIỂN TƯƠNG TRANH (số tiết 4 )
4 1 Quản lý giao dịch
Khái niệm giao dịch/các giao dịch remote và phân tán/vấn đề tương tranh
H:\ddbs\ddbs1\Managing a Distributed Database.htm
H:\oracle-baigiang\2010\ppt\baigiang truong codex \ch25[1] Advanced Transaction
Trang 15- Các kniem liên quan
4 Related Concepts:
u Các yêu cầu từ xa
u Các giao dịch từ xa
u Các giao dịch phân tán
- Trong suốt giao dịch
4 Transaction transparency đảm bảo rằng các giao dịch csdl sẽ duy trì tính toàn vẹn
và tính nhất quán csdl Giao dịch sẽ chỉ hoàn toàn nếu và chỉ nếu mọi site csdl liên quan đến giao dịch hoàn tất phần việc giao dịch của mình
- Trong suốt phân tán
4 Distribution transparency Được hỗ trợ bởi từ điển dữ liệu phân tán(distributed data dictionary (DDD) hay bằng catalog dữ liệu phân tán(distributed data catalog (DDC).
DDC chứa mta của toàn bộ csdl khi nhìn bởi DBA.
Mta csdl được biết như lược đồ tổng thể phân tán là lược đồ csdl chung được dùng bởi
TP cục bộ để dịch các yêu cầu nsd thành các truy vấn con
4 Transaction Transparency
4 Các yêu cầu phân tán và các giao dịch phân tán
u Các yêu cầu xa cho phép ta truy nhập csdl được xử lý bởi bộ xử lý csdl xa (Figure 10.10)
u Giao dịch xa bao gồm 1 vài yêu cầu có thể truy nhập dữ liệu chỉ ở một site đơn (Figure 10.11)
u Một giao dịch phân tán cho phép một giao dịch tham chiếu một vài site DP(cục bộ hay ở xa) (Figure 10.12)
u Một yêu cầu phân tán cho phép ta tham chiếu một vài site DP ở xa (Figure
10.13) Nó cũng cho phép truy vấn đơn truy vấn đến các bảng phân chia vật
lý(Figure 10.14)
4 Trong suốt giao dịch
4 Gthuc chuyển giao 2 pha
u Giao thức chuyển giao 2 pha đảm bảo rằng nếu một phần của 1 thao tác chuyển giao không thể chuyển giao thì mọi thay đổi tạo ở các site tham gia vào giao dịch
se không làm(undo) để đảm bảo trạng thái csdl nhất quán
u Mỗi DP(?) duy trì log giao dịch của nó Giao thức 2 pha yêu cầu mỗi giao dịch
DP riêng phần ghi nhận lối vào được viết trước phân đoạn csdl được cập nhật
u Giao thức chuyển giao 2 pha yêu cầu một giao thức DO-UNDO-REDO và giao thức write-ahead
4 Giao thức chuyển giao 2 pha
u Giao thức được dùng bởi các DP để rollback/rollforward các giao dịch với sự trợ giúp của các lối vào log giao dịch hệ thống
Trang 16l DO thực hiện thao tác và ghi giá trị “before” and “after” trong nky
gdich
l UNDO đảo lại thao tác dùng lối vào được viết bởi phần DO của chuỗi
l REDO làm lại một thao tác sử dụng lối vào nky được viết bởi phần DO của chuỗi
u Giao thức buộc lối vào nky được viết để lưu thường trực trước khi thao tác thực
tế xảy ra
4 Giao thức chuyển giao 2 pha
Giao thức định nghĩa các thao tác giữa 2 kiểu nút: bộ phối hợp và 1 hay nhiều bộ
lệ thộc hay cohort (tụ tập) Các giao thức thực hiện gồm 2 pha:
u Phase 1: Chuẩn bị
l Bộ phối hợp gửi một tdiep PREPARE TO COMMIT đến mọi lệ thuộc
l Các lệ thuộc nhận tdiep viết nhật ký giao dịch sử dụng giao thức head, và gửi một tdiep xnhan đên bộ phối hợp
write-l Bộ phối hợp đảm bảo rằng mọi nút đã sẵn sàng chuyển giao hay từ bỏ giao dịch
u Phase 2: Chuyển giao cuối cùng
l Bộ phối hợp quảng bá tdiep COMMIT đến mọi lệ thuộc và chờ đáp ứng
l Mỗi lệ thuộc nhận tdiep COMMIT thì cập nhật csdl dùng giao thức DO
l Các lệ thuộc gửi đáp ứng với tdiep COMMITED hay NOT COMMITED đến bộ phối hợp.
u Nếu 1 hay nhiều lệ thuộc không chuyển giao , bộ phối hợp gửi tdiep ABORT, vì vậy chúng UNDO mọi thay đổi
Trường họp nghiên cứu: Oracle
4 Distributed Transaction Management (tài liệu quantrigiaodich 1.pdf)
¤ Transaction Concepts and Models
¤ Distributed Concurrency Control
¤ Distributed Reliability
¤ Data Replication
Transaction: Tập hợp các hành động tạo sự chuyển đổi nhất quán của trạng thái hệ thống trong khi đảm bảo sự nhất quán hệ thống(; concurrency transparency, ; failure transparency) VD:
FLIGHT(FNO, DATE, SRC, DEST, STSOLD, CAP) //stsold:cho ngoi da ban,cap:capacity CUST(CNAME, ADDR, BAL)
Trang 17EXEC SQL SELECT STSOLD, CAP INTO temp1, temp2
FROM FLIGHT where FNO = flight_no and DATE = date;
if temp1 = temp2 then output(“\no free seats");
abort
else
EXEC SQL UPDATE FLIGHT SET STSOLD = STSOLD +1
WHERE FNO =flight_no and DATE = date;
EXEC SQL INSERT into FC(FNO,DATE,CNAME,SPECIAL)
VALUES (flight_no, date, customer_name, null);
¤ Let Oij(x) be some operation Oj of a transaction Ti operating on an
object x, where Oj 2 fRead,Writeg and Oj is atomic.
{ OSi = j Oij
{ Ni 2 fcommit, abortg
¤ A transaction Ti is a partial order Ti = fi;<ig where
{ i = OSi [fNig
{For any two operations Oij;Oik 2 OSi, if Oij = R(x) and Oik = W(x),
then for any data item x either Oij <i Oik or Oik <i Oij
{ 8Oij 2 OSi;Oij <i Ni
Trang 18## ##
o Quản trị gdich pt :
Như CSDL đơn: Transaction manager, scheduler, recovery manager, buffer managerCSDL phân tán: Global transaction manager (Transaction Coordination)
Các đặc trưng của giao dịch:
¤ Dựa trên các pvi ứng dụng ((non-)distributed,heterogeneous transactions),Thời gian (on-line vs batch), tchuc hay các hoạt đọng ghi /đọc (two-step,
restricted, action model), và cấu trúc
Cấu trúc
¤ Giao dịch phẳng : sequence of primitive operations nằm giữa begin và end của giao dịch
¤ Các giao dịch lồng:
- Các thao tác giao dịch có thể bản than nó là 1 giao dịch
- Có một vài thuộc tính giống thuộc tính mức cha của nó, tức là bản than chúng có các giao dịch lồng khác
- Đưa ra điều khiển tương tranh và phản hồi bên trong 1 TA
- Các lồng kín:
(1) sub-tas begin after parent and nish before them,
(2) commit of sub-ta is conditional upon commit of parent
Trang 19- Nesting mở:
(1) sub-ta can execute and commit independently,
(2) compensation may be necessary
¤ Các giao dịch phải cung cấp
(1) vận hành nguyên tử và tin cậy trong khi có mặt các sự cố
(2) vận hành đúng khi có mặt của truy nhập nhiều nsd, và
(3) quản trị các nhân bản đúng
Xử lý giao dịch công bố:
¤ Cấu trúc giao dịch (transaction model)
¤ Tính nhất quán csdl nội tại (integrity enforcement)
¤ Các giao thức tin cậy
- Nguyên tử và bền vững
- Các giao thức phuc hồi cục bộ
- Các giao thức chuyển giao tổng thể
¤ Các giải thuật điều khiển tương tranh
- Làm sao để dbo các vận hành TA tương tranh, cách ly
¤ Các giao thức điều khiển Replica
- Làm sao điều khiển tính nhất quán tương hỗ của dữ liệu được nhân bản (replicated data)?
- Một bản copy, ROWA, tập trung (consensus)đa số, bầu cử động, cây quorum (số đại biểu cần thiết theo quy định)
Vận hành giao dịch tập trung và phân tán:
- ¤ Bộ quản trị giao dịch (TM) chịu trách nhiệm cho phối hợp vận hành của các thao tác csdl nhân danh các ứng dụng
- ¤ Các bộ lập lịch (SC) chịu trách nhiệm thực hiện giải thuật điều khiển tương tranh đặc tả
- ¤ Bộ quản trị phục hồi cục bộ (RM) thực hiện các thủ tục để phục hồi từ các sự cố
Điều khiển tương tranh: vấn đề đồng bộ các giao dịch tương tranh sao cho tính nhất quán cua csdl được bảo toàn trong khi cùng thời gian đạt được mức độ tương tranh cao nhất
~ Bất thường: mất cập nhật, đọc bẩn, phân tích không nhất quán
Vận hành lịch biểu ( or History):
- ¤ Khái niệm một lịch biểu cung cấp một cơ chế để thể hiện và lạp luận về vận hành tương tranh (khả dĩ) của các giao dịch
- ¤ Mô tả thứ tự các thao tác để các TA được vận hành
- ¤ Lịch biểu có thể được định nghĩa như thứ tự riêng qua các thao tác này
Trang 20¤ A complete schedule S(T) over a set of transactions
T = fT1;::: ;Tng is a partial order S(T) = fT ;<T g where
{ T = i i; for i = 1;:::n
{ <T i <i; for i = 1;:::n
{ For any two con
icting operations Oij;Okl 2 T ,
either Oij <T Okl or Okl <T Oij
+S1 = {R1(A);W1(A);R2(A);R2(B);C2;R1(B);W1(B);C1g
¤ Trong một lịch biểu nối tiếp
{ all operations in transaction occur consecutively
{ no interleaving of transaction operations
{ if each transaction results in a consistent state, then the serial schedule
of these transaction results in a consistent state, too
+S1 = {R1(A);W1(A);R1(B);W1(B);C1;R2(A);R2(B);C2; g
Các lịch biểu tương đương : Two schedules S and S0
are said to be equivalent i
¤ they contain the same transactions and operations (S:T = S0
Kiểm tra tính nối tiếp:
¤ If precedence graph (based on conflicting operations) for schedule S has
no cycles, then S is serializable Serial schedule is obtained through
toplogical sorting
¤ Việc thực hiện khả thi:
In practice, for concurrently executing transactions, the scheduler veri
Trang 21es whether the actual schedule is serializable For this, the schedulermaintains and extends the precedence graph while new operations areperformed (or announced) by transactions.
{ if the actual graph is acyclic, then continue schedule
{ otherwise reset (some) transactions
Tính ntiep trong CSDL phân tán
¤ Local as well as global schedules have to be considered
¤ For global schedule to be serializable
1 Each local schedule should be serializable
2 Two coniciting operations should be in the same relative order in all
of the local schedules where they appear together
Không thể nối tiếp tổng thể :
Consider two sites and data item x = 1 duplicated at both sites.
LậP LịCH là nối tiếp hóa riêng phần(chúng có thể là nối tiếp), nhưng :::
Cac giải thuật điều khiển tương tranh :
Bi quan
- Two-Phase Locking Protocol (2PL)
{ Centralized (primary site) 2PL
Trang 22Locking-based Algorithms:
* Gdich chỉ ra của nó bằng khóa các ycau từ bô ll (qtri khóa)
* Khóa hoặc là khóa đọc rl (còn gọi là khóa chia xe) hoặc là khóa ghi wl(còn gọi là khóa drieng)
Các khóa đọc và các khóa ghi ddo
Lock-Compatibility Matrix:
Khóa 2 pha:
1 1 giao dịch khóa 1 dtuong trước khi sử dụng nó (read or write)
2 khi dtuong bị khóa bởi các giao dịch khác, giao dịch yêu cầu phải chờ ( có Problems)
3 Khi giao dịch giải phóng 1 khóa, nó không yêu cầu bất kỳ khóa nào
khác(trên dtuong khác)
Strict 2PL (nghiêm ngặt): Mọi khóa được giải phóng cuối mỗi giao dịch (sl(x);sl(y);r(x); unlock(x);r(y); unlock(y)) hay
(sl(x);sl(y);r(x);r(y); unlock(x); unlock(y))
Việc triến khai thông qua bảng khóa (trong các hệ thống thương mại là các header dữ liệu , id của giao dịch)
Thứ tự nhãn thời gian
o “Lựa chọn” thứ tự nối tiếp và vận hành theo đó
o Gthiet tổng thể(phạm vi hệ thống) tăng việc đơn điệu( đồng hồ tổng thể->vấn đề)
Trang 231 Giao dịch Ti được gán một nhãn thời gian duy nhất tổng thể TS(Ti) dnghia mối quan
hệ giữa các giao dịch già hơn và trẻ hơn
2 Bộ giao dịch quản trị gắn nhãn thời gian cho mọi thao tác công bố bởi các giao dịch
3 Mỗi dtuong x có 2 nhãn thời gian:
RTS(X) := max{TS(T) | T has read x}
WTS(X) := max {TS(T) | T has written x}
1 Việc đụng độ thao tác được pgiai bằng thứ tự:
Một thao tác có thể xử lý nếu mọi bước đụng độ của các ỉa thiết rằng giao dịch T muốn thao tác trên dtuong x:
Case operation of:
read: if TS(T) < WTS(x) then reject (reschedule) read;
Problem: Basic TO tries to execute operations as soon as possible TO
algorithm can never cause operations to wait, but instead, restarts them
Advantage due to deadlock freedom, disadvantage, because numerous restartswould have adverse performance implications
Conservative Timestamp Ordering
¤ As basic TO, but additionally assurance of \write phase"
¤ Idea: operations of each transaction are queued until an ordering can beestablished so that rejections are not possible, and they are executed in
that order
read: if TS(T) < WTS(x) then reject read
else if lock queue(x) = ;^
lock: if TS(T) < max{RTS(x);WTS(x)g then reject lock
else insert lock(x) into lock queue(x);
write: lr queue := lock queue(x) [ read queue(x);
Trang 25after executing write(x), exclusive lock is released
possibly other operations then can be executed on that object
Multiversion Timestamp Ordering
¤ Do not modify values in DB but create new values
¤ A readi(x) is translated into a read on one version of x
!
Trang 26nda versionof x (say xv) suchthat TS(xv) isthelargesttimestamp
less than TS(Ti)
¤ A writei(x) is translated into Wi(xw) so that TS(xw) = TS(Ti) and
accepted if no other transaction with a timestamp greater than TS(Ti)
hasreadthe valueofa version x (say xr) suchthat TS(xr) > TS(xw)
In other words, if the scheduler has already processed Rj(xr) such thatTS(Ti) < TS(xr) < TS(Tj), then Wi(x) is rejected
¤ Algorithm trades space for time
Optimistic Concurrency Control Algorithms
Pessimistic execution: validate ! read ! compute ! write (commit)
Optimistic execution: read ! compute ! validate ! write (commit)
¤ Underlying transaction execution model: divide into subtransactions each
of which executes at a site: transaction Tij executes at site j
¤ Transactions run independently at each site until they reach the end oftheir read phases
¤ All subtransactions are assigned a timestamp at the end of their readphase
¤ Validation test performed during validation phase If one fails, all rejected.Optimistic CC Validation Test (local validation of Tij):
1 If all transactions Tk where TS(Tk) < TS(Tij) have completed theirwrite phase before Tij has started its read phase, then validation succeeds(tas execute in serial order) -
2 If there is any transaction Tk such that TS(Tk) < TS(Tij) which
completes its write phase while Tij is in its read phase, the validation
succeeds if Tij does not read objects written by Tk
-3 If there is any transaction Tk such that TS(Tk) < TS(Tij) which
completes its read phase before Tij completes its read phase, the
validation succeeds if they don't access any common data object
¤ Once a ta is locally validated to ensure that local db consistency is
maintained, it also needs to be globally validated
! no know optimistic methods for doing this
¤ major problem with OCCA: high storage cost; the read and write sets ofterminated transactions that were in progress when Tij arrived at site jneed to be stored in order to validate Tij
Deadlock Management
¤ A transaction is deadlocked if it is blocked and will remain blocked untilthere is an intervention (ta manager or user)
¤ Locking-based CC algorithms cause deadlocks
¤ TO-based algorithms that involve waiting may cause deadlocks
Trang 27T3 waits for a lock held by T4 which waits for a lock held by T1 whichwaits for a lock held by T2 which, in turn, waits for a lock held by T3 –Approaches to Deadlock Management
¤ Ignore: Let the application programmer deal with it, or restart system
¤ Prevention: Guaranteeing that deadlocks never occur in
Trang 28rst place.
Check transaction when it is initiated Requires no run-time support
¤ Avoidance: Detecting potentialdeadlocksinadvance and takingaction
to ensure that deadlock will not occur Requires run-time support
¤ Detection and Recovery: Allowing deadlocks to form and then
Trang 29Resources must only be reserved, but not allocated
Unsuitable in database environment (= programming)
Suitable for systems that have no provisions for undoing processes
¤ Evaluation
{ Reduced concurrency due to preallocation
{ Evaluating whether an allocation is safe leads to overhead
{ Di
Trang 30cult to determine (partial order)
+ No transaction rollback or restart is involved
Deadlock Avoidance
¤ Transactions are not required to request resources a priori
¤ Transactions are allowed to proceed unless a requested resource isunavailable
¤ In case of con
ict, transactions may be allowed to wait for a
Trang 31xed time
interval (timeout)
¤ Order either the data item or the sites and always request locks in thatorder
¤ More attractive than prevention in database environment
¤ Deadlock Avoidance { Wait-Die & Wound-Wait Algorithms
Deadlock Detection and Resolution
¤ Transactions are allowed to wait freely
¤ Wait-for graphs and cycles
¤ Topologies for deadlock detection: (1) Centralized, (2) Distributed,(3) Hierarchical
Centralized Deadlock Detection
¤ One site is designated as the deadlock detector for the system Eachscheduler periodically sends its local WFG to the central site which mergesthem to a global WFG to determine cycles
¤ How often to transmit?
too often =) higher communication cost but faster deadlock detectiontoo late =) high delays due to deadlocks, lower communication cost
¤ Would be a reasonable choice if concurrency control algorithm is alsocentralized
Distributed Deadlock Detection
¤ Sites cooperate in detection of deadlocks
¤ Example:
The local WFGs are formed at each site and passed on to the other
sites Each local WFG is modi
Trang 32ed as follows:
1 Since each site receives the potential deadlock cycles from other sites,these edges are added to the local WFG
2 The edges in the local WFG which show that local transactions are
waiting for transactions at other sites are joined with edges in the local
WFGs which show that remote tas are waiting for local ones Edge(biên)Each local deadlock detector then:
¤ looks at a cycle that does not involve the external edge If it exists,
there is a local deadlock which can be handled locally
¤ looks for a cycle involving the external edge If it exists, it indicates apotential global deadlock Pass on the information to the next site
Reliability
Problem: How to maintain atomicity and durability properties of transactions.Fundamental De
Trang 33¤ Reliability:
{ A measure of success with which a system conforms to someauthoritative speci
Trang 34cation of its behavior.
{ Probability that the system has not experienced any failures within agiven period of time Exprience(kinh qua,thực nghiệm)
{ Typically used to describe systems that cannot be repaired or wherethe continuous operation of the system is critical
¤ Availability:
{ The fraction of the time that a system meets its speci
Trang 35{ The probability that the system is operational at a given time t
¤ Failure: The deviation of a system from the behavior that is described inits specification (có thể lỗi ngoài và error)
¤ Erroneous State: Internal state of the system such that there exist
circumstances in which further processing, by normal algorithms of the
system, will lead to a failure which is not attributed to a subsequent fault (lỗi bên trong)
¤ Error: Part of the state which is incorrect
¤ Fault: An error in the internal states of the components of a system or inthe design of a system Types of faults:(Lỗi fault là do error)
{ Hard faults: Permanent; resulting failures are called hard failures
{ Soft faults: Transient or intermittent; account for more than 90% of
all failures; soft failures
Fault tolerance measures for reliability, availability, mean time betweenfailures, mean time to repair, :::
Types of Failures in Distributed DBMS
¤ Transaction failures
{ Transaction aborts (unilaterally -đơn phương-or due to a deadlock)
{ Avg 3% of transactions abort abnormally
¤ System (site) failures
{ failure of processor, main memory, power supply, ::: ,
{ Main memory contents are lost, but secondary storage contents are safe
¤ Media failures
{ Failure of secondary storage devices
{ Head crash / controller failure
Trang 36er; type of operation
¤ object accessed by the transaction to perform the action
¤ old value (state) of object (before image)
¤ new value (state) of object (after image)
Write-Ahead Log Protocol:
¤ If a system crashes before transaction is committed, then all operationsmust be undone Only need the before image (undo portion of the log)
¤ Once a transaction is committed, some of its actions might have to beredone Need after images (redo portion of the log)
¤ WAL protocol:
1 Before a stable database is updated, the undo portion of the log should
be written to the stable log (bu
How to execute commit for distributed transactions?
Issue: How to ensure atomicity and durability?
¤ Termination protocols:
If a failure occurs, how can the remaining sites deal with it?
Non-blocking: the occurrence of failure should not force the sites to waituntil the failure is repaired to terminate the transaction
Trang 37nal decision with respect to global commit/abort.
¤ Execution of the protocol is initiated by coordinator after the last step ofthe global transaction has been reached
¤ Note that when the protocol is initiated, the transaction still may beexecuting at some local sites
Phase 1: Coordinator gets the participants ready to write the results into thedatabase
Phase 2: Everybody writes the results into the database
! Coordinator: The process at the site where the transaction originatesand which controls the execution
! Participants: Processes at the other other sites that participate in
executing the transaction
Global Commit Rule:
1 Coordinator aborts a transaction if and only if at least one participantvotes to abort it
2 Coordinator commits a transaction if and only if all participants vote
to commit it
2PC Protocol Actions
Trang 38Site sự cố- Kết thúc 2PC
C: Timeout trong initial(khởi động) -> không vấn đề
C: Timeout in wait -> không the chuyển giao dơn phương, có thể abort đơn phương
C: Timeout in abort or commit -> vẫn bị khóa và chờ acks
P: Timeout in initial -> Bộ phối hợp phải sự cố ; abort
Trang 39P: Timeout in ready -> vẫn bị khóa
Site sự cố - Phục hồi 2PC
C: Sự cố trong initial or wait -> bắt đầu hay bắt đâu lại trên phục hồi
C: Failure trong abort or commit -> Không có gì dbiet nếu acks đã nhận được khác đi thì giao thức kết thúc bị kéo vào
P: Sự cố trong initial ->thoát đơn phương khi phục hồi
P: Sự cố trong ready -> Bộ phối hợp đã được thông báo về quyết định cục bộ
; xử lý như timeout trong trạng thái ready và viện dẫn giao thức kết thúc P: Sự cố trong commit or abort -> không cần làm gì dbiet
2PC Recovery { Additional Cases
Arise due to non-atomicity of log and message send actions
¤ Coordinator fails after writing begin commit log and before sending
prepare command
! treat is as failure in wait state; send prepare command
¤ Participant site fails after writing ready record in log but before vote
Trang 40nal decision but before sending
decision to participants !
-¤ Participant site fails after writing abort or commit in log but before ack
is sent ! –
Các vấn đề với 2PC(Problems with 2PC)
Phong tỏa (giảm tính sẵn sàng )
Sẵn sàng ngụ ý các thành viên chờ bộ phối hợp
Nếu bộ phối hợp sự cố, site bị khóa cho tới khi phục hồi
Không thể phục hồi độc lập
Tuy nhiên, được biết có giao thức phục hồi độc lập với site đơn sự cố, không
có giao thức phục hổi độc lập tồn tại với sự cố nhiều site
3PC Protocol (Non-Blocking Protocol)
¤Một giao thức chuyển giao không khóa nếu và chỉ nếu
1 Nó được đồng bộ với quá độ trạng thái , và
2 Vận đồ quá độ của nó chứa (a) không có trạng thái là “kế cận” ở cả trạng thái chuyển giao và thoát
- Kế cận: khả năng đến từ trạng thái này sang trạng thái khác với 1 quá độ đơn Khả năng chuyển giao được: Mọi site đều bầu cho chuyển giao tương tranh
## ##
4 2 Điều khiển tương tranh
Xem them lesson08_data_tb3.ppt
++++++
o Điều khiển tương tranh :
Mục tiêu(5):/co giãn được khi sự cố/thực hiện song song/Tổng phí tính toán và lưu trữ nhỏ/Thực hiện trên mạng có độ trễ lớn/ Đặt ít ràng buộc lên hoạt động nguyên tử
Những vấn đề(5): mất cập nhât/mất sự phụ thuộc không được chuyển giao/phân tích không nhất quán /nhiều bản sao/ đồng bộ hay không đồng bộ
Nối tiếp hóa phân tán(4): tiến hành lập lịch tổng thể/Đảm bảo khóa/Đảm bảo nhãn
tgian/nếu không có nhân bản thì thực hiện như CSDL đơn
Các giao thức Khóa(4): Khóa trung tâm 2 pha/khóa bản sao cơ sở 2 pha /khóa phân tán 2 pha /luật đa số
Khóa phân tán 2 pha: mỗi site có quản trị khóa riêng(cho giao tiếp)/nếu không có nhân bản thì giao thức này giống khóa bản sao cơ sở 2 pha/thực hiện đọc một ghi
nhiều(ROWA có thẻ đọc bản sao bất kỳ nhưng phải đảm bảo ghi toàn bộ các bản
sao)/tránh nhược điểm của khóa trung tâm/là mở rộng của khóa bản sao cơ sở 2 pha /mức độ phức tạp hơn-giá cao hơn
Khóa đa số(3): có thể thực hiện giao dịch khi khóa hơn 50 % các giao dịch/mở rộng của ROWA nhưng linh hoạt hơn/ tránh nhược điểm của khóa trung tâm nhưng đắt hơn-phức tạp hơn
Giao thức tem tgian(3): giống các giao thức trước nhưng têm định danh cục bộ/ưu tiên tem tgian “già hơn”/nếu cũng tem thì lưu ý đến tính định vị “sớm hơn”
o Quản trị khóa chết
Các loại: Phát hiện khóa chết trung tâm/phân cấp/phân tán