11.5.CÁC V;N Đ7 LIÊN QUAN TI ROLLBACK SEGMENT 11.5.1 Thiếu không gian cho các transactions

Một phần của tài liệu ORACLE_kiến trúc và quản trị pptx (Trang 127 - 130)

11.5.1. Thiếu không gian cho các transactions

Nguyên nhân

Do một transaction không được sử dụng nhiều rollback segments nên có thể xảy ra tình trạng thiếu vùng khơng gian cho các rollback segment và gây ra lỗi (ORA-01562). Nguyên nhân có thể là một trong các trường hợp sau:

Khơng có đủ khơng gian trong tablespace (ORA-01560)

Số lương các extents trong rollback segment đã đạt tới giá trị MAXEXTENTS và không thể bổ sung thêm các extent vào rollback segment (ORA-01628)

Giải pháp

Với lỗi ORA-01560:

Mở rộng thêm các data files trong tablespace

Đặt chế độ cho các data files là AUTOEXTEND Bổ sung mới data file vào tablespace

Với lỗi ORA-01628:

Tăng tham số MAXEXTENTS của rollback segment

Huỷ và tạo lại rollback segment với kích thước của extent lớn hơn

11.5.2. Lỗi đọc dữ liệu không đồng nhất Nguyên nhân

Oracle server cố gắng đảm bảo các câu lệnh sẽ chỉ xử lý trên các dữ liệu đã được commit. Vì thế, các dữ liệu chưa commit sẽ không được sử dụng. Trong trường hợp Oracle server không tạo được các bản lưu giá trị cũ các dữ liệu (read-consistent image of data), user sẽ nhận được lỗi ORA-01555 snapshot too old. Lỗi này xảy ra khi transaction thay đổi các dữ liệu đã được commit và:

Transaction slot có trong phần rollback header đang được sử dụng Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

Giá trị ban đầu (before-image) trong rollback segment được ghi đè lên bởi một transaction khác

Giải pháp

Tăng chỉ số MINEXTENTS

Mở rộng kích thước extent Tăng giá trị OPTIMAL

11.5.3. Chặn session

Hình vẽ 57. Chặn session Vấn đề

Khi một extent trong rollback segment được ghi đầy, Oracle server sẽ tiếp tục sử dụng extent kế tiếp theo cơ chế xoay vòng. Trong trường hợp extent kế tiếp vẫn đang trong tình trạng active, transaction sẽ khơng sử dụng được nó. Mặt khác, nó cũng khơng thể bỏ qua extent kế tiếp để chuyển tới extent sau nữa nếu nó rỗi. Khi đó, rollback segment sẽ được bổ sung thêm các extent. Việc làm này làm cho rollback segment ngày một mở rộng và quản trị viên cần phải can thiệp để hạn chế việc mở rộng này.

Giải pháp

Quản trị viên database cần thực hiện kiểm tra thông tin của các transaction đang được thực hiện thông qua việc lấy thông tin từ các view V$ROLLSTAT, V$TRANSACTION, V$SESSION để phát hiện các transaction đang bị cản trở, từ đó thực hiện việc điều chỉnh cho phù hợp. Cơng việc kiểm tra và giám sát này được thực hiện bằng tay bởi người quản trị database.

Ví dụ: Xem thơng tin về các transactions đang được thực hiện

SVRMGR> SELECT s.sid, s.serial#, t.start_time, t.xidusn, s.username

2> FROM v$session s, v$transaction t, v$rollstat r 3> WHERE s.saddr = t.ses_addr

4> AND t.xidusn = r.usn

5> AND ((r.curext = t.start_uext-1) OR

6> ((r.curext = r.extents-1) AND t.start_uext=0));

SID SERIAL# START_TIME XIDUSN USERNAME

--- ------- ------------- ------ --------

9 27 10/30/97 21:10:41 2 SYSTEM

1 row selected.

Một phần của tài liệu ORACLE_kiến trúc và quản trị pptx (Trang 127 - 130)