Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
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
Nội dung
Bai tap dia2\ddbs\oracle\test* CHƯƠNG IV: QUẢN LÝ GIAO DỊCH VÀ ĐIỀU KHIỂN TƯƠNG TRANH (số tiết ) 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 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 hoạt động tạo chuyển đổi quán hệ thống đảm bảo tính quán hệ thống (tương đương suốt tương tranh, tương đương suốt cố)(xem dnghia khác) VD: Nếu có bảng sau FLIGHT(FNO, DATE, SRC, DEST, STSOLD, CAP) CUST(CNAME, ADDR, BAL) FC(FNO,CNAME, SPECIAL) begin transaction_Reservation begin input(fight_no,date,customer_name); 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); commit; output(“reservation completed"); end Reservation Các kiểu lỗi Hình thức: - Cho Oij(x) thao tác Oj giao dịch Ti thao tác dtuong x, Oj {Read,Write} Oj atomic OSi = Sj U Oij Ni € {commit, abort} - Một giao dịch Ti thứ tự riêng Ti={TFailure Để ghi tin cậy, cần hỗ trợ 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 giao tác phân tán cho thực chúng áp đặt thao tác truy nhập tới DL tôn trọng thứ tự xác định trước Mỗi giao tác dẫn trỏ số hiệu thứ tự hệ thống, gọi nhãn thời gian Mỗi trạm đánh nhãn thời gian cách tự trị theo đồng hồ địa phương số hiệu trạm Ví dụ, giao tác khởi phát trạm i thời điểm t có nhãn thời gian • Sự đặt khoá (locking) Việc truy nhập tới site DL chi phối giao thức gồm hai giao tác nguyên thuỷ: o LOCK: yêu cầu thao tác site DL theo cách thức định (đọc viết) o UNLOCK: báo hiệu kết thúc thao tác site Việc truy nhập tới site bị khoá lối không tương thích giao tác truy nhập phải chờ mở khoá giao tác tác động lên site • Vấn đề khó việc đặt khoá tình 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á giao tác phân tán: tích hợp thực cập nhật giao tác 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 trạm tham gia chuẩn bị cho hợp thức hoá o Giai đoạn hợp thức: trạm điều phối lệnh cho tất trạm tham gia hợp thức hoá cập nhật chúng tất chúng hoàn thành giai đoạn thứ hay không 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 lịch biểu cục bộ) - Đảm bảo khóa - Đảm bảo nhãn thời gian - Nếu DB pdoan không nhân gthuc dùng với CSDL đơn Vận hành lịch biểu ( or History): Khái niệm lịch biểu cung cấp chế để thể cách thức để vận hành tương tranh (khả dĩ) giao dịch Mô tả thứ tự thao tác để giao dịch (TA) vận hành Lịch biểu định nghĩa thứ tự riêng qua thao tác (VD: truyền hay tính toán, không đảm bảo lịch biểu sai liệu ) Các khái niệm - Lịch biểu hoàn toàn (chưa trình bày ) Lịch biểu nối tiếp: Trong lịch biểu nối tiếp Mọi thao tác giao dịch xuất liên tiếp Không xen kẽ thao tác Nếu giao dịch thu trạng thái quán lịch biểu nối tiếp giao dịch thu 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 S’ tương đương nếu: Chúng chứa giao dịch thao tác(S.∑T=S’.∑T) Thứ bậc thao tác đụng độ giao dịch không thoát theo cách thức - Lịch biểu nối tiếp hóa: lịch biểu S gọi nối tiếp hóa nêu tương đương với lịch biểu nối tiếp VD: 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 thao tác đụng độ) cho lịch biểu S chu trình S nối tiếp Lịch biểu nối tiếp có qua xếp topo • Việc thực khả thi: Trong thực tế, để vận hành 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, lập lịch trì mở rộng đô thị ưu tiên thao tác thực (hay công bố) giao dịch : + Nếu đồ thị thực không chu trình, 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 CSDL phân tán : + Lịch biểu cục tổng thể phải xem xét + Để lịch biểu tổng thể nối tiếp hóa: 1.Mỗi lịch biểu cục nên nối tiếp hóa Hai thao tác đụng độ nên theo thứ tự tương đối lịch biểu cục nơi chúng xuất 4.2.2 Xử lý tương tranh Có thể dùng ppt QTCSDLPT-4.doc 10 Sau bàn DML locks, DDL locks, internal locks Các khóa DML(DML Locks) Mục tiêu khóa DML (data lock) đảm bảo tính toàn vẹn liệu truy nhập tương tranh nhiều nsd DML khóa cản trở đụng độ tạm thời thao tác DML hay DDL Câu lệnh DML thu tự động khóa mức bảng mức dòng Note: Các từ viết tắt ngoặc Locks Monitor of Enterprise Manager dùng Enterprise Manager phải hiển thị TM cho khóa bảng nào, phải thị chế độ khóa bảng (RS/SRX) Các khóa dòng(Row Locks (TX) Ngăn ngừa giao dịch thay đổi dòng Khi thay đổi dòng, yêu cầu có khóa dòng Không có hạn chế số khóa dòng câu lệnh hay giao dịch giữ, Oracle không leo thang khóa từ mức dòng đến nghiền hạt thô Khóa dòng cung cấp khả khóa mịn cung cấp mức tương tranh thông lượng tốt Tổ hợp điều khiển tương tranh nhiều phiên khóa mức dòng có nghĩa nsd giành liệu truy nhập dòng, đặc biệt: • • Người đọc liệu không chờ cho người viết dòng Người viết liệu không chờ cho người đọc dòng SELECT FOR UPDATE dùng, chúng yêu cầu đặc biệt khóa cho người đọc • Người viết chờ người viết khác họ muốn cập nhật dòng thời điểm Note: Người đọc phải chờ người viết khối liệu vài trường hợp đặc biệt treo giao dịch phân tán Một giao dịch yêu cầu khóa dòng dành riêng cho dòng thay đổi câu lệnh sau: INSERT, UPDATE, DELETE SELECT với mệnh đề FOR UPDATE Một dòng thay đổi thường khóa dòng cho giao dịch khác thay đổi khóa chuyển giao hay rollback Tuy nhiên giao dịch cố nguyên nhân đó, phục hồi mức khóa dành sẵn dòng trước toàn giao dịch phục hồi Các khóa dòng Oracle yêu cầu cách tự động kết câu lệnh lke trước đo 27 Nếu giao dịch giành khóa dòng, giao dịch yêu cầu khóa bảng cho bảng tương ứng Khóa bảng ngăn ngừa đụng độ thao tác DDL chồng lấn lên thay đổi csdl giao dịch thời Các khóa bảng-Table Locks (TM) Cơ dùng điều khiển tương tranh với thao tác DDL ngăn ngừa bảng bị hủy thao tác DML Khi câu lệnh DML hay DDL bảng, khóa bảng yêu cầu Các khóa bảng không ảnh hường đến tương tranh thao tác DML Với bảng phân chia, khóa bảng yêu cầu bảng mức bảng Giao dịch yêu cầu khóa bảng bảng bị thay đổi câu lệnh DML sau: INSERT, UPDATE, DELETE, SELECT với mệnh đề FOR UPDATE LOCK TABLE Thao tác DML nhằm mục tiêu:dành truy nhập bảng nhân danh giao dịch ngăn ngừa thao tác DDL đụng độ với giao dịch Khóa bảng ngăn ngừa việc chiếm khóa DDL dành riêng bảng ngăn ngừa thao tác DDL yêu cầu khóa VD, bàng thay đổi hay hủy giao dịch chưa chuyển giao giữ khóa bảng cho Một bảng giữ chế độ: row share (RS), row exclusive (RX), share (S), share row exclusive (SRX), and exclusive (X) Tính nghiêm ngặt chế độ khóa bảng xác định chế độ khóa bảng khác bảng giữ hay giành Bảng 13-3 cho thấy chế độ khóa bảng mà câu lệnh chiếm giữ thao tác mà khóa cho phép hay cấm Table 13-3 Summary of Table Locks Lock Modes Permitted? SQL Statement Mode of Table Lock RS RX S SRX X SELECT FROM table None Y Y Y Y Y INSERT INTO table RX Y Y N N N UPDATE table RX Y* Y* N N N DELETE FROM table RX Y* Y* N N N SELECT FROM table FOR UPDATE OF RS Y* Y* Y* Y* 28 N Lock Modes Permitted? SQL Statement Mode of Table Lock RS RX S SRX X LOCK TABLE table IN ROW SHARE MODE RS Y Y Y Y N LOCK TABLE table IN ROW EXCLUSIVE MODE RX Y Y N N N LOCK TABLE table IN SHARE MODE S Y N Y N N LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE SRX Y N N N N LOCK TABLE table IN EXCLUSIVE MODE X N N N N N RS: row share(chia xẻ dòng) RX: row exclusive(dòng dành riêng) S: share (chia xẻ) SRX: share row exclusive (dòng chia xẻ dành riêng) X: exclusive (dành riêng) *Yes, Có không đụng độ dòng , khóa bị giữ giao dịch khác Khác đị, chờ xuất Phần sau trình bày chế độ khóa bảng từ đên nghiêm ngặt CŨng mô tả nguyên nhân giao dịch chiếm khóa bảng chế độ hoạt động phép hay cấm giao dịch khac khóa chế độ Các khóa bảng chia xẻ dòng -Row Share Table Locks (RS) Đôi gọi khóa bảng chia xẻ subshare table lock( SS) thị giao dịch giữ khóa bảng khóa dòng có ý định cập nhật chúng RS chiếm tự động cho bảng chạy lệnh sau: SELECT FROM table FOR UPDATE OF ; 29 LOCK TABLE table IN ROW SHARE MODE; Khóa bảng chia xẻ dòng chế độ it nghiêm ngặt nhất, đưa mức độ tương tranh lớn bảng Các thao tác phép:Khóa bảng chia xẻ dòng giữ giao dịch cho phép giao dịch khác truy vấn, insert, delete, hay khóa dòng tương tranh bảng Vì vậy, giao dịch dành dòng chia xẻ đồng thời, dòng dành riêng, chia xẻ, khóa bảng dành riêng chia xẻ cho bảng Các thao tác cấm:Khóa bảng chia xẻ giữ giao dịch ngăn ngừa giao dịch khác truy nhập viết riêng với bảng dùng lệnh sau: LOCK TABLE table IN EXCLUSIVE MODE; Các khóa bảng dành riêng dòng-Row Exclusive Table Locks (RX) Còn gọi khóa bảng dành riêng nhỏ subexclusive table lock( SX) thị giao dịch giữ khóa tạo hay nhiều cập nhật đến dòng bảng khóa RX bị chiếm tự động để bảng thay đổi kiểu lệnh sau: INSERT INTO table ; UPDATE table ; DELETE FROM table ; LOCK TABLE table IN ROW EXCLUSIVE MODE; Nghiêm ngặt so với khóa bảng chia xẻ Các thao tác cho phép:Cho phép giao dịch khác truy vấn, insert, update,delete hay khóa hàng tương tranh bảng Vì thế, khóa RX cho phép nhiều giao dịch giành hàng dành riêng khóa RS cho bảng Các thao tác cấm:Ngăn ngừa giao dịch khác khóa khỏi thủ công bảng cho việc đọc viết dành riêng Vì giao dịch khác khóa tương tranh bảng dùng lệnh sau: LOCK TABLE table IN SHARE MODE; LOCK TABLE table IN SHARE EXCLUSIVE MODE; LOCK TABLE table IN EXCLUSIVE MODE; 30 Các khóa bảng chia xẻ-Share Table Locks (S) Được đòi hỏi tự động cho bảng đặc tả câu lệnh sau: LOCK TABLE table IN SHARE MODE; Các thao tác cho phép:Khóa bảng chia xẻ giữ giao dịch cho phép giao dịch khác truy vấn bảng, khóa hàng với SELECT FOR., hay chạy lệnh LOCK TABLE IN SHARE thành công Không có cập nhật phép giao dịch khác Nhiều giao dịch khóa bảng chia xẻ với bảng tương tranh Trong trường hợp này, giao dịch cập nhật bảng(thạm chí giao dịch giữ khóa dòng kết lệnh SELECT với mệnh đề FOR UPDATE) Vì thế, giao dịch có khóa chia xẻ cập nhật bảng giao dịch khác có khóa chia xẻ bảng Các thao tác cấm: Khóa bảng chia xẻ giữ giao dịch ngăn ngừa giao dịch khác thay đổi bảng chạy lệnh sau: LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE; LOCK TABLE table IN EXCLUSIVE MODE; LOCK TABLE table IN ROW EXCLUSIVE MODE; Các khóa bảng dành riêng dòng chia xẻ-Share Row Exclusive Table Locks (SRX) Còn gọi khóa dành riêng nhỏ chia xẻ share-subexclusive table lock (SSX) Nghiêm ngặt so với khóa bảng chia xẻ Khóa SRX chiếm bảng sau: LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE; Các thao tác cho phép:Chỉ có giao dịch thời điểm chiếm giữ khóa bảng dành riêng bảng cho Một khóa bảng dành riêng giữ giao dịch cho phép giao dịch khác truy vấn hay khóa dòng đặc tả dùng SELECT dùng mệnh đề FOR UPDATE, không cập nhật bảng Các thao tác cấm: Ngăn ngừa giao dịch khác chiếm khóa bảng dòng dành riêng thay đổi bảng Một khóa bảng dòng dành riêng cấm giao dịch khác giành quyền chia xẻ, chia xẻ dòng dành riêng khóa bảng riêng, ngăn ngừa giao dịch khác không vận hành lệnh sau: LOCK TABLE table IN SHARE MODE; 31 LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE; LOCK TABLE table IN ROW EXCLUSIVE MODE; LOCK TABLE table IN EXCLUSIVE MODE; Các khóa bảng dành riêng-Exclusive Table Locks (X) Là chế độ khóa bảng nghiêm ngặt khóa bảng, cho phép giao dịch giữ khóa truy nhập viết đến bảng khóa bảng dành riêng bị đòi hỏi cho bảng : LOCK TABLE table IN EXCLUSIVE MODE; Các thao tác Cho phép:Chỉ có giao dịch có khóa bảng dành riêng cho bảng Một khóa bảng dành riêng cho phép giao dịch khác truy vấn bảng Các thao tác cấm:Một khóa bảng dành riêng giao dịch cấm giao dịch khác thực kiểu cleenhj DML hay thay khóa bảng Các khóa DML yêu cầu tự động cho câu lệnh DML-DML (Locks Automatically Acquired for DML Statements) The previous sections explained the different types of data locks, the modes in which they can be held, when they can be obtained, when they are obtained, and what they prohibit The following sections summarize how Oracle automatically locks data on behalf of different DML operations Table 13-4 summarizes the information in the following sections Table 13-4 Locks Obtained By DML Statements DML Statement Row Locks? Mode of Table Lock INSERT INTO table X RX UPDATE table X RX DELETE FROM table X RX X RS SELECT FROM table SELECT FROM table FOR UPDATE OF 32 DML Statement Row Locks? Mode of Table Lock LOCK TABLE table IN ROW SHARE MODE RS ROW EXCLUSIVE MODE RX SHARE MODE S SHARE EXCLUSIVE MODE SRX EXCLUSIVE MODE X X: exclusive RX: row exclusive RS: row share S: share SRX: share row exclusive Khóa mặc định cho truy vấn-Default Locking for Queries Queries are the SQL statements least likely to interfere with other SQL statements because they only read data INSERT, UPDATE, and DELETE statements can have implicit queries as part of the statement Queries include the following kinds of statements: SELECT INSERT SELECT ; UPDATE ; DELETE ; They not include the following statement: SELECT FOR UPDATE OF ; 33 The following characteristics are true of all queries that not use the FOR UPDATE clause: • • A query acquires no data locks Therefore, other transactions can query and update a table being queried, including the specific rows being queried Because queries lacking FOR UPDATE clauses not acquire any data locks to block other operations, such queries are often referred to in Oracle as nonblocking queries A query does not have to wait for any data locks to be released; it can always proceed (Queries may have to wait for data locks in some very specific cases of pending distributed transactions.) Khóa mặc định cho -Default Locking for INSERT, UPDATE, DELETE, and SELECT FOR UPDATE The locking characteristics of INSERT, UPDATE, DELETE, and SELECT FOR UPDATE statements are as follows: • • The transaction that contains a DML statement acquires exclusive row locks on the rows modified by the statement Other transactions cannot update or delete the locked rows until the locking transaction either commits or rolls back The transaction that contains a DML statement does not need to acquire row locks on any rows selected by a subquery or an implicit query, such as a query in a WHERE clause A subquery or implicit query in a DML statement is guaranteed to be consistent as of the start of the query and does not see the effects of the DML statement it is part of • A query in a transaction can see the changes made by previous DML statements in the same transaction, but cannot see the changes of other transactions begun after its own transaction • In addition to the necessary exclusive row locks, a transaction that contains a DML statement acquires at least a row exclusive table lock on the table that contains the affected rows If the containing transaction already holds a share, share row exclusive, or exclusive table lock for that table, the row exclusive table lock is not acquired If the containing transaction already holds a row share table lock, Oracle automatically converts this lock to a row exclusive table lock Các khóa từ điển liệu-DDL Locks A data dictionary lock (DDL) protects the definition of a schema object while that object is acted upon or referred to by an ongoing DDL operation Recall that a DDL statement implicitly commits its transaction For example, assume that a user creates a procedure On behalf of the user's single-statement transaction, Oracle automatically acquires DDL locks for all schema objects referenced in the procedure definition The DDL locks prevent objects referenced in the procedure from being altered or dropped before the procedure compilation is complete 34 Oracle acquires a dictionary lock automatically on behalf of any DDL transaction requiring it Users cannot explicitly request DDL locks Only individual schema objects that are modified or referenced are locked during DDL operations The whole data dictionary is never locked DDL locks fall into three categories: exclusive DDL locks, share DDL locks, and breakable parse locks Các khóa từ điển liệu danh riêng-Exclusive DDL Locks Most DDL operations, except for those listed in the section, "Share DDL Locks" require exclusive DDL locks for a resource to prevent destructive interference with other DDL operations that might modify or reference the same schema object For example, a DROP TABLE operation is not allowed to drop a table while an ALTER TABLE operation is adding a column to it, and vice versa During the acquisition of an exclusive DDL lock, if another DDL lock is already held on the schema object by another operation, the acquisition waits until the older DDL lock is released and then proceeds DDL operations also acquire DML locks (data locks) on the schema object to be modified Các khóa DDL chia xẻ-Share DDL Locks Some DDL operations require share DDL locks for a resource to prevent destructive interference with conflicting DDL operations, but allow data concurrency for similar DDL operations For example, when a CREATE PROCEDURE statement is run, the containing transaction acquires share DDL locks for all referenced tables Other transactions can concurrently create procedures that reference the same tables and therefore acquire concurrent share DDL locks on the same tables, but no transaction can acquire an exclusive DDL lock on any referenced table No transaction can alter or drop a referenced table As a result, a transaction that holds a share DDL lock is guaranteed that the definition of the referenced schema object will remain constant for the duration of the transaction A share DDL lock is acquired on a schema object for DDL statements that include the following statements: AUDIT, NOAUDIT, COMMENT, CREATE [OR REPLACE] VIEW/ PROCEDURE/PACKAGE/PACKAGE BODY/FUNCTION/ TRIGGER, CREATE SYNONYM, and CREATE TABLE (when the CLUSTER parameter is not included) Các khóa dịch có khả bẻ gẫy-Breakable Parse Locks A SQL statement (or PL/SQL program unit) in the shared pool holds a parse lock for each schema object it references Parse locks are acquired so that the associated shared SQL area can be invalidated if a referenced object is altered or dropped A parse lock does not disallow any DDL operation and can be broken to allow conflicting DDL operations, hence the name breakable parse lock A parse lock is acquired during the parse phase of SQL statement execution and held as long as the shared SQL area for that statement remains in the shared pool 35 See Also: Chapter 6, "Dependencies Among Schema Objects" Khoảng thời gian khóa DDL Duration of DDL Locks The duration of a DDL lock depends on its type Exclusive and share DDL locks last for the duration of DDL statement execution and automatic commit A parse lock persists as long as the associated SQL statement remains in the shared pool Các khóa bó DDL- DDL Locks and Clusters A DDL operation on a cluster acquires exclusive DDL locks on the cluster and on all tables and materialized views in the cluster A DDL operation on a table or materialized view in a cluster acquires a share lock on the cluster, in addition to a share or exclusive DDL lock on the table or materialized view The share DDL lock on the cluster prevents another operation from dropping the cluster while the first operation proceeds Các khóa chốt khóa nội - Latches and Internal Locks Latches and internal locks protect internal database and memory structures Both are inaccessible to users, because users have no need to control over their occurrence or duration The following section helps to interpret the Enterprise Manager LOCKS and LATCHES monitors Chốt - Latches Latches are simple, low-level serialization mechanisms to protect shared data structures in the system global area (SGA) For example, latches protect the list of users currently accessing the database and protect the data structures describing the blocks in the buffer cache A server or background process acquires a latch for a very short time while manipulating or looking at one of these structures The implementation of latches is operating system dependent, particularly in regard to whether and how long a process will wait for a latch Các khóa nội - Internal Locks Internal locks are higher-level, more complex mechanisms than latches and serve a variety of purposes Các khóa cache từ điển - Dictionary Cache Locks These locks are of very short duration and are held on entries in dictionary caches while the entries are being modified or used They guarantee that statements being parsed not see inconsistent object definitions Dictionary cache locks can be shared or exclusive Shared locks are released when the parse is complete Exclusive locks are released when the DDL operation is complete Các khóa quản trị log quản trị file - File and Log Management Locks 36 These locks protect various files For example, one lock protects the control file so that only one process at a time can change it Another lock coordinates the use and archiving of the redo log files Datafiles are locked to ensure that multiple instances mount a database in shared mode or that one instance mounts it in exclusive mode Because file and log locks indicate the status of files, these locks are necessarily held for a long time Các khóa không gian bảng phân đoạn rollback - Tablespace and Rollback Segment Locks These locks protect tablespaces and rollback segments For example, all instances accessing a database must agree on whether a tablespace is online or offline Rollback segments are locked so that only one instance can write to a segment Khóa liệu tường minh(thủ công) - Explicit (Manual) Data Locking Oracle always performs locking automatically to ensure data concurrency, data integrity, and statement-level read consistency However, you can override the Oracle default locking mechanisms Overriding the default locking is useful in situations such as these: • Applications require transaction-level read consistency or repeatable reads In other words, queries in them must produce consistent data for the duration of the transaction, not reflecting changes by other transactions You can achieve transaction-level read consistency by using explicit locking, read-only transactions, serializable transactions, or by overriding default locking • Applications require that a transaction have exclusive access to a resource so that the transaction does not have to wait for other transactions to complete Oracle's automatic locking can be overridden at the transaction level or the session level At the transaction level, transactions that include the following SQL statements override Oracle's default locking: • • The SET TRANSACTION ISOLATION LEVEL statement The LOCK TABLE statement (which locks either a table or, when used with views, the underlying base tables) • The SELECT FOR UPDATE statement Locks acquired by these statements are released after the transaction commits or rolls back At the session level, a session can set the required transaction isolation level with the ALTER SESSION statement Note: If Oracle's default locking is overridden at any level, the database administrator or application developer should ensure that the overriding locking procedures operate correctly The locking 37 procedures must satisfy the following criteria: data integrity is guaranteed, data concurrency is acceptable, and deadlocks are not possible or are appropriately handled See Also: Oracle Database SQL Reference for detailed descriptions of the SQL statements LOCK TABLE and SELECT FOR UPDATE 4.3.2 Điều khiển tương tranh CHUYểN GIAO @ PHA GIAO DịCH NGHI NGờ Khóa Oracle === KỊCH BẢN trước cần định nghĩa (cây phiên, site điểm chuyển giao ) o Điều khiển tương tranh :(tệp DBMS Presentation_R.ppt) Mục tiêu(5):/co giãn cố/thực song song/Tổng phí tính toán lưu trữ nhỏ/Thực mạng có độ trễ lớn/ Đặt ràng buộc lên hoạt động nguyên tử Những vấn đề(5): cập nhât/mất phụ thuộc không chuyển giao/phân tích không quán /nhiều sao/ đồng hay không đồng 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 nhân thực CSDL đơn Các giao thức Khóa(4): Khóa trung tâm pha/khóa sở pha /khóa phân tán pha /luật đa số 38 Khóa phân tán pha: site có quản trị khóa riêng(cho giao tiếp)/nếu nhân giao thức giống khóa sở pha/thực đọc ghi nhiều(ROWA có thẻ đọc phải đảm bảo ghi toàn sao)/tránh nhược điểm khóa trung tâm/là mở rộng khóa sở pha /mức độ phức tạp hơn-giá cao Khóa đa số(3): thực giao dịch khóa 50 % giao dịch/mở rộng ROWA linh hoạt hơn/ tránh nhược điểm khóa trung tâm đắt hơn-phức tạp Giao thức tem tgian(3): giống giao thức trước têm định danh cục bộ/ưu tiên tem tgian “già hơn”/nếu tem 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 khóa chết trung tâm/phân cấp/phân tán Phục hồi liệu cố(4): cố thông điệp/đường truyền/site/chọn thời gian time-out khó Quá trình phục hồi(6): thoát cac giao dịch có cố/lap cờ thông báo/định kỳ theo tgian kiểm tra site đx phcuj hồi chưa/ngay khởi động, phải có thủ tục phục hồi/phục hồi cục xong phải có cập nhật để phù hợp với phần lại mạng/nếu mạng bị phân chia, phải thiết lập lại kết nối Các giao thức phục hồi(3): cần phải thực khóa(tránh non-blocking)/có coodinator hay quản trị gdich/khi giao dịch có site xuất gọi participation Chuyển giao pha(4): coordinator gưi thông báo PREPARE đến participtaon chờ trả lời( READY_COMMIT hay ABORRT)/và gửi GLOBAL ABORT thaot ABORT hay timeout/Nếu ko, Gửi GLOBAL COMMIT / thực thi Các giao thức(3): terminating(khi coordinator timeout hay fail)/recovery( –Coordinator can fail in Initial, Waiting, Decided state –Participant can fail in Initial, Prepared, Aborted/Committed state )/nếu partiocipation mât coordinator phải chọn coordinator Đứt đoạn mạng: vấn đề cập nhật định danh / Đảm bảo tính toàn vẹn/Hai mạng rời ko thể nói chuyện với ++++++ == Commit; Rollback ; Rollback to savepoint pointA; //đặt điểm? 39 Thay đổi mức cách ly: mặc định/chỉ đọc/tuần tự/tuần tự đọc liệu chuyển giao Thực điều khiển tương tranh: Oracle thực • • Khóa bàng cách thiết lập bit mục liệu bi khóa thông tin khóa lưu khối liệu chứa dòng Khóa giữ suot thời gian giao dịch giải phóng rollback hay chuyển giao • Oracle không sử dụng leo thang khóa, lưu thông tin khóa khối liệu dành riêng • Chuyển đổi khóa đảm bảo khóa trì (khóa dòng->khóa bảng cần) a/ Các phương pháp khóa: hạt(mầm) Oracle dòng (tương tranh Microsoft trang= 1khối dòng) b/Các kiểu khóa xem Khóa DML Khóa DDL Chốt khóa nội khóa phân tán c/Chế độ khóa (xem dưới) RS/RX/S/SRX/X d/ Khóa tường minh Oracle: đè lên khóa mặc định(có thể cấp phiên hay cấp giao dịch) - Dùng nowait(khóa bảng loại trừ, không đợi khóa bảng, khóa ngay) LOCK TABLE table IN EXCLUSIVE NO WAIT; - Dùng for update( Đè lên tất khóa mặc định dòng có mặt lệnh) SELETC * FROM table WHERE điều kiện FOR UPDATE ; - Dùng FOR UPDATE NO WAIT (hạn chế hơn, Oracle cung cấp khóa đối tượng báo lỗi mà không đợi khóa) SELETC * FROM table WHERE điều kiện FOR UPDATE OF column NO WAIT ; 40 e/ Quản lý khóa - Dùng script Oracle (vd:uttlock.sql, catproc.sql từ điển liệu DBA_LOCKS,DBA_BLOCKERS DBA_WAITERS) Khóa khối (DBA_BLOCKERS V$SESSION) SELECT a.username,a.program,a.sid,a.serial FROM V$SESSION a,DBA_BLOCKERS b WHERE a.sid=b.holding_session; - Khóa chết : Oracle tự động nhận rollback giao dịch giữ khóa áp dụng gần Thông tin nằm thư mục udump ID phiên Đây lỗi thiêt kế, phải ý thiêt kế Dùng Quản trị hãng Oracle (OEM) để quản lý phiên làm việc(hay TopSession) Từ Lock Manager tìm Blocking/Waiting Locks Chart , hủy phiên liên quan == ++++++ 41 [...]... cao nhất dữ liệu và cũng cung cấp tính toàn vẹn an toàn không lỗi Oracle cũng cho phép nsd khóa dữ liệu thủ công 23 Các giao dịch và tương tranh dữ liệu( Transactions and Data Concurrency) Oracle cung cấp tranh và toàn vẹn dữ liệu giữa các giao dịch dùng cơ chế khóa Vì các cơ chế khóa gắn chặt đến điều khiển giao dịch người thi t kế ứng dụng chỉ cần xác định các giao dịch đúng và Oracle quản trị khóa... 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 • Được dùng để hỗ trợ o Các thao tác ROLLBACK o Nhất quán đọc và truy vấn flashback o Phục hồi từ các giao dịch sự cố • Các giao dịch và dữ liệu undo 20 Giao dịch và Dữ liệu Undo • Mỗi giao dịch được gán... 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ất quá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... không nhất quán trong hệ thống đa nsd Redo Lặp lại sự thay đổi như thế nào Đi tiếp việc thay đổi dữ liệu Các file Nhật ký redo Mất mát dữ liệu Giám sát Undo: Thường yêu cầu quản trị không nhiều Phạm vi giám sát 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 • Kích thước không gian bảng... tường minh nào Cơ chế khóa mặc định Oracle khóa dữ liệu tai mức thấp nhất của tính nghiêm ngặt để đảm bảo toàn vẹn dữ liệu trong khi cho phép mức độ tương tranh dữ liệu cao nhất Các chế độ khóa(Modes of Locking) Oracle sử dụng 2 chế độ khóa trong csdl đa nsd : • Chế độ khóa dành riêng ngăn ngừa các tài nguyên liên hiệp khỏi tài nguyên phân chia Chế độ khóa này dành khi cần thay đổi dữ liệu Giao dịch... 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ịch phâ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ích SQL -92 và có sẵn trong SQL Server dùng cú pháp : ROLLBACK WORK D.KHÓA TRONG ORACLE Các loại khóa Oracle khóa dữ liệu như thế nào(How Oracle Locks Data) Các khóa là các cơ chế ngăn ngừa tương tác phá hủy giữa các giao dịch truy nhập cùng tài nguyên – hoặc đối tượng nsd như các bảng/dòng hay các đối tượng hệ thống không nhìn thấy như cấu trúc dữ liệu chia xẻ trong bộ nhớ và các dòng từ điển dữ liệu. .. tiến trình RECO cho 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ột cá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 hay undo 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ị csdl cụ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... 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 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... 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 ... VALUE(‘100’, 29- JUL-2007’,120.00); COMMIT WORK; SELECT * FROM CUSTOMER WHERE CUS_NUM>250; 4.1.2 Những vấn đề giao dịch Như CSDL đơn: Quản trị giao dịch, lập lịch, quản trị phục hồi, quản trị đệm (Transaction... tất phần việc giao dịch Trong suốt phân tán Distribution transparency Được hỗ trợ từ điển liệu phân tán( distributed data dictionary (DDD) hay catalog liệu phân tán( distributed data catalog (DDC)... giao dịch phân tán cách quán nút liên quan Nếu cố thời gian dài, Oracle cho phép người quản trị cục chuyển giao hay undo thủ công giao dịch phân tán nghi ngờ Tùy chọn cho phép người quản trị csdl