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ữ.

 

pptx 26 trang yennguyen 2000
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

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:

  • pptxbai_giang_cong_nghe_oracle_bai_8_cau_truc_luu_tru_nguyen_vie.pptx