www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 111
Chương 10. CẤU TRÚC LƯU TRỮ
10.1.CÁC LOI SEGMENTS
Segments là các vùng không gian của các objects (đối tượng) trong database. Dưới đây, ta
sẽ xem xét một số loại segments cụ thể.
10.1.1.
Table
Table (bảng), là nơi lưu giữ dữ liệu trong database. Dữ liệu trong một table được lưu giữ
không theo một thứ tự bắt buộc. Các dữ liệu trong một table thuộc loại nonpartitioned
(không phân khu) sẽ phải lưu giữ trong cùng một tablespace.Hình vẽ 37. Các loại segments
10.1.2.
Table partition
Có thể có một số table trong database có số lượng truy cập lớn và đồng thời. Khi đó, dữ liệu
trong table đó sẽ được lưu thành nhiều partition (phân khu), mỗi partition có thể nằm trên
các tablespace khác nhau. Oracle server hỗ trợ việc phân chia này bằng các giá trị khoá. Khi
một table được phân khu, mỗi partition đó được xem như một segment.
10.1.3.
Cluster
Các dòng dữ liệu trong một cluster được lưu trữ theo các giá trị của trường khoá (key
column). Một cluster có thể chứa một hay nhiều tables và nó được xem là một kiểu đoạn dữ
liệu (type of data segment). Các tables trong một cluster thuộc về cùng một đoạn và có
chung các tính chất lưu trữ.
10.1.8.
Temporary Segment
Khi một user thực hiện các lênh như CREATE INDEX, SELECT DISTINCT, và SELECT
GROUP BY, Oracle sẽ cố gắng thực hiện công việc sắp xếp ngay trong bộ nhớ. Khi công việc
sắp xếp cần đến nhiều không gian hơn, các kết quả này sẽ được ghi trực tiếp lên đĩa.
Temporary segments sẽ được dùng đến trong trường hợp này.10.1.9.
LOB Segment
Khi một hay nhiều cột trong table lưu giữ các đối tượng lớn (large objects - LOBs) như các
văn bản tài liệu, hình ảnh, hay videos. Các cột chứa dữ liệu lớn này sẽ được Oracle server
lưu giữ trong các segments riêng được biết đến như là LOB segments. Table sẽ chỉ lưu giữ
các giá trị dùng để định vị, xác định nơi lưu giữ các dữ liệu LOB tương ứng. www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 113
10.1.10.
LOB Index
Một LOB index segment được tạo ngầm định mỗi khi LOB segment được tạo lập. Các tính
chất lưu giữ của LOB index có thể được quy định bởi quản trị viên database. Mục đích của
việc sử dụng LOB index segment là cho phép tìm kiếm các giá trị cụ thể trong cột dữ liệu loại
LOB.
Hình vẽ 39. Các loại segments (tiếp theo)
10.1.11.
Nested Table
sau:
Header block, tương ứng với block đầu tiên của file
Phần còn lại của data file là các phần còn trốngHình vẽ 40. Sử dụng và giải phóng các extents
Mỗi khi segments được tạo lập, nó sẽ được cấp phát một vùng không thích hợp từ những
extents còn trống trong tablespace. Segment sẽ cố gắng sử dụng nhiều nhất các vùng không
gian liên tiếp nhau. Sau khi cấp phát, extent đó sẽ được xem là
used extent
(extent đã được
sử dụng). Khi các segments giải phóng vùng không gian, các extents tương ứng với nó sẽ
được giải phóng và đưa vào vùng free extents (extents rỗi) của tablespace. Với việc cấp phát
và giải phóng các extents có thể gây nên hiện tượng phân đoạn vùng dữ liệu trong các data
files của tablespace.10.2.3.
Kết hợp các vùng không gian trống
Ta có thể thực hiện việc kết hợp các vùng không gian trống liên tiếp nhau mỗi khi các
extents trong cùng một tablespace được giải phóng. Điều này rất dễ xảy ra, ví dụ: khi có hai
table bị huỷ (dropped). Các extents trống này có thể được kết hợp lại thành một extent
trong các điều kiện:
Khi tiến trình SMON khởi tạo một
space transaction
để kết hợp các extents trống.
Khi Oracle server cần phải cấp phát vùng trống mà nó cần tới lượng không gian trống
lớn hơn không gian của một extent.
2. Chuyển tới nút Expand Tablespaces.
3. Chọn tablespace tương ứng.
4.
Chọn mục Tools—>Coalesce Free Extents.