1. Trang chủ
  2. » Công Nghệ Thông Tin

đề thi quản trị cơ sở dữ liệu phân tán 9

41 418 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 592,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mô tả csdl được biết như lược đồ tổng thể phân tán là lược đồ csdl chung được dùng bởi xử lý giao dịch cục bộ để dịch các yêu cầu nsd thành các truy vấn con Các đặc trưng của giao dịch:

Trang 1

Bai tap trong dia2\ddbs\oracle\test*

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

Retain(noun:retention):giữ lại, chặn

LES9-Oracle

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

= = =

H:\ddbs\ddbs1\Managing a Distributed Database.htm

H:\oracle-baigiang\2010\ppt\baigiang truong codex \ch25[1] Advanced Transaction Processing.ppt

ch22[1] Distributed Databases.ppt

Xem quantrigiaodich 1.pdf

4.1.1 Tổng quan

Giao dịch : Thu thập các hoạt động tạo ra sự chuyển đổi nhất quán của hệ thống

trong khi đảm bảo tính nhất quán hệ thống

(tương đương trong suốt tương tranh, tương đương trong suốt sự cố)(xem dnghia khác)

Trang 2

EXEC SQL SELECT STSOLD, CAP INTO temp1, temp2

FROM FLIGHT where FNO = fight_no and DATE = date;

if temp1 = temp2 then output(“no free seats");

abort

else

EXEC SQL UPDATE FLIGHT SET STSOLD = STSOLD +1

WHERE FNO = fight_no and DATE = date;

EXEC SQL INSERT into FC(FNO,DATE,CNAME,SPECIAL)

VALUES (fight_no, date, customer_name, null);

Ta xem xet 1 giao dịch T (time):

R(x);R(y); x = x + y;W(x); commit

Trang 3

 Bền vững: Ngay khi 1 TA đã chuyển giao thay đổi của nó, các thay đổi này không bao giờ mất do sự cố hệ thống xảy ra sau

- Các yêu cầu phân tán và các giao dịch phân tán

• Các yêu cầu từ xa : 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

INSERT INTO INVOICE (CUS_NUM,INV_DATE,INV_TOTAL) VALUE(‘100’,29-JUL-2007’,120.00);

COMMIT WORK;

3

Trang 4

• Các giao dịch phân tán : 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)

BEGIN WORK:

SELECT * FROM PRODUCT WHERE PROD_NUM=’231238’;

UPDATE CUSTOMER SET CUS_BALANCE=CUS_BALANCE+120 WHERE CUS_NUM=’100’;

INSERT INTO INVOICE (CUS_NUM,INV_DATE,INV_TOTAL) VALUE(‘100’,29-JUL-2007’,120.00);

COMMIT WORK;

• Các yêu cầu phân tán :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)

BEGIN WORK:

SELECT CUS_NUM, INV_TOTAL FROM CUSTOMER, INVOICE WHERE CUS_NUM=’100’ and INVOICE.CUS_NUM=CUSTOMER.CUS_NUM UPDATE CUSTOMER

SET CUS_BALANCE=CUS_BALANCE+120 WHERE CUS_NUM=’100’;

INSERT INTO INVOICE (CUS_NUM,INV_DATE,INV_TOTAL) VALUE(‘100’,29-JUL-2007’,120.00);

COMMIT WORK;

SELECT *FROM CUSTOMER WHERE CUS_NUM>250;

Trang 5

- Trong suốt giao dịch

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

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 mô tả của toàn bộ csdl khi nhìn bởi DBA

Mô tả csdl được biết như lược đồ tổng thể phân tán là lược đồ csdl chung được dùng bởi xử lý giao dịch cục bộ để dịch các yêu cầu nsd thành các truy vấn con

Các đặc trưng của giao dịch:

• Dựa trên các:

o pvi ứng dụng ((non-)distributed,heterogeneous transactions),

o Thời gian (on-line vs batch),

o Tổ chức hay các hoạt đọng ghi /đọc (two-step, restricted, action model), và

 Các thao tác giao dịch có thể bản thân 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 thân 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 đóng:

(1) Các giao dịch con phải bắt đầu sau và kết thúc trước giao dịch cha

(2) Việc chuyển giao giao dịch con là điều kiện cho chuyển giao giao dịch cha

 - Các lồng mở:

(1) Các giao dịch con có thể vận hành và chuyển giao độc lập,

(2) Có thể phải bù để cân bằng

• 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

5

Trang 6

Xử lý giao dịch phải đưa ra:

- Cấu trúc giao dịch (transaction model)

