Bài giảng Công nghệ Oracle - Bài 8: Cấu trúc lưu trữ - Nguyễn Việt Hưng
1. Mục đích
Sau 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ữ.
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ Oracle - Bài 8: Cấu trúc lưu trữ - Nguyễn Việt Hưng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Công nghệ Oracle - Bài 8: Cấu trúc lưu trữ - Nguyễn Việt Hưng
CẤU TRÚC LƯU TRỮ Biên soạn: Nguyễn Việt Hưng Bộ môn: Khoa Học Máy Tính - Khoa Công Nghệ Thông Tin Trường Đại Học Giao Thông Vân Tải Website: https://sites.google.com/site/viethung92gtvt/oracle-dba Email : viethung92gtvt@gmail.com 1. Mục đích Mục đích Sau 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ọc I. CÁC LOẠI SEGMENTS II. QUẢN LÝ EXTENTS III. QUẢN LÝ DATA BLOCKS V. BÀI TẬP IV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮ Cấu trúc quan hệ và lưu trữ Database PROD DISK1/SYS1.dbf DISK2/ USER1.dbf DISK3/ USER2.dbf DISK1/ UNDO1.dbf DISK1/ TEMP.dbf D.D.Table DataSeg D.D.Index IndexSeg RBSeg S_DEPT DataSeg S_EMP DataSeg Temp TempSeg 1 2 1 2 1 2 1 1 2 2 1 FREE 1 1 2 2 1 EXTENTS S_DEPT (cont'd) DataSeg S_EMP FIRST_NAME Index IndexSeg Oracle DATA BLOCKS RBS1 (cont'd) RBSeg RBS2 (cont'd) RBSeg RBS1 RBSeg RBS2 RBSeg SEGMENTS SYSTEM USER_DATA RBS TEMP TABLESPACES DATA FILES I. CÁC LOẠI SEGMENTS 1. User Segments Table segment Cluster segment Table partition segment Index segment Index-organized table segment Index partition segment I. CÁC LOẠI SEGMENTS 1. User Segments LOBsegment Nested table segment LOB Index segment I. CÁC LOẠI SEGMENTS Tạo user segment I. CÁC LOẠI SEGMENTS Tạo user segment I. CÁC LOẠI SEGMENTS 2 . 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 SEGMENTS 3. 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. Undosegment II. QUẢN LÝ EXTENTS Extent 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Ý EXTENTS Mặ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Ý EXTENTS Khi initial_extent sử dụng hết, database tự động cấp phát thêm next_extents cho segment II. QUẢN LÝ EXTENTS Extent rỗi và đã sử dụng File dữ liệu Free extent Used extent File header III. QUẢN LÝ DATA BLOCKS Là đơ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 block Header Free space Data Sử dụng không gian trong Block INITRANS MAXTRANS 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 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. Sử dụng không gian trong Block 80% 80% 40% Inserts 1 2 3 4 Inserts PCTFREE=20 PCTUSED=40 Insert (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_TABLESPACES NAME TYPE COMMENTS TABLESPACE_NAME VARCHAR2(30) Tablespace name INITIAL_EXTENT NUMBER Default initial extent size NEXT_EXTENT NUMBER Default incremental extent size MIN_EXTENTS NUMBER Default minimum number of extents MAX_EXTENTS NUMBER Default maximum number of extents STATUS VARCHAR2(9) Tablespace status: "ONLINE", "OFFLINE", or "READ ONLY" CONTENTS VARCHAR2(9) Tablespace contents: "PERMANENT", or "TEMPORARY" IV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮ NAME TYPE COMMENTS FILE_NAME VARCHAR2(513) Name of the database data file FILE_ID NUMBER ID of the database data file TABLESPACE_NAME VARCHAR2(30) Name of the tablespace to which the file belongs BYTES NUMBER Size of the file in bytes AUTOEXTENSIBLE VARCHAR2(3) Autoextensible indicator: "YES" or "NO" DBA_DATA_FILES IV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮ NAME TYPE COMMENTS TABLESPACE_NAME VARCHAR2(30) Name of the tablespace containing the extent FILE_ID NUMBER ID number of the file containing the extent BLOCK_ID NUMBER Starting block number of the extent BYTES NUMBER Size of the extent in bytes BLOCKS NUMBER Size of the extent in ORACLE blocks DBA_FREE_SPACE IV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮ DBA_SEGMENTS NAME TYPE COMMENTS OWNER VARCHAR2(30) Username of the segment owner SEGMENT_NAME VARCHAR2(81) Name, if any, of the segment SEGMENT_TYPE VARCHAR2(18) Type of segment: "TABLE", "CLUSTER", "INDEX", "ROLLBACK ",... TABLESPACE_NAME VARCHAR2(30) Name of the tablespace containing the segment BYTES NUMBER Size, in bytes, of the segment BLOCKS NUMBER Size, in Oracle blocks, of the segment EXTENTS NUMBER Number of extents allocated to the segment IV. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮ DBA_EXTENTS NAME TYPE COMMENTS OWNER VARCHAR2(30) Username of the segment owner SEGMENT_NAME VARCHAR2(81) Name, if any, of the segment SEGMENT_TYPE VARCHAR2(18) Type of segment: "TABLE", "CLUSTER", "INDEX", "ROLLBACK ",... TABLESPACE_NAME VARCHAR2(30) Name of the tablespace containing the segment EXTENT_ID NUMBER Extent number in the segment FILE_ID NUMBER Name of the file containing the extent BLOCK_ID NUMBER Starting block number of the extent BLOCKS NUMBER Size of the extent in ORACLE blocks IV. 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_NAME TABLESPACE_NAME BLOCKS PK_DEPT USERS 8 DEPT USERS 8 EMP USERS 8 PK_EMP USERS 8 BONUS USERS 8 SALGRADE USERS 8 Bài tập Hiể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.
File đính kèm:
- bai_giang_cong_nghe_oracle_bai_8_cau_truc_luu_tru_nguyen_vie.pptx