Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
299,93 KB
Nội dung
CẤU TRÚC LƯU TRỮ 1.1.CÁC LOẠI SEGMENTS Segments vùng không gian objects (đối tượng) database Dưới đây, ta xem xét số loại segments cụ thể 1.1.1 Table Table (bảng), nơi lưu giữ liệu database Dữ liệu table lưu giữ không theo thứ tự bắt buộc Các liệu table thuộc loại nonpartitioned (không phân khu) phải lưu giữ tablespace Hình vẽ Các loại segments 1.1.2 Table partition Có thể có số table database có số lượng truy cập lớn đồng thời Khi đó, liệu table lưu thành nhiều partition (phân khu), partition nằm tablespace khác Oracle server hỗ trợ việc phân chia giá trị khoá Khi table phân khu, partition xem segment 1.1.3 Cluster Các dòng liệu cluster lưu trữ theo giá trị trường khoá (key column) Một cluster chứa hay nhiều tables xem kiểu đoạn liệu (type of data segment) Các tables cluster thuộc đoạn có chung tính chất lưu trữ 1.1.4 Index Tất đầu mục (entries) ứng với index cụ thể lưu trữ index segment Một table có tới indexes, có nhiêu index segments sử dụng Mục đích segment tìm kiếm định vị dịng liệu table dựa khoá 1.1.5 Index-Organized Table Trong index-organized table, liệu index lưu trữ dựa vào giá trị khố Một index-organized table khơng cần thiết đến table dùng để tìm kiếm (lookup), liệu trả trực tiếp từ index (index tree) Hình vẽ Các loại segments (tiếp theo) 1.1.6 Index Partition Một index partitioned (phân khu) trải rộng nhiều tablespaces khác Khi đó, partition index tương ứng với segment (đoạn) không phép nằm dài nhiều tablespaces Mục đích việc sử dụng index partition để giảm thiểu tranh chấp vào I/O 1.1.7 Rollback Segment Rollback segment sử dụng transaction (giao dịch) để tạo thay đổi database Trước thay đổi liệu hay index blocks, giá trị cũ lưu giữ vào rollback segment Việc làm cho phép user phục hồi lại thay đổi 1.1.8 Temporary Segment Khi user thực lênh CREATE INDEX, SELECT DISTINCT, SELECT GROUP BY, Oracle cố gắng thực công việc xếp nhớ Khi công việc xếp cần đến nhiều không gian hơn, kết ghi trực tiếp lên đĩa Temporary segments dùng đến trường hợp 1.1.9 LOB Segment Khi hay nhiều cột table lưu giữ đối tượng lớn (large objects - LOBs) văn tài liệu, hình ảnh, hay videos Các cột chứa liệu lớn Oracle server lưu giữ segments riêng biết đến LOB segments Table lưu giữ giá trị dùng để định vị, xác định nơi lưu giữ liệu LOB tương ứng 1.1.10 LOB Index Một LOB index segment tạo ngầm định LOB segment tạo lập Các tính chất lưu giữ LOB index quy định quản trị viên database Mục đích việc sử dụng LOB index segment cho phép tìm kiếm giá trị cụ thể cột liệu loại LOB Hình vẽ Các loại segments (tiếp theo) 1.1.11 Nested Table Cột liệu table tạo lập từ user-defined table (bảng người dùng định nghĩa) Trong trường hợp này, bảng liệu tương ứng với phần tử thuộc cột liệu (inner table), biết đến nested table lưu giữ segment riêng biệt 1.1.12 Bootstrap Segment Bootstrap segment, biết đến cache segment, tạo file script sql.bsq sau database tạo Segment giúp cho việc khởi tạo data dictionary cache database mở instance Dữ liệu bootstrap segment xem hay sửa chữa, cập nhật Quản trị database không cần thiết phải quan tâm tới segment 1.2.QUẢN LÝ EXTENTS 1.2.1 Cấp phát thu hồi extents Việc cấp phát extent xảy segment tạo mới, mở rộng hay bị thay đổi (altered) Và bị thu hồi segment bị huỷ, bị thay đổi, bị cắt bớt (truncated) Riêng rollback segments, extent bị tự động thu hồi 1.2.2 Sử dụng giải phóng extent Khi tablespace tạo, data files thuộc tablespace chứa phần thông tin sau: Header block, tương ứng với block file Phần lại data file phần cịn trống Hình vẽ Sử dụng giải phóng extents Mỗi segments tạo lập, cấp phát vùng khơng thích hợp từ extents trống tablespace Segment cố gắng sử dụng nhiều vùng không gian liên tiếp Sau cấp phát, extent xem used extent (extent sử dụng) Khi segments giải phóng vùng khơng gian, extents tương ứng với giải phóng đưa vào vùng free extents (extents rỗi) tablespace Với việc cấp phát giải phóng extents gây nên tượng phân đoạn vùng liệu data files tablespace 1.2.3 Kết hợp vùng không gian trống Ta thực việc kết hợp vùng không gian trống liên tiếp extents tablespace giải phóng Điều dễ xảy ra, ví dụ: có hai table bị huỷ (dropped) Các extents trống kết hợp lại thành extent điều kiện: Khi tiến trình SMON khởi tạo space transaction để kết hợp extents trống Khi Oracle server cần phải cấp phát vùng trống mà cần tới lượng không gian trống lớn không gian extent Kết hợp theo yêu cầu quản trị viên database Hình vẽ Kết hợp vùng khơng gian trống Lưu ý Tiến trình SMON kết hợp extent tablespaces mà PCTINCREASE lớn Trong storage clause mặc định tablespaces, đặt PCTINCREASE=1 user objects tự động kết hợp vùng trống giải phóng Yêu cầu kết hợp vùng trống View DBA_FREE_SPACE_COALESCED dùng để xem tablespace có extents rỗng kết hợp với Sử dụng câu lênh truy vấn sau để lấy thông tin: SVRMGR> SELECT tablespace_name, total_extents, 2> percent_extents_coalesced 3> FROM dba_free_space_coalesced 4> WHERE percent_extents_coalesced 100; TABLESPACE_NAME TOTAL_EXTE PERCENT_EX - -RBS 33 DATA01 22 rows selected Thực kết hợp vùng không gian trống tablespace lệnh đây: ALTER TABLESPACE tablespace COALESCE; Trong OEM, ta thực theo bước sau Sử dụng công cụ Oracle Tablespace Manager Chuyển tới nút Expand Tablespaces Chọn tablespace tương ứng Chọn mục Tools—>Coalesce Free Extents 1.3.BLOCK DỮ LIỆU 1.3.1 Cấu trúc block liệu Hình vẽ Cấu trúc Block liệu Các Blocks liệu Oracle cấu thành từ phần sau: Block header (vùng đầu): Header chứa địa block liệu, thông tin table directory, row directory, transaction slots Thông tin Block headers tăng dần theo hướng từ xuống Data space (vùng liệu): Các dòng liệu nạp vào block theo hướng từ lên Free space (vùng trống): Vùng trống block vùng nằm vùng header vùng khơng gian lưu trữ dịng liệu Ban đầu, vùng không gian trống liên tiếp với nhau.Tuy nhiên sau thời gian sử dụng, vùng không gian trống block bị phân đoạn việc xố cập nhật, thay đổi dịng liệu Để giải vấn đề này, Oracle server cho phép thực kết hợp phân đoạn liệu 1.3.2 Các tham số sử dụng không gian block Các tham số sử dụng không gian block dùng để điều khiển việc sử dụng vùng không gian liệu index segments Các tham số điều khiển song song Hình vẽ Các tham số sử dụng không gian block Các tham số INITRANS MAXTRANS số lượng khởi tạo, số lượng lớn transaction slots, tạo index block hay data block Các transaction slots sử dụng để lưu giữ thông tin transactions làm thay đổi block thời điểm Mỗi transaction sử dụng transaction slot INITRANS gán giá trị mặc định cho data segment, cho index segment MAXTRANS gán giá trị mặc định 255, dùng để tạo ngưỡng transactions đồng thời có làm thay đổi block liệu hay index block Khi thiết lập giá trị này, vùng không gian cho transaction slots đảm bảo để thực transaction cách hiệu Tham số điều khiển vùng lưu trữ liệu PCTFREE data segment lượng phần trăm vùng trống data block để dành cho việc tăng lên liệu việc cập nhật dòng liệu block Theo mặc đinh, PCTFREE 10 phần trăm PCTUSED data segment lượng phần trăm tối thiểu vùng không gian sử dụng, theo Oracle Server lưu giữ block liệu table Một block nạp lại vào free list (danh sách trống) PCTUSED giảm xuống Free list segment danh sách blocks sẵn dùng cho việc cấp phát có dịng liệu insert Theo mặc định free list tạo tương ứng với segment Tham số FREELISTS xác định số lượng free list Mặc định, PCTUSED 40 phần trăm PCTFREE PCTUSED tính tốn theo phần trăm vùng không gian liệu, tức vùng khơng gian Block cịn lại trừ vùng không gian header 1.3.3 Sử dụng không gian block Để cụ thể, ta theo dõi bước việc sử dụng vùng không gian block table có PCTFREE=20 PCTUSED=40: Phase 1: Các dòng liệu nạp vào block đủ 80% (100PCTFREE) Lúc này, ta insert thêm liệu vào Block Hình vẽ Sử dụng vùng không gian block Phase 2: 20% khơng gian cịn lại sử dụng cho việc tăng kích thước dòng liệu việc cập nhật lại dịng liệu Phase 3: Khi xố dịng liệu block, vùng khơng gian trống block tăng lên Tuy nhiên, lúc ta chưa thể insert liệu vào block Phase 4: Khi vùng trống block đạt tới mức PCTUSED, ta lại insert liệu vào Block Ta lại bước 01 1.3.4 Phân loại mức độ phân đoạn loại segment Tablespace Phân loại sử dụng Mức độ phân đoạn SYSTEM Data dictionary Không xảy TOOLS Applications Rất DATAn Data segments Ít INDEXn Index segments Ít RBSn Rollback segments Nhiều TEMPn Temporary segments Rất nhiều* Ký hiệu * có nghĩa với tablespaces thuộc loại PERMANENT Hiện tượng phân đoạn liệu xảy với mức độ khác loại segments khác Oracle khuyến cáo nên lưu trữ liệu nhiều tablespaces khác để giảm thiểu việc sử dụng lãng phí vùng không gian Phân loại Objects phân đoạn Các loại objects khác liệt kê theo mức độ tăng dần phân đoạn: Các data dictionary objects, ngoại trừ audit table (bảng kiểm tra), không bị dropped hay truncated Vì chúng khơng bị phân đoạn tablespace Vùng không gian sử dụng cho việc lưu trữ ứng dụng cấp phát thu hồi trình tái cấu trúc lại nhớ Vì thế, tables lưu trữ có mức độ phân đoạn thấp Data segment index segements sử dụng cho việc lưu trữ liệu người dùng thuộc ứng dụng Các đối tượng thường có mức độ phân đoạn cao Do rollback segments phân bổ lại extents cách tự động, chúng dễ gây tượng phân đoạn liệu hệ thống Temporary segments permanent tablespaces thường xuyên bị xảy tượng phân đoạn 1.4.THÔNG TIN VỀ CẤU TRÚC LƯU TRỮ 1.4.1 Các view lưu trữ thông tin Thông tin tablespaces, data files, segments, extents (thơng tin phần sử dụng lần phần cịn trống) lấy từ từ điển liệu Thơng tin tablespace lưu DBA_TABLESPACES Thông tin file liệu database lưu DBA_DATA_FILES Thông tin vùng trống data file, vùng trống extent lưu DBA_FREE_SPACE View DBA_SEGMENTS lưu giữ thông tin segment Tương tự vậy, DBA_EXTENTS lưu giữ thông tin extent Hình vẽ Các views chứa thơng tin cấu trúc lưu trữ 1.4.2 Xem thông tin segments Thơng tin lưu DBA_SEGMENTS Hình vẽ 10 Phân loại thơng tin có DBA_SEGMENTS Ta lấy thơng tin segments theo loại sau: Thông tin tổng hợp: User sở hữu, tên segment, loại segment, tên tablespace Thơng tin kích cỡ: extents, blocks Thơng tin lưu trữ: INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENT, MAX_EXTENT, PCT_INCREASE Ví dụ: Xem số lượng extents blocks cấp phát cho segment user SCOTT sở hữu SVRMGR> SELECT segment_name,tablespace_name,extents,blocks 2> FROM dba_segments 3> WHERE owner='SCOTT'; SEGMENT_NAME -EMP DEPT BONUS SALGRADE DUMMY rows selected TABLESPACE_NAME DATA01 DATA01 DATA01 DATA01 DATA01 1.4.3 Thông tin extents Thông tin lưu DBA_EXTENTS EXTENTS 1 1 BLOCKS -55 5 5 Hình vẽ 11 Phân loại thơng tin có DBA_EXTENTS Ta lấy thơng tin extents theo loại sau: Thông tin nhận dạng: User sở hữu, tên segment, mã hiệu extent Thơng tin kích cỡ nơi đặt: TABLESPACE_NAME, RELATIVE_FNO, FILE_ID, BLOCK_ID, BLOCKS Ví dụ: Xem thơng tin chi tiết extents có segment cho trước SVRMGR> SELECT extent_id,file_id,block_id,blocks 2> FROM dba_extents 3> WHERE owner='SCOTT' 4> AND segment_name='EMP'; EXTENT_ID FILE_ID 4 4 4 rows selected BLOCK_ID -2 27 32 42 57 BLOCKS -5 10 15 20 1.4.4 Thông tin vùng trống Thông tin vùng trống lưu DBA_FREE_SPACE Hình vẽ 12 Phân loại thơng tin có DBA_FREE_SPACE View chứa thơng tin Ví dụ: SVRMGR> SELECT tablespace_name, count(*), 2> max(blocks), sum(blocks) 3> FROM dba_free_space 4> GROUP BY tablespace_name; TABLESPACE_NAME COUNT(*) MAX(BLOCKS SUM(BLOCKS - -DATA01 1284 1533 RBS 2329 2419 SORT 1023 1023 SYSTEM 5626 5626 TEMP 2431 2431 rows selected ... Extents 1.3.BLOCK DỮ LIỆU 1.3.1 Cấu trúc block liệu Hình vẽ Cấu trúc Block liệu Các Blocks liệu Oracle cấu thành từ phần sau: Block header (vùng đầu): Header chứa địa block liệu, thông tin table... dụng cho việc lưu trữ ứng dụng cấp phát thu hồi trình tái cấu trúc lại nhớ Vì thế, tables lưu trữ có mức độ phân đoạn thấp Data segment index segements sử dụng cho việc lưu trữ liệu người dùng... dễ gây tượng phân đoạn liệu hệ thống Temporary segments permanent tablespaces thường xuyên bị xảy tượng phân đoạn 1.4.THÔNG TIN VỀ CẤU TRÚC LƯU TRỮ 1.4.1 Các view lưu trữ thông tin Thông tin