- Tính toàn vẹ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 để đồng bộ 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: Đảm bảo trong suốt giao dịch

Kiến trúc chung(Architecture Revisited)

 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ố

Trang 7

Vận hành giao dịch trung tâm: Vận hành giao dịch phân tán :

Ảnh hưởng của việc chuyển giao sớm

• Dữ liệu đã được chuyển giao ở 2 site A và

B, thì không thể rollback ở các site A và B

• Site C có thể rollback được

4.2 Quản trị tương tranh

4.2.1 –Tổng quan

Mục tiêu(5):

-co giãn được khi sự cố site và tthong

- Thực hiện song song để thỏa mãn yêu cầu hiệu năng

- 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 trên cấu truc hoạt động nguyên tử

7

Trang 8

- Điều khiển Tương tranh: Điều khiển tương tranh phân tán nhằm ngăn chặn việc sản sinh ra cácthực hiện không khả tuần tự của các giao tác phân tán

-> 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

o Bất thường:

 mất cập nhật: Tác dụng của 1 vài giao dịch không được phản ánh trên csdl

 phân tích không nhất quán.: Giao dịch nếu đọc cùng hạng mục dữ liệu nhiều hơn 1 lần,

có thể đọc các gtri khác nhau

 Nhiều bản sao không nhất quán (khi nhân bản )

 Việc truy nhập dữ liệu dùng chung cần đồng bộ để đảm bảo nhất quán

 Đạt đươc nhờ các công cụ của giải thuật điều khiển tương tranh

 Các giải thuật điều khiển tương tranh phổ biến nhất là dựa trên khóa

 Việc truy nhập của NSD được đóng gói như giao dịch mà các toán tử mức thấp nhất là tập các toán tử đọc và ghi đối với CSDL

tổng hợp: Dùng WFG để phát hiện khóa chết

Phan biệt : Fault->Error (Errorneous state)->Failure

Để ghi tin cậy, cần sự hỗ trợ của log(Undo/redo/update) giao thức nhật ký ghi trước(WAL)

= = =

Điều khiển tương tranh

• Nhãn thời gian (time stamp):

 Sắp xếp các giao tác phân tán khi cho thực hiện chúng và áp đặt các thao tác truynhập tới DL tôn trọng thứ tự được xác định trước

 Mỗi giao tác được dẫn trỏ bởi một số hiệu thứ tự duy nhất trong hệ thống, gọi là nhãnthời gian

 Mỗi trạm đánh nhãn thời gian một cách tự trị theo đồng hồ địa phương và số hiệu củatrạm Ví dụ, một giao tác được khởi phát ở trạm i tại thời điểm t sẽ có nhãn thời gian

o UNLOCK: báo hiệu sự kết thúc của thao tác trên site

 Việc truy nhập tới một site bị khoá trong một lối không tương thích à giao tác truy nhập phải chờ cho tới khi mở khoá bởi giao tác tác động lên site

Trang 9

 Vấn đề khó nhất do việc đặt khoá là tình huống khóa chết (bế tắc): T1→T2, T2 →

T1

• Sự hợp thức hoá giao tác

 Phương pháp trực tiếp để hợp thức hoá một giao tác phân tán: tích hợp thực sự các cập nhật của giao tác và CSDL

 Giao thức hợp thức hoá hai giai đoạn:

o Giai đoạn chuẩn bị: trạm điều phối yêu cầu mỗi trạm tham gia chuẩn bị cho sự hợpthức hoá

o Giai đoạn hợp thức: trạm điều phối ra lệnh cho tất cả các trạm tham gia hợp thức hoá các cập nhật của chúng nếu như tất cả chúng đều hoàn thành đúng giai đoạn thứ nhất hay nếu không thì huỷ bỏ chúng

= = =

Nối tiếp hóa phân tán(4):

- tiến hành lập lịch tổng thể (hợp của mọi lịch biểu cục bộ)

- Đảm bảo khóa

- Đảm bảo nhãn thời gian

