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

Quản trị cơ sở dữ liệu Oracle 09 control transactions

25 128 0

Đ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 25
Dung lượng 804,27 KB

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

Nội dung

Thực thi một câu lệnh SELECT• Bước 1: User process chuyển câu lệnh SELECT tới server process và server sẽ tìm kiếm trong database buffer cache xem có dữ liệu không – Nếu có: đi tới bước

Trang 1

Quản lý giao tác

Trang 2

Giao tác cơ sở dữ liệu

Một giao tác là một đơn vị công việc nguyên tố chứa một hoặc nhiều câu lệnh

Trang 3

Thực thi câu lệnh SQL

• Câu lệnh SQL ta quan tâm ở đây là: SELECT, INSERT, UPDATE, và DELETE

Trang 4

Thực thi một câu lệnh SELECT

• Bước 1: User process chuyển câu lệnh SELECT tới server process và server sẽ tìm kiếm trong database buffer cache xem có dữ liệu không

– Nếu có: đi tới bước 4

– Ngược lại: đi tới bước 2

• Bước 2: định vị block dữ liệu trong datafiles

• Bước 3: copy chúng vào trong database buffer cache

• Bước 4: chuyển dữ liệu tới server process

• Bước 5: trả kết quả về user process

Trang 6

Thực thi một câu lệnh UPDATE

• Lock phải được tạo ra trên những dòng dữ liệu và index key tương ứng

• Redo được tạo ra: server process ghi những thay đổi vào log buffer

• Việc update được thực thi trong database buffer cache:

– Block of table data được cập nhật với giá trị mới của column.

– Giá trị cũ của column được ghi vào block trong undo segment.

• Từ đây, tất cả các câu truy vấn đến dữ liệu đã bị thay đổi từ những session khác

sẽ được chuyển đến undo data

Trang 7

Thực thi câu lệnh INSERT và DELETE

• Định vị block liên quan trong database buffer cache

• Tất cả những change vector áp dụng cho data và undo block được ghi vào log buffer

– Đối với INSERT: vector được áp dụng cho undo block là rowid của dòng dữ liệu mới.– Đối với DELETE: change vector được ghi vào undo block là toàn bộ dòng dữ liệu.

Trang 8

Bắt đầu và kết thúc của một transaction

• Một session bắt đầu một transaction khi gặp câu lệnh DML và kết thúc khi gặp một câu lệnh COMMIT hoặc ROLLBACK

• Ngoài ra, những trường hợp sau sẽ ngầm kết thúc một transaction:

– Chạy một câu lệnh DDL (CREATE, ALTER, or DROP) hoặc DCL (GRANT or REVOKE).

– Thoát khỏi công cụ người dùng (SQL*Plus, SQL Developer …)

– Nếu client session thất bại(fail).

– Nếu hệ thống xảy ra hỏng hóc.

Trang 9

• LGWR đẩy dữ liệu từ log buffer vào ổ đĩa (disk)

• DBWn không làm bất cứ công việc gì

• LGWR báo hiệu transaction hoàn thành

• Tất cả những session khác sẽ không phải vào undo blocks nữa

Trang 10

• Oracle giữ một hình ảnh (image) dữ liệu vốn có trước khi transaction bắt đầu

• Rollback sẽ hủy bỏ tất cả những thay đổi bằng cách restore lại dữ liệu

• Các session khác sẽ không nhận ra bất cứ sự thay đổi gì trên dữ liệu

Trang 11

• Kiểm soát hiệu quả của lệnh ROLLBACK

• Đảo ngược tất cả những thay đổi sau một thời điểm nào đó

• Cú pháp:

SAVEPOINT savepoint;

Trang 12

SAVEPOINT

Trang 13

Monitor and Resolve Locking Conflicts

Trang 14

Shared và Exclusive Locks

– Ngăn chặn việc chia sẻ dữ liệu.

– Lock được nắm giữ cho đến khi transaction kết thúc.

– Cho phép tài nguyên liên quan được chia sẻ.

– Ngăn chặn session khác yêu cầu một exclusive lock trên table.

Trang 15

Shared and Exclusive Locks

Session 1 Session 2

acquire exclusive lock on row empid=25

and shared lock on table emp

Update Emp set salary=100 where empid=25;

Trang 16

Shared and Exclusive Locks

acquire exclusive lock on table Emp

and release it when DDL statement ends

ALTER TABLE emp DROP COLUMN address

acquire exclusive lock on row empid=25 and shared lock on table emp

Update Emp set salary=100 where empid=25; 1 row updated

cannot drop column because

shared lock on table emp

ALTER TABLE emp DROP COLUMN firstname

Commit;

Trang 18

Tranh chấp Lock (Lock Contention)

• Lock contention: hai hay nhiều session muốn có exclusive lock trên cùng row hay object

• Oracle database cung cấp tiện ích cho việc phát hiện tranh chấp lock

• Một trường hợp đặc biệt trong tranh chấp lock là deadlock

Trang 19

Detecting and Resolving Lock Contention

To terminate a session, either use Database Control, or the ALTER SYSTEM KILL SESSION command.

Trang 21

Deadlocks

Trang 22

• Nếu deadlock xảy ra, cả hai session sẽ dừng lại một chút.

• Một session nhận biết deadlock sẽ rollback câu lệnh gây nên deadlock

• Giải phóng tài nguyên cho session khác

Trang 23

Overview of Undo

Undo data is the information needed to reverse the effects of DML statements

It is often referred to as rollback data

• The preupdate version of the data is written out to an undo segment

• An image of the data before the transaction occurred is constructed from the undo segments

Trang 24

Transactions and Undo Data

• When a transaction starts, Oracle will assign it to one (and only one) undo

segment

• All the undo data must be retained until a transaction commits

• Active undo can never be overwritten

• Expired undo can be overwritten

• Unexpired undo can be overwritten, but only if there is a shortage of undo space

Ngày đăng: 29/08/2017, 10:16

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm