www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 136
Giá trị ban đầu (before-image) trong rollback segment được ghi đè lên bởi một
transaction khácGiả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.
của việc sắp xếp đó cần phải được tạm thời lưu lên đĩa. Vùng đĩa lưu trữ các dữ liệu trung
gian này chính là temporary segments.
Temporary segments trong tablespace được Oracle server tạo lập với mục đích sử dụng làm
vùng nhớ trung gian hỗ trợ thao tác sắp xếp.
Hình vẽ 58. Temporary segment
www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 139
12.1.1.
Phân loại temporary segments
Các temporary segments có thể được tạo trên một permanent tablespace hoặc trên một
temporary tablespace. User có thể sử dụng một trong các kiểu tablespaces này để sắp xếp.
Hình vẽ 59. Phân loại temporary segment
Temporary Tablespace
Một temporary tablespace được sử cho các temporary segments tương ứng và không chứa
bất kỳ segment nào có kiểu khác. Ta có thể tạo các temporary tablespace theo câu lệnh SQL
sau:
CREATE TABLESPACE tablespace_name TEMPORARY
12.1.2.
Sử dụng các Sort Segments
Sort segment được tạo bởi câu lệnh sắp xếp đầu tiên sử dụng tới temporary tablespace cho
việc sắp xếp. Và sort segment chỉ bị hủy khi tắt (shutdown) database. Việc này làm giảm bớt
số lần cấp phát và thu hồi các sort segments phục vụ cho công việc sắp xếp, làm tăng năng
suất hệ thống. Oracle không hạn chế số lượng các extents cấp phát cho mỗi sort segment
thuộc một temporary tablespace.
12.1.3.
Sort Extent Pool
Oracle server lưu lại chi tiết sort segment trong vùng Sort Extent Pool của vùng nhớ SGA,
mỗi câu lệnh cần tới các vùng trống để thực hiện sắp xếp có thể tìm các extent rỗi trong
vùng nhớ này.
12.2.CP PHÁT KHÔNG GIAN CHO TEMPORARY SEGMENT
Temporary tablespaces được sử dụng để tăng hiệu quả sắp xếp dữ liệu. Kích thước của các
extents trong temporary segment được xác định bởi DEFAULT STORAGE clause của
tablespace tương ứng.
Do lượng dữ liệu ghi lên temporary segment bằng phần nguyên lần giá trị
SORT_AREA_SIZE. Do vậy, ta nên đặt INITIAL = NEXT = (n*SORT_AREA_SIZE)+
DB_BLOCK_SIZE
Giá trị PCTINCREASE=0, để đảm bảo các extents có cùng kích thước.
FREE_BLOCKS
Số lượng blocks còn trống
MAX_SORT_SIZE
Kích thước tối đa của vùng dữ liệu sắp xếp
MAX_SORT_BLOCKS
Số lượng blocks tối đa dùng để sắp xếp dữ liệu
Ví dụ:
SVRMGR> SELECT tablespace_name, extent_size,
2> total_extents, max_sort_blocks
3> FROM v$sort_segment;
TABLESPACE_NAME EXTENT_SIZ TOTAL_EXTE MAX_SORT_B
TEMP 128 1 128
1 row selected.
www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 142
MAX_SORT_SIZE và MAX_SORT_BLOCKS là số lượng các extents và các blocks sử dụng bởi
phép sắp xếp lớn nhất. Thông tin này là hữu ích trong việc điều chỉnh kích thước của
temporary tablespace
V$SORT_USAGE: cho biết thông tin về các sắp xếp hiện có của instance, ta kết hợp với
V$SESSION để biết thêm các thông tin:
Ví dụ:
SVRMGR> SELECT s.username, u."USER", u.tablespace,
2> u.contents, u.extents, u.blocks
3> FROM v$session s,v$sort_usage u
4> WHERE s.saddr=u.session_addr;
USERNAME USER TABLESPACE CONTENTS EXTENTS BLOCKS