- Nếu DB được pdoan nhưng không nhân bản thì mọi gthuc được dùng như với CSDL đơ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à cách thức để 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 giao dịch (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

(VD: có thể truyền hay tính toán, nếu không đảm bảo lịch biểu sẽ sai dữ liệu )

Các khái niệm

- Lịch biểu hoàn toàn (chưa trình bày )

-9

Trang 10

- Lịch biểu nối tiếp: Trong một lịch biểu nối tiếp

 Mọi thao tác trong giao dịch xuất hiện liên tiếp nhau

 Không xen kẽ các thao tác

 Nếu mỗi giao dịch thu được trong trạng thái nhất quán thì lịch biểu nối tiếp các giao dịch này cũng thu được nhất quán

S1 = { R1(A);W1(A);R1(B);W1(B);C1;R2(A);R2(B);C2; }

- Các lịch biểu tương đương : Hai lịch biểu S và S’ là tương đương nếu và chỉ nếu:

 Chúng cùng chứa các giao dịch và các thao tác(S.∑T=S’.∑T)

 Thứ bậc của mọi thao tác đụng độ của các giao dịch không thoát theo cùng cách thức

- Lịch biểu nối tiếp hóa: 1 lịch biểu S được gọi là nối tiếp hóa nêu nó tương đương với 1

lịch biểu nối tiếp nào đó

VD: 3 lich bieu sau duoc noi tiep hoa va tuong duong

S1 = {R1(A);W1(A);R1(B);W1(B);C1;R2(A);R2(B);C2; }

S2 = {R1(A);W1(A);R2(A);R2(B);C2;R1(B);W1(B);C1}

S3 = {R1(A);W1(A);R2(A);R1(B);W1(B);C1;R2(B);C2}

- Kiểm tra tính nối tiếp:

Nếu đồ thị ưu tiên (dựa trên các thao tác đụng độ) cho lịch biểu S không có chu trình thì S là nối tiếp Lịch biểu nối tiếp có được qua sắp xếp topo

• Việc thực hiện khả thi:

Trong thực tế, để vận hành các giao dịch tương tranh, bô lập lịch kiểm tra liệu lịch biểu thực tế

có nối tiếp hay không.Như vậy, bộ lập lịch duy trì và mở rộng đô thị ưu tiên trong khi các thao tác mới được thực hiện (hay công bố) bởi các giao dịch :

+ Nếu đồ thị thực là không chu trình, thì tiếp tục lập lịch

+ Khác đi, thiết lập lại (1 vài) giao dịch

• Tính nối tiếp trong CSDL phân tán :

+ Lịch biểu cục bộ và tổng thể phải được xem xét

+ Để lịch biểu tổng thể được nối tiếp hóa:

1.Mỗi lịch biểu cục bộ nên được nối tiếp hóa

2 Hai thao tác đụng độ nên theo cùng một thứ tự tương đối trên mọi lịch biểu cục bộ nơi chúng xuất hiện

4.2.2 Xử lý tương tranh

Có thể dùng ppt trong QTCSDLPT-4.doc

Trang 11

Các giải thuật điều khiển tương tranh

Pessimistic execution: validate -> read -> compute -> write (commit)

Optimistic execution: read -> compute -> validate -> write (commit)

Bi quan :

• Gthuc khóa 2 pha (2PL)

 Khóa 2 pha cơ bản (primary site) 2PL

 Bản sao khóa 2 pha ( Primary Copy 2PL)

 Khóa 2 phân tán ( Distributed 2PL)

• Thứ tự nhãn thời gian (TO)

 Nhãn thời gian cơ sở( Basic TO)

 TO đa pban ( Multiversion TO)

 TO ôn hòa ( Conservative TO)

• _ Hybrid

- Lạc quan

• Dựa trên khóa

• Dựa trên thứ tự nhãn thời gian

Dựa trên khóa

• Giao dịch chỉ ra của nó bằng khóa các yêu cầu từ bô lập lịch (quản trị khóa)

• Khóa hoặc là khóa đọc rl (còn gọi là khóa chia xẻ) hoặc là khóa ghi wl(còn gọi là khóa dành riêng )

• Các khóa đọc và các khóa ghi đụng độ

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 shared lock)

(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)

11

Trang 12

Centralized 2PL

o Chỉ có 1 bộ lập lịch 2PL

trong hệ thống phân tán.

o Các yêu cầu Khóa được

công bố cho bô lập lịch ttam

(từ bộ quản trị giao dịch )

Distributed 2PL

o Bộ lập lịch được đặt ở mỗi site Mỗi

bô lập lịch điều khiển các yêu cầu khóa

cho dữ liệu ở site đó.

o Một giao dịch có thể đọc bất kỳ nhân

bản nào của dtuong x, bằng cách dành

được một khóa đọc trên bản sao của x.

Việc viết x yêu cầu dành được khóa ghi

trên mọi bản sao của x.

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 13

1 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 gỉ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;

4.3 Trường hợp nghiên cứu: Oracle

QUAN ĐIỂM CUA ORACLE

Trang 14

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.

Vận hành và điều khiển giao dịch (Statement Execution and Transaction Control)

