Giáo trình Công nghệ Oracle - Bài 8: Cấu trúc lưu trữ - Nguyễn Việt Hưng
Các tham số INITRANS và MAXTRANS chỉ ra số lượng khởi tạo, số lượng lớn nhất các transaction slots. Transaction slots được sử dụng để lưu giữ các thông tin về các transactions làm thay đổi các block tại cùng một thời điểm.
PCTFREE:chỉ lượng % vùng trống trong mỗi data block để dành cho việc tăng lên của dữ liệu do cập nhật các dòng dữ liệu trong block. Mặc định, PCTFREE là 10%.
PCTUSED: PCTUSED trong một data segment chỉ lượng phần trăm tối thiểu của vùng không gian sử dụng, theo đó Oracle Server lưu giữ các block dữ liệu của table. Một block sẽ được nạp lại vào free list (danh sách trống) mỗi khi PCTUSED giảm xuống
26 trang |
Chia sẻ: huongthu9 | Lượt xem: 503 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Công nghệ Oracle - Bài 8: Cấu trúc lưu trữ - Nguyễn Việt Hưng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CẤU TRÚC LƯU TRỮ Biên soạn: Nguyễn Việt HưngBộ môn: Khoa Học Máy Tính - Khoa Công Nghệ Thông TinTrường Đại Học Giao Thông Vân TảiWebsite: https://sites.google.com/site/viethung92gtvt/oracle-dbaEmail : viethung92gtvt@gmail.com1. Mục đíchMục đíchSau khi hoàn thành bài học này, bạn sẽ có thể: Nắm được cấu trúc lưu trữ logic của CSDL.Liệt kê các dạng segment và cách sử dụng.Hiểu về các khái niệm dùng để kiểm soát việc sử dụng không gian trong block.Lấy thông tin về cấu trúc lưu trữ.2. Nội dung bài họcI. CÁC LOẠI SEGMENTSII. QUẢN LÝ EXTENTSIII. QUẢN LÝ DATA BLOCKSV. BÀI TẬPIV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮCấu trúc quan hệ và lưu trữ DatabasePRODDISK1/SYS1.dbfDISK2/USER1.dbfDISK3/USER2.dbfDISK1/UNDO1.dbfDISK1/TEMP.dbfD.D.TableDataSegD.D.IndexIndexSegRBSegS_DEPTDataSegS_EMPDataSegTempTempSeg1 2 1 2 1 2 1 1 2 2 1 FREE 1 1 2 2 1EXTENTSS_DEPT(cont'd)DataSegS_EMPFIRST_NAMEIndexIndexSegOracle DATA BLOCKSRBS1(cont'd)RBSegRBS2(cont'd)RBSegRBS1RBSegRBS2RBSegSEGMENTS SYSTEMUSER_DATARBSTEMPTABLESPACESDATA FILESI. CÁC LOẠI SEGMENTS1. User Segments Table segmentCluster segmentTable partition segmentIndex segmentIndex-organizedtable segmentIndex partition segmentI. CÁC LOẠI SEGMENTS1. User Segments LOBsegmentNested table segmentLOB IndexsegmentI. CÁC LOẠI SEGMENTSTạo user segmentI. CÁC LOẠI SEGMENTSTạo user segmentI. CÁC LOẠI SEGMENTS2. Temporary Segments Temporarysegment 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.I. CÁC LOẠI SEGMENTS3. Undo Segments Undo segment được sử dụng trong transaction (giao dịch) để tạo các thay đổi trong database. Trước khi thay đổi các dữ liệu hay các index blocks, các giá trị cũ sẽ được lưu giữ vào undo segments. Việc làm này cho phép user có thể phục hồi lại các thay đổi.UndosegmentII. QUẢN LÝ EXTENTSExtent là đơn vị lưu trữ logic bao gồm các data block. Một segment bao gồm một hoặc nhiều extent.Một extent được cấp phát khi segment được:Tạo ra Mở rộng Thay đổi Một extent bị thu hồi khi segment bị:Xóa bỏThay đổi Cắt bớt II. QUẢN LÝ EXTENTSMặc định một initial extent được cấp phát cho một segment khi nó được tạo ra.II. QUẢN LÝ EXTENTSKhi initial_extent sử dụng hết, database tự động cấp phát thêm next_extents cho segmentII. QUẢN LÝ EXTENTSExtent rỗi và đã sử dụng File dữ liệuFree extentUsed extentFile headerIII. QUẢN LÝ DATA BLOCKSLà đơn vị lưu trữ nhỏ nhất của Oracle database.Mỗi data block có kích thước bằng một số byte. Mặc định là 8 KB. Tham số DB_BLOCK_SIZE quy định kích thước này. Cấu trúc database blockHeaderFree spaceDataSử dụng không gian trong Block INITRANSMAXTRANSPCTFREE:chỉ lượng % vùng trống trong mỗi data block để dành cho việc tăng lên của dữ liệu do cập nhật các dòng dữ liệu trong block. Mặc định, PCTFREE là 10%.PCTUSED: PCTUSED trong một data segment chỉ lượng phần trăm tối thiểu của vùng không gian sử dụng, theo đó Oracle Server lưu giữ các block dữ liệu của table. Một block sẽ được nạp lại vào free list (danh sách trống) mỗi khi PCTUSED giảm xuốngCác tham số INITRANS và MAXTRANS chỉ ra số lượng khởi tạo, số lượng lớn nhất các transaction slots. Transaction slots được sử dụng để lưu giữ các thông tin về các transactions làm thay đổi các block tại cùng một thời điểm.Sử dụng không gian trong Block 80%80%40%Inserts1234InsertsPCTFREE=20 PCTUSED=40Insert (on freelist)Inserts(off freelist)IV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮIV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮDBA_TABLESPACESNAMETYPECOMMENTSTABLESPACE_NAMEVARCHAR2(30)Tablespace nameINITIAL_EXTENTNUMBERDefault initial extent sizeNEXT_EXTENTNUMBERDefault incremental extent sizeMIN_EXTENTSNUMBERDefault minimum number of extentsMAX_EXTENTSNUMBERDefault maximum number of extentsSTATUSVARCHAR2(9)Tablespace status: "ONLINE", "OFFLINE", or "READ ONLY"CONTENTSVARCHAR2(9)Tablespace contents: "PERMANENT", or "TEMPORARY"IV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮNAMETYPECOMMENTSFILE_NAMEVARCHAR2(513)Name of the database data fileFILE_IDNUMBERID of the database data fileTABLESPACE_NAMEVARCHAR2(30)Name of the tablespace to which the file belongsBYTESNUMBERSize of the file in bytesAUTOEXTENSIBLEVARCHAR2(3)Autoextensible indicator: "YES" or "NO"DBA_DATA_FILESIV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮNAMETYPECOMMENTSTABLESPACE_NAMEVARCHAR2(30)Name of the tablespace containing the extentFILE_IDNUMBERID number of the file containing the extentBLOCK_IDNUMBERStarting block number of the extentBYTESNUMBERSize of the extent in bytesBLOCKSNUMBERSize of the extent in ORACLE blocksDBA_FREE_SPACEIV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮDBA_SEGMENTSNAMETYPECOMMENTSOWNERVARCHAR2(30)Username of the segment ownerSEGMENT_NAMEVARCHAR2(81)Name, if any, of the segmentSEGMENT_TYPEVARCHAR2(18)Type of segment: "TABLE", "CLUSTER", "INDEX", "ROLLBACK",...TABLESPACE_NAMEVARCHAR2(30)Name of the tablespace containing the segmentBYTESNUMBERSize, in bytes, of the segmentBLOCKSNUMBERSize, in Oracle blocks, of the segmentEXTENTSNUMBERNumber of extents allocated to the segmentIV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮDBA_EXTENTSNAMETYPECOMMENTSOWNERVARCHAR2(30)Username of the segment ownerSEGMENT_NAMEVARCHAR2(81)Name, if any, of the segmentSEGMENT_TYPEVARCHAR2(18)Type of segment: "TABLE", "CLUSTER", "INDEX", "ROLLBACK",...TABLESPACE_NAMEVARCHAR2(30)Name of the tablespace containing the segmentEXTENT_IDNUMBERExtent number in the segmentFILE_IDNUMBERName of the file containing the extentBLOCK_IDNUMBERStarting block number of the extentBLOCKSNUMBERSize of the extent in ORACLE blocksIV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮVí dụ: Hiển thị thông tin về các segment được sở hữu bởi user SCOTT.SELECT segment_name, tablespace_name, blocks FROM dba_segments WHERE owner = 'SCOTT'SEGMENT_NAMETABLESPACE_NAMEBLOCKSPK_DEPTUSERS8DEPTUSERS8EMPUSERS8PK_EMPUSERS8BONUSUSERS8SALGRADEUSERS8Bài tậpHiển thị các loại segment hiện có trong database.Hiển thị tên data file lưu trữ bảng EMP trong schema SCOTT.Hiển thị dung lượng trống trong mỗi tablespace bao gồm các thông tin: tổng dung lượng trống, dung lượng free extents lớn nhất.Tạo tablespace TEST có 1 datafile dung lượng 1MB. Tạo table tblTEST(id number, name varchar2(10)) lưu trữ trong tablespace TEST. Hiển thị các yêu cầu sau:Dung lượng trống của tablespace Test.Thông tin về extents được cấp phát cho table tblTEST.Hiển thị các segment trong tablespace TEST.
Các file đính kèm theo tài liệu này:
- giao_trinh_cong_nghe_oracle_bai_8_cau_truc_luu_tru_nguyen_vi.pptx