wondergjrl_34
New Member
Download miễn phí Giáo trình kiến trúc và quản trị Oracle 8i
Toàn vẹn dữ liệu là yêu cầu đầu tiên của một hệ quản trị CSDL. Có 3 cách để đảm bảo toàn vẹn
CSDL
- Mã nguồn
- Database trigger
- Constraint
Chọn cách thức toàn vẹn dữ liệu nào là do người thiết kế chương trình. Người quản trị chỉ kiểm tra và
làm theo các yêu cầu toàn vẹn số liệu đã được định sãn. Mã nguồn được chạy tại client vì vậy trong
phần này chỉ chú ý tới Database trigger và Constraint.
• Database trigger: là một đoạn chương trình PL/SQL thực hiện khi có các hành động insert, update
xảy ra trên các column của bảng. Database trigger có thể bật hay tắt khi cần. Database trigger
thường được dùng để đảm bảo các ràng buộc phức tạp về mặt nghiệp vụ.
• Constraint là kỹ thuật để đảm bảo các ràng buộc cố định về mặt nghiệp vụ, Có đặc điểm:
- Tăng khả năng thực thi
- Dễ định nghĩa và sửa đổi bởi vì nó không phải là những đoạn mã phức tạp
- Các ràng buộc chính
-Mềm dẻo
- Có đầy đủ thông tin trong database dictionary.
Có các loại constraint sau:
- NULL/NOT NULL: ràng buộc column trống hay không trống, trong ví dụ mệnh đề ràng buộc:
- UNIQUE: Chỉ ra ràng buộc duy nhất, các giá trị của column chỉ trong mệnh đề UNIQUE trong
các row của table phải có giá trị khác biệt. Giá trị null là cho phép nêu UNIQUE dựa trên một
cột. Vd:
http://cloud.liketly.com/flash/edoc/jh2i1fkjb33wa7b577g9lou48iyvfkz6-swf-2014-02-11-giao_trinh_kien_truc_va_quan_tri_oracle_8i.aXH4ZlwVYr.swf /tai-lieu/de-tai-ung-dung-tren-liketly-57927/
Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí
Tóm tắt nội dung tài liệu:
Công ty cổ phần tμi ngân - BFCGiáo trình kiến trúc vμ quản trị Oracle 8i
Đμo tạo kiến trúc vμ quản trị ORACLE 8i Trang 51
13 Quản lý Indexes
13.1 Phân loại Index
• Index
Index là cấu trúc cho phép truy xuất trực tiếp tới các dòng dữ liệu trong bảng. Index có thể đ−ợc phân
loại tuỳ theo thiết kế logic hay cài đặt vật lý.
• Single Column và Concatenated Column:
- Single Column index: chỉ có một cột trong index key
- Concatenated Column index: Index đ−ợc tạo trên nhiều cột trong một table.
• Unique va NonUnique index:
- Unique index: giá trị index xác định duy nhất một dòng dữ liệu trong bảng
- NonUnique index: có nhiều dòng dữ liệu ứng với cùng một giá trị index
• Function-base index:
- Giá trị index đ−ợc xác định thông qua giá trị của một hàm
• Partition và NonPartition index:
- Partitioned index: sử dụng cho các bảng lớn, l−u giữ giá trị index t−ơng ứng trên nhiều
segments. Partitioned index đ−ợc sử dụng cho các Partitioned tables.
- NonPartition index: index l−u giữ các giá trị chỉ trên cùng một segment.
• B-tree Index
Hình vẽ 7 Cấu trúc B-Tree
• Cấu trúc của B-Tree Index: B-Tree Index có cấu trúc dạng cây, trên cùng là một nút gốc, chứa
các con trỏ trỏ tới các mức tiếp theo (nhánh) trong index. Mức d−ới cùng (lá) là các blocks. Mức
nhánh này chứa các index trỏ tới dòng dữ liệu cụ thể trong bảng.
• Khuôn dạng của Index Leaf Entries: đ−ợc chia làm các phần chính sau:
- Entry header: chứa số l−ợng các cột và lock information
Công ty cổ phần tμi ngân - BFC
Giáo trình kiến trúc vμ quản trị Oracle 8i
Đμo tạo kiến trúc vμ quản trị ORACLE 8i Trang 52
- Cặp các thông số: độ rộng và giá trị khoá index
- ROWID của dòng dữ liệu chứa giá trị khoá
• Các tính chất của Index Leaf Entry:
- Các giá trị khoá sẽ đ−ợc lặp lại nếu có nhiều dòng dữ liệu có cùng giá trị khoá
- Không có index entry ứng với các dòng dữ liệu mà tất cả các cột khoá đều có giá trị NULL
• ảnh h−ởng của các DML Operations đối với index:
- Thao tác chèn dữ liệu sẽ t−ơng ứng với việc chèn thêm một nút dữ liệu vào cây.
- Xoá dòng dữ liệu sẽ t−ơng ứng với việc xoá về mặt logic một index entry
- Cập nhật dòng dữ liệu sẽ t−ơng ứng với việc xoá index entry ứng với giá trị cũ và thêm mới một
index entry ứng với giá trị mới.
• Bitmap Index
Là một cách tổ chức khác của Index. Một bitmap index cũng đ−ợc tổ chức theo kiểu B-tree, Nh−ng mỗi
nút lá lại chứa một bitmap (bản đồ ánh xạ bit) đối với mỗi giá trị khoá thay vì là danh sách các giá trị
ROWID. Mỗi bit trong bitmap t−ơng ứng với một ROWID, và nếu bit đ−ợc bật thì điều đó có nghĩa rằng
dòng dữ liệu t−ơng ứng với ROWID chứa giá trị khoá.
Cấu trúc:
• Entry header: : chứa số l−ợng các cột và các lock information
• Giá trị khoá: bao gồm một cặp chiều dài và giá trị ứng với mỗi cột
Hình vẽ 8 Cấu trúc Bitmap Index
• Đánh giá việc sử dụng B-Tree Index và Bitmap Index
B-tree Bitmap
Suitable for high-
cardinality columns
Suitable for low-
cardinality columns
Updates on keys
relatively
Updates on keys
relatively expensive
Công ty cổ phần tμi ngân - BFC
Giáo trình kiến trúc vμ quản trị Oracle 8i
Đμo tạo kiến trúc vμ quản trị ORACLE 8i Trang 53
inexpensive
Inefficient for
queries using OR
predicates
Efficient for queries
using OR predicates
Useful for OLTP Useful for data
warehousing
13.2 Quản lý Index
• Tạo index
• Sử dụng câu lệnh:
CREATE [ UNIQUE ]INDEX [schema.] index
ON [schema.] table
(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ NOSORT ]
Ví dụ:
CREATE INDEX summit.employee_last_name_idx
ON summit.employee(last_name)
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
PCTINCREASE 0 MAXEXTENTS 50)
TABLESPACE indx;
• Sử dụng Oracle Enterprise Manager
- Chọn Object/Create
- Chọn đối t−ợng cần tạo là index
- Đặt các thuộc tính thích hợp trong page General, Storage, Options
- Bấm Create để tạo index
• Tạo Reverse Key Indexes
Cú pháp:
CREATE [ UNIQUE ]INDEX [schema.] index
ON [schema.] table
(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
Công ty cổ phần tμi ngân - BFC
Giáo trình kiến trúc vμ quản trị Oracle 8i
Đμo tạo kiến trúc vμ quản trị ORACLE 8i Trang 54
[ storage-clause ]
[ LOGGING| NOLOGGING ]
REVERSE
Ví dụ:
CREATE UNIQUE INDEX summit.orders_id_idx
ON summit.orders(id) REVERSE
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
PCTINCREASE 0 MAXEXTENTS 50)
TABLESPACE indx;
• Tạo Bitmap Indexes
Sử dụng tham số CREATE_BITMAP_AREA_SIZE để chỉ ra dung l−ợng bộ nhớ cấp phát cho Bitmap.
Cú pháp:
CREATE BITMAP INDEX [schema.] index
ON [schema.] table
(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ NOSORT ]
Ví dụ:
CREATE BITMAP INDEX orders_region_id_idx
ON summit.orders(region_id)
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
PCTINCREASE 0 MAXEXTENTS 50)
TABLESPACE indx;
• Thay đổi các thông số của index
Để thay đổi các tính chất của index, sử dụng lệnh ALTER INDEX.
• Thay đổi tham số l−u trữ của index:
Cú pháp:
ALTER INDEX [schema.]index
[ storage-clause ]
[ INITRANS integer ]
[ MAXTRANS integer ]
Ví dụ:
ALTER INDEX summit.employee_last_name_idx
STORAGE(NEXT 400K
MAXEXTENTS 100);
Công ty cổ phần tμi ngân - BFC
Giáo trình kiến trúc vμ quản trị Oracle 8i
Đμo tạo kiến trúc vμ quản trị ORACLE 8i Trang 55
• Cấp phát/ thu hồi không gian dành cho index
Cú pháp:
ALTER INDEX [schema.]index
{ALLOCATE EXTENT ([SIZE integer [K|M]]
[ DATAFILE ‘filename’ ])
| DEALLOCATE UNUSED [KEEP integer [ K|M ] ] }
Ví dụ:
ALTER INDEX summit.orders_region_id_idx
ALLOCATE EXTENT (SIZE 200K
DATAFILE ‘/DISK6/indx01.dbf’);
ALTER INDEX summit.orders_id_idx
DEALLOCATE UNUSED;
• Xây dựng lại index
Cú pháp:
ALTER INDEX [schema.] index REBUILD
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ REVERSE | NOREVERSE ]
Ví du:
ALTER INDEX summit.orders_region_id_idx REBUILD
TABLESPACE indx02;
ALTER INDEX summit.orders_id_idx REBUILD ONLINE;
• Huỷ bỏ index
• Sử dụng câu lệnh:
DROP INDEX [schema.] index
Ví dụ:
DROP INDEX summit.deptartment_name_idx;
• Sử dụng Oracle Enterprise Manager
- Chọn Index muốn huỷ
- Chọn Object/remove
- Bấm Yes để huỷ index
13.3 Thông tin về index
Thông tin về index đ−ợc l−u giữ trong các view từ điển đữ liệu: DBA_INDEXES, DAB_IND_COLUMNS.
Công ty cổ phần tμi ngân - BFC
Giáo trình kiến trúc vμ quản trị Oracle 8i
Đμo tạo kiến trúc vμ quản trị ORACLE 8i Trang 56
Ví dụ: lấy thông tin về các indexes sở hữu bởi SUMMIT
SQL> SELECT index_name, tablespace_name, index_type,
2 uniqueness, status
3 FROM dba_indexes
4 WHERE owner=’SUMMIT’;
INDEX_NAME TABLESPACE_NAME INDEX_TYPE UNIQUENES STATUS
------------ --------------- ---------- --------- ------
EMPLOYEE_LAST_.. INDX NORMAL NONUNIQUE VALID
ORDERS_ID_IDX INDX NORMAL UNIQUE VALID
ORDERS_REGION_.. INDX02 BITMAP NONUNIQUE VALID
3 rows selected.
14 Duy trì toμn vẹn dữ liệu (Maintaining data integrity)
14.1 Các dạng toμn vẹn dữ liệu
Toàn vẹn dữ liệu là yêu cầu đầu tiên của một hệ quản trị CSDL. Có 3 cách để đảm bảo toàn vẹn
CSDL
- Mã nguồn
- Database trigger
- Constraint
Chọn cách thức toàn vẹn dữ liệu nào là do ng