Một câu lệnh SQL chạy thành công khác với giao dịch thành công Vận hành thành công, câu lệnh đơn:

• Dịch

• Xem SQL có hợp lệ không

• Chạy không lỗi như một đơn vị nguyên tử VD, mọi dòng của cập nhật nhiều dòng được thay đổì Tuy nhiên giao dịch chứa các câu lệnh được chuyển giao , giao dịch có thể ROLLBACK và mọi thay đổi của lệnh có thể được undo

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 lâu dài 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 định nghĩa dữ

liệu(DDL) Sụ thay đổi bởi lệnh SQL của một giao dịch trở nên lâu dài và nhìn thấy được bởi nsd khác chỉ sau khi giao dịch đã chuyển giao.Các truy vấn đượ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à phân giải 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 giá trị 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.

Trang 15

Đị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 sẽ tiếp tục một cách tự động.

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

• 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ẽ ROLLBACK

Việc treo một câu lệnh thu được tự động trong việc treo giao dịch Như vậy, mọi tài nguyên giao dịch treo

bị giữ qua việc treo và tiếp tục câu lệnh.

Khi điều kiện lỗi mất(VD, do nsd can thiệp hay không gian được giải phóng bởi các truy vấn) câu lệnh treo tự động vận hành tiếp tục

Tổng quan về quản trị giao dịch(Overview of Transaction

Management)

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 lệnh DDL 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 đề SAVE POINT

• Khi nsd chạy các lệnh như CREATE, DROP, RENAME, hay ALTER Nếu giao dịch hiện thời 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

15

Trang 16

Chú ý: Các ứng dụng nên thường xuyên chuyển giao tường minh 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ó nghĩa là thay đổi lâu dài thực hiện bởi các câu lệnh SQL trong giao dịch.

Trướ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 Sự kiện 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ể đặc tả 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 segment

rollback ) để lưu các giá trị 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

Mọ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 tham chiếu), sẽ xuất hiện:

Trang 17

1 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.

2 Oracle giải phóng mọi khóa giao dịch của dữ liệu.

3 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

2/Oracle dành sẵn điểm an toàn đặc tả , nhưng mọi điểm an toàn đã được thiết lập 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 tham chiếu đế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 ký tự ngắn và dễ nhớ để đặt tên.Tên giao dịch thay thế chuyển giao các comment cho giao dịch phân tán với các ưu điểm:

• Dễ dàng giám sát các giao dịch dài và phân giải các giao dịch phân tán nghi ngờ

• 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ể dùng tên các giao dịch để tìm kiếm các giao dịch đặc tả trong nhật ký redo.

17

Trang 18

• Ta có thể dùng tên giao dịch để tìm ra 1 giao dịch đặc tả trong view từ điển 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 thời điểm bởi cùng một người sở hữu Ta có thể dùng tên bất kỳ cho

phép ta phân biệt giao dịch.(CÂN CHÚ Ý lệnh này)

Cơ chế chuyển giao 2 pha(The Two-Phase Commit Mechanism)

Trong csdl phân tán , Oracle cần phối hợp điều khiển giao dịch qua mạng và duy trì tính nhấtquán dữ liệu , thậm chí nếu sự cố mạng hay hệ thống xuất hiện

Một giao dịch phân tán là giao dịch bao gồm 1 hay nhiều câu lệnh , cập nhật dữ liệu trên 2

hay nhiều nút khác nhau của csdl phân tán

Một cơ chế chuyển giao 2 pha đảm bảo rằng mọi server csdl tham gia trong 1 giao dịch phân

tán hoặc tất cả được chuyển giao hoặc undo các câu lệnh trong giao dịch Cơ chế chuyển giao

2 pha cũng bảo vệ các thao tác DML không tường minh thực hiện bởi các ràng buộc toàn vẹn ,lời gọi thủ tục từ xa và các trigger

Cơ chế chuyển giao 2 pha là trong suốt hoàn toàn với nsd, người đang công bố các giao dịchphân tán Thực tế, nsd thậm chí không cần biết giao dịch phân tán Lệnh COMMIT thông báokết thúc giao dịch và chuyển sang cơ chế chuyển giao 2 pha để chuyển giao giao dịch Các cúpháp mã hay lệnh phức không được yêu cầu để bao hàm các giao dịch trong thân của ứngdụng csdl

Tiến trình nền phục hồi (RECO) phân giải tự động outcome của các giao dịch phân tán nghi ngờ – các giao dịch phân tán ở đó sự chuyển giao đã bị ngắt bởi kiểu sự cố hệ thống hay mạng

