ORACLE 9i - Kiến trúc và quản trị
MỤC LỤC
CHƯƠNG 1. CÁC ĐIỂM MỚI TRONG ORACLE 9I . 10
CHƯƠNG 2. CÁC THÀNH PHẦN KIẾN TRÚC. 15
2.1. KIẾN TRÚC ORACLE SERVER. 15
2.1.1. Oracle Instance .15
2.1.2. Oracle database.20
2.1.3. Quản trị cơ sở dữ liệu Oracle.24
2.1.4. Thiết lập các tham số khởi tạo ảnh hưởng tớikích cỡ bộ nhớ SGA .24
2.2. KẾT NỐI TỚI ORACLE SERVER. 25
2.2.1. Mô hình kết nối .25
2.2.2. Một số khái niệm cơ bản liên quan đến kết nối.26
2.2.3. Kết nối tới database .26
CHƯƠNG 3. CÁC CÔNG CỤ QUẢN TRỊ ORACLE . 28
3.1. CÁC CÔNG CỤ QUẢN TRỊ CƠ SỞ DỮ LIỆU ORACLE. 28
3.2. SERVER MANAGER LINE MODE . 28
3.2.1. Truy nhập Server Manager Line Mode .28
3.2.2. Phân nhóm các lệnh trong Server manager.29
3.2.3. Diễn giải các lệnh trong Server manager .29
3.3. ORACLE ENTERPRISE MANAGER . 30
3.3.1. Kiến trúc OME .30
3.3.2. Các dịch vụ chung.31
3.3.3. Oracle Configuration Assistant .31
3.3.4. Oracle Enterprise Manager Console.31
3.4. CÁC CÔNG CỤ QUẢN TRỊ KHÁC. 32
CHƯƠNG 4. TẠO DATABASE . 33
4.1. CÁC BƯỚC TẠO DATABASE . 33
4.2. CHUẨN BỊ MÔI TRƯỜNG. 33
4.2.1. Chuẩn bị hệ điều hành .33
4.2.2. Lên kế hoạch bố trí các file thông tin.33
4.2.3. Optimal Flexible Architecture – OFA .34
4.2.4. Cấu trúc thư mục phần mềm Oracle.35
4.2.5. Biến môi trường.35
4.3. CHUẨN BỊ CÁC THAM SỐ TRONG PARAMETER FILE . 36
4.4. CHUẨN BỊ INSTANCE PHỤC VỤ QUẢN TRỊ . 37
4.4.1. Tạo một instance .37
4.4.2. Khởi động instance .38
4.4.3. Dừng instance .38
4.4.4. Huỷ instance .39
4.5. TẠO DATABASE . 39
4.5.1. Khởi động Instance .39
4.5.2. Lệnh tạo database .39
4.5.3. Oracle Database Assistant.41
4.5.4. File script ví dụ tạo một database .41
4.5.5. Lỗi xảy ra khi tạo database .42
4.5.6. Kết quả sau khi tạo database .42
4.6. TẠO DATA DICTIONARY CHO DATABASE . 43
CHƯƠNG 5. QUẢN TRỊ ORACLE DATABASE . 44
5.1. PHÂN LOẠI USERS . 44
www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 3
5.1.1. Database Administrators.44
5.1.2. Security Officers .44
5.1.3. Application Developers .45
5.1.4. Database Users .45
5.1.5. Network Administrators .45
5.2. PHƯƠNG THỨC XÁC NHẬN ĐẶC QUYỀN TRUY NHẬP . 45
5.2.1. Phương thức xác nhận quyền.45
5.2.2. Xác nhận quyền bởi hệ điều hành.46
5.2.3. Xác nhận quyền bằng file mật khẩu .47
5.2.4. Thay đổi mật khẩu internal .47
5.3. TẠO PARAMETER FILE . 48
5.3.1. Sử dụng các tham số .48
5.3.2. Một số quy tắc đối với các tham số .49
5.3.3. .49
5.3.4. Các tham số cơ bản .49
5.4. START VÀ SHUT DOWN DATABASE. 50
5.4.1. Các bước Start và Shut down database .50
5.4.2. Start database.52
5.4.3. Thay đổi tính sẵn dùng của database hiện thời.52
5.4.4. Shut down database.53
5.4.5. Thay đổi trạng thái của database.54
5.4.6. Tạm treo và phục hồi Database .55
5.4.7. Đặt chế độ hoạt động tĩnh cho database .56
5.5. ĐẶT TRẠNG THÁI TĨNH CHO DATABASE. 56
5.5.1. Đưa Database vào trạng thái tĩnh .56
5.5.2. Phục hồi hệ thống trở lại hoạt động như bìnhthường .57
5.5.3. Xem trạng thái của database.57
5.6. LẤY CÁC THÔNG TIN VỀ HỆ THỐNG. 57
5.6.1. Một số views cần quan tâm.58
5.6.2. Hiển thị giá trị của các thông số hệ thống.58
5.6.3. Tham số hệ thống động (có thể thay đổi).59
5.6.4. Quản lý session .59
5.6.5. Trace file và ALERT file.60
CHƯƠNG 6. DATA DICTIONARY, VIEWS VÀ PACKAGES . 61
6.1. DATA DICTIONARY VÀ VIEWS. 61
6.1.1. Data Dictionary.61
6.1.2. Data Dictionary views.62
6.1.3. Sripts quản trị .64
6.2. STORED PROCEDURES VÀ CÁC PACKAGES CHUẨN . 65
6.2.1. Giới thiệu chung .65
6.2.2. Stored procedures.65
6.2.3. Packages chuẩn.66
6.2.4. Giới thiệu một số packages chuẩn do Oracle cung cấp .66
6.2.5. Package DBMS_METADATA.68
6.2.6. Package dbms_redefinition .69
6.3. THÔNG TIN VỀ CÁC STORED PROCEDURES. 69
CHƯƠNG 7. QUẢN TRỊ CONTROL FILES. 72
7.1. CONTROL FILES . 72
7.1.1. Giới thiệu control file .72
7.1.2. Cách thức đặt tên control file .72
7.1.3. Kết hợp nhiều control files .72
7.1.4. Nội dung của control file.73
7.1.5. Các tham số ảnh hưởng tới kích thước của control file .74
7.2. QUẢN TRỊ CONTROL FILE . 74
7.2.1. Tạo mới control file .74
www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 4
7.2.2. Tạo mới control file cho một database đã có sẵn .76
7.2.3. Một số lỗi đối với các Control Files .76
7.2.4. Huỷ bỏ Control Files .77
7.3. THÔNG TIN TRẠNG THÁI CỦA CONTROL FILES. 78
CHƯƠNG 8. QUẢN LÝ REDO LOG FILES . 79
8.1. SỬ DỤNG CÁC REDO LOG FILES. 79
8.1.1. Redo log file.79
8.1.2. Online Redo Log Groups .79
8.1.3. Online Redo Log Members .79
8.1.4. Nội dung của Online Redo Log Files (Members) .80
8.1.5. Active và Inactive Online Redo Log Files .80
8.1.6. Thiết lập các Redo Log Files khởi tạo .80
8.2. LGWR, LOG SWITCHES VÀ CHECKPOINTS . 81
8.2.1. Redo Log Buffer và Background process LGWR .81
8.2.2. Log Switches .81
8.2.3. Checkpoints .82
8.3. LÊN KẾ HOẠCH SỬ DỤNG REDO LOG FILES . 82
8.3.1. Xác định số lượng Online redo log files.82
8.3.2. Nơi đặt các Online Redo Log Files .82
8.3.3. Xác định kích thước cho các Online Redo Log Files .83
8.3.4. Lưu trữ các redo log files .83
8.4. ĐIỀU KHIỂN LƯU TRỮ SAU ĐỐI VỚI PRIMARY/STANDBY. 84
8.4.1. Thiết lập tham số ARCHIVE_LAG_TARGET .84
8.4.2. Các yếu tố ảnh hưởng tới tham số ARCHIVE_LAG_TARGET .85
8.5. XÁC ĐỊNH CHẾ ĐỘ LƯU TRỮ. 85
8.5.1. Sử dụng lệnh Server Manager .85
8.5.2. Sử dụng thông tin trong data dictionary .86
8.6. ĐIỀU KHIỂN CÁC LOG SWITCHS VÀ CHECKPOINTS. 87
8.6.1. Thực hiện log switches .87
8.6.2. Thực hiện checkpoint .87
8.6.3. Điều chỉnh các ngắt quãng checkpoints .87
8.7. QUẢN TRỊ CÁC REDO LOG FILES . 88
8.7.1. Bổ sung các online redo log groups.88
8.7.2. Bổ sung các online redo log members .89
8.7.3. Định lại chỗ cho các redo log file .89
8.7.4. Ngừng sử dụng các Online redo log groups.90
8.7.5. Ngừng sử dụng các Online redo log members .91
8.7.6. Xoá rỗng Online redo log file.92
CHƯƠNG 9. QUẢN TRỊ TABLESPACES VÀ DATA FILES. 93
9.1. CẤU TRÚC CỦA DATABASE . 93
9.1.1. Quan hệ giữa database với các tablespaces vàdata files .93
9.1.2. Quan hệ giữa segment với các extent và các blocks.94
9.2. PHÂN LOẠI CÁC TABLESPACES . 95
9.2.1. Tablespace SYSTEM và non-SYSTEM.95
9.2.2. Tablespaces read-only / read-write .96
9.2.3. Temporary tablespace / permanent tablespace.96
9.3. QUẢN LÝ KHÔNG GIAN TRONG TABLESPACES . 97
9.3.1. Dictionary-Managed Tablespaces .97
9.3.2. Locally-Managed Tablespaces.97
9.4. THIẾT LẬP TRẠNG THÁI CHO TABLESPACES . 98
9.5. TRAO ĐỔI CÁC TABLESPACES GIỮA DATABASES . 98
9.5.1. Một số hạn chế trong việc trao đổi các tablespace: .99
9.5.2. Các bước thực hiện chuyển đổi một tablespacegiữa các database.99
9.6. TẠO TABLESPACE . 100
www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 5
9.6.1. Lệnh tạo tablespace . 100
9.6.2. Chế độ quản lý các tablespaces . 102
9.6.3. Tạo temporary tablespace. 102
9.6.4. Các tham số lưu trữ . 102
9.7. CÁC THAY ĐỔI ĐỐI VỚI TABLESPACE . 103
9.7.1. Chuyển đổi một tablespace thành một temporary tablespace . 103
9.7.2. Thêm mới các tablespace . 103
9.7.3. Mở rộng data files. 104
9.7.4. Thay đổi kích thước data file . 104
9.7.5. Chuyển đổi chế độ ONLINE và OFFLINE . 105
9.7.6. Di chuyển các data file . 106
9.7.7. Tablespace chỉ đọc. 107
9.7.8. Huỷ tablespace . 107
9.8. THÔNG TIN VỀ CÁC TABLESPACES . 108
9.8.1. Xem thông tin tablespace . 109
9.8.2. Xem thông tin data files. 109
CHƯƠNG 10. CẤU TRÚC LƯU TRỮ. 111
10.1. CÁC LOẠI SEGMENTS . 111
10.1.1. Table . 111
10.1.2. Table partition . 111
10.1.3. Cluster . 111
10.1.4. Index. 111
10.1.5. Index-Organized Table . 112
10.1.6. Index Partition. 112
10.1.7. Rollback Segment . 112
10.1.8. Temporary Segment . 112
10.1.9. LOB Segment . 112
10.1.10. LOB Index . 113
10.1.11. Nested Table . 113
10.1.12. Bootstrap Segment . 113
10.2. QUẢN LÝ EXTENTS . 113
10.2.1. Cấp phát và thu hồi các extents. 113
10.2.2. Sử dụng và giải phóng các extent . 114
10.2.3. Kết hợp các vùng không gian trống . 114
10.3. BLOCK DỮ LIỆU. 116
10.3.1. Cấu trúc của block dữ liệu. 116
10.3.2. Các tham số sử dụng không gian trong block . 117
10.3.3. Sử dụng không gian trong block . 118
10.3.4. Phân loại mức độ phân đoạn đối với từng loại segment . 118
10.4. THÔNG TIN VỀ CẤU TRÚC LƯU TRỮ . 119
10.4.1. Các view lưu trữ thông tin. 119
10.4.2. Xem thông tin về các segments . 120
10.4.3. Thông tin về các extents . 121
10.4.4. Thông tin về các vùng trống. 122
CHƯƠNG 11. QUẢN LÝ ROLLBACK SEGMENTS . 123
11.1. GIỚI THIỆU ROLLBACK SEGMENTS. 123
11.1.1. Khái niệm. 123
11.1.2. Mục đích sử dụng segment . 123
11.1.3. Phân loại rollback segment. 124
11.2. SỬ DỤNG ROLLBACK SEGMENT . 125
11.2.1. Sử dụng rollback segment trong các transaction . 125
11.2.2. Tăng trưởng đối với các rollback segments . 126
11.2.3. Tối ưu các rollback segments . 127
11.3. QUẢN LÝ ROLLBACK SEGMENTS. 127
11.3.1. Sử dụng rollback segment . 127
www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 6
11.3.2. Tạo rollback segment . 128
11.3.3. Thay đổi trạng thái của Rollback segments . 129
11.3.4. Instance sử dụng rollback segment . 130
11.3.5. Điều chỉnh khả năng lưu trữ của rollback segment . 130
11.3.6. Giảm bớt độ rộng của rollback segment . 130
11.3.7. Hủy bỏ rollback segment. 131
11.3.8. Quản lý undo tự động. 131
11.4. THÔNG TIN VỀ CÁC ROLLBACK SEGMENT . 132
11.4.1. Xem thông tin chung về các rollback segment . 132
11.4.2. Xem thông tin thống kê về rollback segment . 133
11.4.3. Thông tin về rollback segment đang active . 134
11.5. CÁC VẤN ĐỀ LIÊN QUAN TỚI ROLLBACK SEGMENT . 135
11.5.1. Thiếu không gian cho các transactions . 135
11.5.2. Lỗi đọc dữ liệu không đồng nhất. 135
11.5.3. Chặn session . 136
CHƯƠNG 12. QUẢN LÝ TEMPORARY SEGMENTS . 138
12.1. TEMPORARY SEGMENTS . 138
12.1.1. Phân loại temporary segments. 139
12.1.2. Sử dụng các Sort Segments . 140
12.1.3. Sort Extent Pool . 140
12.2. CẤP PHÁT KHÔNG GIAN CHO TEMPORARY SEGMENT. 140
12.3. THÔNG TIN VỀ CÁC TEMPORARY SEGMENT . 141
CHƯƠNG 13. CLUSTERS VÀ INDEX-ORGANIZED TABLES. 143
13.1. TỔNG QUAN VỀ CLUSTERS VÀ INDEX-ORGANIZED TABLES . 143
13.1.1. Cluster . 144
13.1.2. Xem xét và chọn lựa Cluster . 145
13.1.3. Các kiểu cluster . 145
13.1.4. Chọn lựa kiểu cluster . 146
13.2. QUẢN LÝ CLUSTER . 147
13.2.1. Tạo cluster . 147
13.2.2. Tạo Hash Cluster . 149
13.2.3. Xác định giá trị SIZE cho cluster . 150
13.2.4. Các tham số chỉ định cho hash cluster . 150
13.2.5. Sửa đổi các Cluster . 151
13.2.6. Xoá Cluster. 152
13.3. THÔNG TIN VỀ CÁC CLUSTERS . 154
13.3.1. Xác định Cluster và các cột khoá Cluster . 154
13.3.2. Lấy thông tin cột khoá của cluster và các cột trong bảng . 155
13.3.3. Lấy thông tin cho hash cluster . 155
13.4. INDEX-ORGANIZED TABLE . 156
13.4.1. Tính chất chung. 156
13.4.2. Tạo một index-organized table . 157
13.4.3. Hiện tượng ROW OVERFLOW (tràn dòng dữ liệu) . 159
13.4.4. Lấy thông tin IOT (Index Orrganized Table) . 160
CHƯƠNG 14. QUẢN LÝ CÁC TABLES. 161
14.1. TỔNG QUAN VỀ TABLES . 161
14.1.1. Phân loại các tables. 161
14.1.2. Cấu trúc các dòng dữ liệu (row data) . 161
14.2. CÁC KIỂU DỮ LIỆU TRONG TABLE . 162
14.2.1. Kiểu dữ liệu vô hướng . 162
14.2.2. Tập hợp (collection) . 166
14.2.3. Kiểu quan hệ (REF) . 167
14.2.4. Kiểu dữ liệu TIMESTAMP. 167
www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 7
14.3. QUẢN LÝ CÁC TABLES . 167
14.3.1. Tạo table . 167
14.3.2. Thiết lập giá trị PCTFREE và PCTUSED. 169
14.3.3. Migration (di trú) và Chaining các dòng dữ liệu. 170
14.3.4. Sao chép một tables. 170
14.3.5. Quản trị columns trong table . 171
14.3.6. Chuyển một Table tới Segment hay Tablespacemới. 173
14.3.7. Định nghĩa lại một table đang online . 173
14.3.8. Bảng ngoài – External table. 175
14.4. CÁC RÀNG BUỘC (CONSTRAINTS) ĐỐI VỚI TABLES. 176
14.4.1. Ràng buộc đối với tables. 176
14.4.2. Null / Not Null. 176
14.4.3. Unique. 177
14.4.4. Primary Key. 177
14.4.5. Foreign Key ( Referential Key) . 177
14.4.6. Check . 178
14.5. QUẢN LÝ KHÔNG GIAN LƯU TRỮ TRONG TABLE . 178
14.5.1. Thay đổi thông tin lưu trữ và tham số sử dụng Block . 178
14.5.2. Cấp phát các extents bằng tay (manually) . 179
14.5.3. High Water Mark. 180
14.5.4. Thu hồi không gian không sử dụng . 181
14.5.5. Truncate một table. 182
14.5.6. Xoá table . 182
14.5.7. Kiểm tra cấu trúc bảng . 183
14.5.8. Phát hiện các rows bị migration . 183
14.6. THÔNG TIN VỀ TABLES . 184
14.6.1. Thông tin chung về các tables . 184
14.6.2. Thông tin về sử dụng block và thông tin chaining . 185
CHƯƠNG 15. QUẢN LÝ CÁC INDEXES . 186
15.1. PHÂN LOẠI INDEXES . 186
15.1.1. Index trên một column và Index trên nhiều columns. 186
15.1.2. Unique index và Non-unique index . 186
15.1.3. Partitioned index và non-partitioned index . 186
15.2. TỔ CHỨC INDEX. 186
15.2.1. B-TREE index. 186
15.2.2. Reverse Key Index . 188
15.2.3. Bitmap Index. 189
15.2.4. So sánh giữa B-TREE index và Bitmap index. 190
15.3. QUẢN LÝ INDEX . 190
15.3.1. Tạo các index . 190
15.3.2. Một số cách sử dụng index. 193
15.3.3. Tạo Index khoá ngược (reverse key index) . 194
15.3.4. Tạo Bitmap index . 194
15.3.5. Thay đổi tham số lưu trữ cho index. 195
15.3.6. Cấp phát và thu hồi không gian sử dụng của index . 195
15.3.7. Xây dựng lại (Rebuild) các index . 196
15.3.8. Kiểm tra tính hợp lệ của index . 197
15.3.9. Xoá các index . 198
15.4. THÔNG TIN VỀ CÁC INDEX . 198
15.4.1. Xem thông tin về các index . 198
15.4.2. Tìm các cột trong một index. 199
CHƯƠNG 16. NẠP VÀ TỔ CHỨC LƯU TRỮ DỮ LIỆU . 200
16.1. GIỚI THIỆU CHUNG. 200
16.1.1. Tổng quan việc nạp dữ liệu . 200
16.1.2. Nạp dữ liệu trực tiếp . 201
www.updatesofts.com
ORACLE 9i – Kiến trúc và Quản trị Trang 8
16.2. NẠP DỮ LIỆU. 201
16.2.1. Nạp dữ liệu bằng SQL* Loader . 201
16.2.2. Phương pháp nạp dữ liệu. 203
16.2.3. So sánh hai phương pháp nạp dữ liệu . 204
16.2.4. Nạp dữ liệu đồng thời (Parallel direct load) . 205
16.3. NẠP DỮ LIỆU BẰNG SQL*LOADER . 207
16.3.1. Sử dụng SLQ*LOADER. 207
16.3.2. Parameter file (tệp tham số). 208
16.3.3. Control file (tệp điều khiển). 209
16.3.4. Data file. 211
16.3.5. Các thành phần của log file . 211
16.3.6. Các file đầu ra khác. 211
16.3.7. Các hướng dẫn khi sử dụng load. 212
16.4. TỔ CHỨC LẠI DỮ LIỆU BẰNG CÔNG CỤ EXPORT VÀ IMPORT. 213
16.4.1. Công cụ dịch chuyển dữ liệu. 213
16.4.2. Các chế độ Export . 214
16.4.3. Export dữ liệu trực tiếp và Export dữ liệu thông thường. 215
16.5. CÔNG CỤ EXPORT . 216
16.5.1. Sử dụng công cụ Export. 216
16.5.2. Giới thiệu một số chế độ export . 218
16.5.3. Các tablespaces trao đổi . 220
16.5.4. Một số thông báo khi export: Warning, Error, và Completion Messages . 220
16.6. CÔNG CỤ IMPORT . 221
16.6.1. Sử dụng công cụ Import . 221
16.6.2. Chuyển đổi character set . 225
CHƯƠNG 17. QUẢN LÝ USER. 226
17.1. USER TRONG DATABASE. 226
17.1.1. User và những thành phần liên quan. 226
17.1.2. Database schema. 227
17.2. QUẢN LÝ USER . 227
17.2.1. Các bước thực hiện khi tạo mới user . 227
17.2.2. Tạo mới user với cơ chế xác nhận bởi database. 228
17.2.3. Thay đổi thuộc tính của user . 229
17.2.4. Thay đổi hạn mức (quota) sử dụng tablespace . 229
17.2.5. Huỷ User. 230
17.3. THÔNG TIN VỀ USER. 230
CHƯƠNG 18. QUẢN LÝ THÔNG TIN PROFILES . 232
18.1. GIỚI THIỆU PROFILE. 232
18.2. QUẢN LÝ PROFILE. 233
18.2.1. Tạo Profile. 233
18.2.2. Thiết lập các giới hạn về tài nguyên . 234
18.2.3. Gán Profile cho User . 234
18.2.4. Đặt giới hạn tài nguyên . 235
18.2.5. Thay đổi thông tin trong profile . 235
18.2.6. Huỷ profile . 236
18.2.7. Thông tin về các giới hạn tài nguyên . 236
18.3. QUẢN LÝ MẬT KHẨU . 237
18.3.1. Tạo profile quản lý mật khẩu. 238
18.3.2. Các tham số điều chỉnh mật khẩu . 239
18.3.3. Một số đặc điểm chính trong quản lý mật khẩu . 239
18.3.4. Hàm cung cấp mật khẩu cho người sử dụng. 240
ến trúc và Quản trị Trang 135 2 rows selected. Diễn giải một số cột dữ liệu Tên cột Diễn giải SES_ADDR Địa chỉ của session, lấy được từ V$SESION.SADDR XIDUSN Số hiệu của Rollback segment được sử dụng bởi transaction UBAFIL, UBABLK, UBASQN,UBAREC Vị trí hiện thời của rollback segment mà transaction sẽ ghi vào USED_UBLK Số hiệu block undo được tạo ra bởi transaction START_UEXT, START_UBAFIL, START_UBABLK Số hiệu của extent (file, block) thuộc rollback segment mà transaction bắt đầu ghi dữ liệu 11.5.CÁC V;N Đ7 LIÊN QUAN TI ROLLBACK SEGMENT 11.5.1. Thiếu không gian cho các transactions Nguyên nhân Do một transaction không được sử dụng nhiều rollback segments nên có thể xảy ra tình trạng thiếu vùng không gian cho các rollback segment và gây ra lỗi (ORA-01562). Nguyên nhân có thể là một trong các trường hợp sau: Không có đủ không gian trong tablespace (ORA-01560) Số lương các extents trong rollback segment đã đạt tới giá trị MAXEXTENTS và không thể bổ sung thêm các extent vào rollback segment (ORA-01628) Giải pháp Với lỗi ORA-01560: Mở rộng thêm các data files trong tablespace Đặt chế độ cho các data files là AUTOEXTEND Bổ sung mới data file vào tablespace Với lỗi ORA-01628: Tăng tham số MAXEXTENTS của rollback segment Huỷ và tạo lại rollback segment với kích thước của extent lớn hơn 11.5.2. Lỗi đọc dữ liệu không đồng nhất Nguyên nhân Oracle server cố gắng đảm bảo các câu lệnh sẽ chỉ xử lý trên các dữ liệu đã được commit. Vì thế, các dữ liệu chưa commit sẽ không được sử dụng. Trong trường hợp Oracle server không tạo được các bản lưu giá trị cũ các dữ liệu (read-consistent image of data), user sẽ nhận được lỗi ORA-01555 snapshot too old. Lỗi này xảy ra khi transaction thay đổi các dữ liệu đã được commit và: Transaction slot có trong phần rollback header đang được sử dụng www.updatesofts.com ORACLE 9i – Kiến trúc và Quản trị Trang 136 Giá trị ban đầu (before-image) trong rollback segment được ghi đè lên bởi một transaction khác Giải pháp Tăng chỉ số MINEXTENTS Mở rộng kích thước extent Tăng giá trị OPTIMAL 11.5.3. Chặn session Hình vẽ 57. Chặn session Vấn đề Khi một extent trong rollback segment được ghi đầy, Oracle server sẽ tiếp tục sử dụng extent kế tiếp theo cơ chế xoay vòng. Trong trường hợp extent kế tiếp vẫn đang trong tình trạng active, transaction sẽ không sử dụng được nó. Mặt khác, nó cũng không thể bỏ qua extent kế tiếp để chuyển tới extent sau nữa nếu nó rỗi. Khi đó, rollback segment sẽ được bổ sung thêm các extent. Việc làm này làm cho rollback segment ngày một mở rộng và quản trị viên cần phải can thiệp để hạn chế việc mở rộng này. Giải pháp Quản trị viên database cần thực hiện kiểm tra thông tin của các transaction đang được thực hiện thông qua việc lấy thông tin từ các view V$ROLLSTAT, V$TRANSACTION, V$SESSION để phát hiện các transaction đang bị cản trở, từ đó thực hiện việc điều chỉnh cho phù hợp. Công việc kiểm tra và giám sát này được thực hiện bằng tay bởi người quản trị database. Ví dụ: Xem thông tin về các transactions đang được thực hiện SVRMGR> SELECT s.sid, s.serial#, t.start_time, t.xidusn, s.username 2> FROM v$session s, v$transaction t, v$rollstat r 3> WHERE s.saddr = t.ses_addr 4> AND t.xidusn = r.usn www.updatesofts.com ORACLE 9i – Kiến trúc và Quản trị Trang 137 5> AND ((r.curext = t.start_uext-1) OR 6> ((r.curext = r.extents-1) AND t.start_uext=0)); SID SERIAL# START_TIME XIDUSN USERNAME --- ------- ------------- ------ -------- 9 27 10/30/97 21:10:41 2 SYSTEM 1 row selected. www.updatesofts.com ORACLE 9i – Kiến trúc và Quản trị Trang 138 Chương 12. QUẢN LÝ TEMPORARY SEGMENTS 12.1.TEMPORARY SEGMENTS Temporary segments được sử dụng khi Oracle server thực các hiện câu lệnh sắp xếp mà không thể sử dụng vùng không gian trong bộ nhớ do không đủ, ví dụ như: SELECT. . . ORDER BY CREATE INDEX SELECT DISTINCT SELECT. . . GROUP BY SELECT. . . UNION Dung lượng bộ nhớ cần thiết cho tiến trình sắp xếp được xác định dựa trên tham số khởi tạo SORT_AREA_SIZE. Trong một số trường hợp, nhiều thao tác sắp xếp cùng được sử dụng và cần nhiều bộ nhớ hơn. Khi này bộ nhớ trong của máy là không thể đáp ứng được và kết quả của việc sắp xếp đó cần phải được tạm thời lưu lên đĩa. Vùng đĩa lưu trữ các dữ liệu trung gian này chính là temporary segments. Temporary segments trong tablespace được Oracle server tạo lập với mục đích sử dụng làm vùng nhớ trung gian hỗ trợ thao tác sắp xếp. Hình vẽ 58. Temporary segment www.updatesofts.com ORACLE 9i – Kiến trúc và Quản trị Trang 139 12.1.1. Phân loại temporary segments Các temporary segments có thể được tạo trên một permanent tablespace hoặc trên một temporary tablespace. User có thể sử dụng một trong các kiểu tablespaces này để sắp xếp. Hình vẽ 59. Phân loại temporary segment Temporary Tablespace Một temporary tablespace được sử cho các temporary segments tương ứng và không chứa bất kỳ segment nào có kiểu khác. Ta có thể tạo các temporary tablespace theo câu lệnh SQL sau: CREATE TABLESPACE tablespace_name TEMPORARY DATAFILE filespec [autoextend_clause] [ , filespec [autoextend_clause]] ... Một permanent tablespace có thể chuyển đổi thành dạng temporary tablespace bằng cách sử dụng câu lệnh: ALTER TABLESPACE tablespace_name TEMPORARY Lưu ý: với câu lênh trên, tablespace không được phép chứa bất kỳ một đối tượng thường trú nào (như: table, store procedure, ...). Một temporary tablespace có thể chuyển đổi lại thành permanent tablespace thông qua câu lệnh SQL dưới đây: ALTER TABLESPACE tablespace_name PERMANENT Oracle server có thể tạo một temporary segment trong một permanent tablespace với số điều kiện sau: User thực hiện câu lệnh sắp xếp cần đến vùng không gian trên đĩa. User chạy câu lệnh mà nó đã được gán cho một permanent tablespace để thực hiện sắp xếp. Khi một permanent tablespace được sử dụng cho việc sắp xếp, một instance có thể có một hoặc nhiều temporary segment trong tablespace. Một temporary segment sẽ được hủy bởi tiến trình nền SMON khi kết thúc câu lệnh sắp xếp và vùng không gian đã cấp phát sẽ được giải phóng để cho các đối tượng khác của database www.updatesofts.com ORACLE 9i – Kiến trúc và Quản trị Trang 140 sử dụng. Permanent tablespaces được sử dụng cho việc sắp xếp, có ba vùng không gian trong tablespace có thể được phân vùng khác nhau. Thông thường, mỗi tablespace nên được sử dụng cho từng tiến trình sắp xếp khác nhau. Khi một temporary tablespaces được sử dụng cho các temporary segments, Instance chỉ tạo một segment dùng để sắp xếp cho tablespace. Một vài transactions cần đến sắp xếp trên ổ đĩa có thể sử dụng cùng segment. Tuy nhiên, một extent thì không thể cùng chia sẻ đồng thời cho nhiều transactions khác nhau. 12.1.2. Sử dụng các Sort Segments Sort segment được tạo bởi câu lệnh sắp xếp đầu tiên sử dụng tới temporary tablespace cho việc sắp xếp. Và sort segment chỉ bị hủy khi tắt (shutdown) database. Việc này làm giảm bớt số lần cấp phát và thu hồi các sort segments phục vụ cho công việc sắp xếp, làm tăng năng suất hệ thống. Oracle không hạn chế số lượng các extents cấp phát cho mỗi sort segment thuộc một temporary tablespace. 12.1.3. Sort Extent Pool Oracle server lưu lại chi tiết sort segment trong vùng Sort Extent Pool của vùng nhớ SGA, mỗi câu lệnh cần tới các vùng trống để thực hiện sắp xếp có thể tìm các extent rỗi trong vùng nhớ này. 12.2.C;P PHÁT KHÔNG GIAN CHO TEMPORARY SEGMENT Temporary tablespaces được sử dụng để tăng hiệu quả sắp xếp dữ liệu. Kích thước của các extents trong temporary segment được xác định bởi DEFAULT STORAGE clause của tablespace tương ứng. Do lượng dữ liệu ghi lên temporary segment bằng phần nguyên lần giá trị SORT_AREA_SIZE. Do vậy, ta nên đặt INITIAL = NEXT = (n*SORT_AREA_SIZE)+ DB_BLOCK_SIZE Giá trị PCTINCREASE=0, để đảm bảo các extents có cùng kích thước. www.updatesofts.com ORACLE 9i – Kiến trúc và Quản trị Trang 141 12.3.THÔNG TIN V7 CÁC TEMPORARY SEGMENT Hình vẽ 60. Thu nhận thông tin về database instance Ta có thể lấy được các thông tin về temporary segment trong một số bảng từ điển dữ liệu: DBA_SEGMENTS: chứa thông tin về tất cả các loại segments trong database. V$SORT_SEGMENT: cho biết trạng thái của các sort extent pool (vùng không gian sắp xếp). Với từ điển dữ liệu này, ta có thể biết được những thông tin sau: Tên cột Diễn giải TABLESPACE_NAME Tên temporary tablespace EXTENT_SIZE Kích thước của extent TOTAL_EXTENTS Tổng số các extents TOTAL_BLOCKS Tổng số các blocks USED_EXTENTS Số lượng extents đã sử dụng USED_BLOCKS Số lượng blocks đã sử dụng FREE_EXTENTS Số lượng extents còn trống FREE_BLOCKS Số lượng blocks còn trống MAX_SORT_SIZE Kích thước tối đa của vùng dữ liệu sắp xếp MAX_SORT_BLOCKS Số lượng blocks tối đa dùng để sắp xếp dữ liệu Ví dụ: SVRMGR> SELECT tablespace_name, extent_size, 2> total_extents, max_sort_blocks 3> FROM v$sort_segment; TABLESPACE_NAME EXTENT_SIZ TOTAL_EXTE MAX_SORT_B --------------- ---------- ---------- ---------- TEMP 128 1 128 1 row selected. www.updatesofts.com ORACLE 9i – Kiến trúc và Quản trị Trang 142 MAX_SORT_SIZE và MAX_SORT_BLOCKS là số lượng các extents và các blocks sử dụng bởi phép sắp xếp lớn nhất. Thông tin này là hữu ích trong việc điều chỉnh kích thước của temporary tablespace V$SORT_USAGE: cho biết thông tin về các sắp xếp hiện có của instance, ta kết hợp với V$SESSION để biết thêm các thông tin: Ví dụ: SVRMGR> SELECT s.username, u."USER", u.tablespace, 2> u.contents, u.extents, u.blocks 3> FROM v$session s,v$sort_usage u 4> WHERE s.saddr=u.session_addr; USERNAME USER TABLESPACE CONTENTS EXTENTS BLOCKS -------- ----- ---------- --------- ------- ------ SYSTEM SYS TEMP TEMPORARY 1 128 1 row selected.
File đính kèm:
- ORACLE 9i - Kiến trúc và quản trị.pdf