bất kỳ Sau khi sự cố đã được sửa chữa và chuyển giao được thiết lập lại, tiến trình RECOcho mỗi csdl cục bộ sẽ chuyển giao hay rollback tự động bất kỳ các giao dịch phân tán mộtcách nhất quán trên các nút liên quan

Nếu sự cố trong thời gian dài, Oracle cho phép mỗi người quản trị cục bộ chuyển giao hayundo thủ công các giao dịch phân tán nghi ngờ Tùy chọn này cho phép người quản trị csdlcục bộ giải phóng tài nguyên bị khóa bất kỳ được giữ như kết quả của sự cố thời gian dài

Nếu csdl phải được phục hồi đên 1 điểm nào trước đó, việc phục hồi Oracle tạo điều kiện chophép người quản trị csdl ở các site khác đưa csdl đến điểm trước về thời gian thao tác nay đảmbảo rằng csdl tổng thể vẫn nhất quán

Trang 19

Giao thức chuyển giao 2 pha

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) để đảmbảo trạng thái csdl nhất quán

Mỗi DP(Bộ xử lý dữ liệu ) 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

Giao thức chuyển giao 2 pha yêu cầu một giao thức DO-UNDO-REDO và giao thức ahead

write-Các thao tác

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áclối vào log giao dịch hệ thống

DO thực hiện thao tác và ghi giá trị “before” and “after” trong nhật ký giao dịch

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

REDO làm lại một thao tác sử dụng lối vào nhật ký được viết bởi phần DO của chuỗi

Giao thức buộc lối vào nhật ký được viết để lưu lâu dài trước khi thao tác thực tế xảy ra

Các 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ệ thuộc haycohort (tụ tập) Các giao thức thực hiện gồm 2 pha :

Phase 1: Chuẩn bị

 Bộ phối hợp gửi một thông điệp PREPARE TO COMMIT đến mọi lệ thuộc

 Các lệ thuộc nhận thông điệp viết nhật ký giao dịch sử dụng giao thức write-head, và gửimột thông điệp xác nhận đên bộ phối hợp

 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

Phase 2: Chuyển giao cuối cùng

 Bộ phối hợp quảng bá thông điệp COMMIT đến mọi lệ thuộc và chờ đáp ứng

 Mỗi lệ thuộc nhận thông điệp COMMIT thì cập nhật csdl dùng giao thức DO

 Các lệ thuộc gửi đáp ứng với thông điệp COMMITED hay NOT COMMITED đến bộphối hợp

 Nếu 1 hay nhiều lệ thuộc không chuyển giao , bộ phối hợp gửi thông điệp ABORT, vìvậy chúng UNDO mọi thay đổi

19

Trang 20

CÁc giao dịch nghi ngờ(In-Doubt Transactions)

Cơ chế chuyển giao 2 pha dbaor mọi nút hoặc chuyển giao thành công hoặc sự cố Điều gì xảy ra

nếu hệ thống sự cố trong các pha này Giao dịch trở nên giao dịch nghi ngờ

Các giao dịch phân tán nghi ngờ trong các trươg hợp sau:

• 1 Server chạy Oracle bị sự cố

• Một mạng kết nối giữa các csdl Oracle liên quan bị đứto

• Phần mềm không điều kiện

The RECO process automatically resolves in-doubt transactions when the machine, network, or software problem is resolved Until RECO can resolve the transaction, the data is locked for bothreads and writes Oracle blocks reads because it cannot determine which version of the data to display for a query

B UNDO

UNDO

Các lệnh DML

o Bao gồm : INSERT, MERGER, UPDATE, DELETE

o Thực hiện 2 lệnh ROLLBACK và COMMIT

Dữ liệu Undo là:

• Bản sao của dữ liệu gốc, dữ liệu trước khi thay đổi

• Được chặn cho mọi giao dịch thay đổi dữ liệu

• Được giữ lại ít nhât cho tới khi giao dịch kthuc

Ngày đăng: 17/01/2016, 00:08

HÌNH ẢNH LIÊN QUAN

Bảng 13-3 cho thấy các chế độ khóa bảng mà các câu lệnh chiếm giữ và các thao tác mà các khóa nay cho phép hay cấm - đề thi quản trị cơ sở dữ liệu phân tán 9
Bảng 13 3 cho thấy các chế độ khóa bảng mà các câu lệnh chiếm giữ và các thao tác mà các khóa nay cho phép hay cấm (Trang 28)

TỪ KHÓA LIÊN QUAN

w