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 hoặc 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 hoặc 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:

pdf13 trang | Chia sẻ: maiphuongdc | Lượt xem: 2786 | Lượt tải: 3download
Bạn đang xem nội dung tài liệu Giáo trình kiến trúc và quản trị Oracle 8i, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 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−ờ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 hoặc 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 hoặc 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: 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 57 - PRIMARY KEY: Chỉ ra ràng buộc duy nhất (giống UNIQUE), tuy nhiên khoá là dạng khoá UNIQUE cấp cao nhất. Một table chỉ có thể có một PRIMARY KEY. Các giá trị trong PRIMARY KEY phải NOTT NULL. - FOREIGN KEY ( Referential ): Chỉ ra mối liên hệ ràng buộc tham chiếu giữa table này với table khác, hoặc trong chính 1 table. Nó chỉ ra mối liên hệ cha-con và chỉ ràng buộc giữa FOREIGN KEY bảng này với PRIMARY KEY hoặc UNIQUE Key của bảng khác. Ví dụ quan hệ giữa DEPT và EMP thông qua tr−ờng DEPTNO. - CHECK: Ràng buộc kiểm tra giá trị 14.2 Tạo các constraint • Tạo constraint cùng với việc tạo table. • Tạo constraint cùng với việc chỉnh sửa cấu trúc bảng Cú pháp nh− sau: • Tạo constraint tại mức column column datatype [CONSTRAINT constraint_name] {[NOT] NULL | PRIMARY KEY [USING INDEX index_clause] | UNIQUE [USING INDEX index_clause] | REFERENCES [schema.]table[(column)] [ON DELETE CASCADE] | CHECK (condition) [DISABLE|ENABLE [VALIDATE|NOVALIDATE]] Constraint_name : Tên Constraint USING INDEX index_clause : xác định các tham số cho mệnh đề INDEX DEFERRABLE : chỉ định Constraint kiểm tra tại điểm cuối của câu lệnh DML mặc định lμ NOT DEFERRABLE Ví dụ: CREATE TABLE NHANVIEN ( MA NUMBER(7) CONSTRAINT PK_NV PRIMARY KEY DEFERRABLE USING INDEX STORAGE (INITIAL 100k NEXT 100k) TABLESPACE INDX, TEN VARCHAR2(25) CONSTAINT CK_NAME NOT NULL, MAPHONGBAN NUMBER(7)) TABLESPACE DATA; • Tạo constraint tại mức table CONSTRAINT constraint_name {| PRIMARY KEY (column [,column...]) [USING INDEX index_clause] | UNIQUE (column [,column...]) [USING INDEX index_clause] 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 58 | FOREIGN KEY (column [,column...]) REFERENCES [schema.]table[(column)] [ON DELETE CASCADE] | CHECK (condition)} [DISABLE|ENABLE [VALIDATE|NOVALIDATE]] Để quản lý các constraint dùng lệnh ALTER TABLE. để cho phép hoặc không cho phép constraint đó hoạt động. Cú pháp nh− sau: ALTER TABLE [schema.] table ENABLE [VALIDATE] { CONSTRAINT constraint_name |PRIMARY KEY | UNIQUE (COLUMN [,COLUMN]...)} [USING INDEX index_clause] [EXCEPTIONS INTO [scheme.].table]; 14.3 Lấy thông tin về các constraint • Thông tin về các constraint chứa trong bảng DBA_ CONSTRAINTS. • Bảng EXCEPTIONS đ−ợc ORACLE dùng để l−u các thông tin về các lỗi ràng buộc • Cách dùng bảng EXCEPTIONS theo các b−ớc sau: - Nếu bảng EXCEPTIONS ch−a đ−ợc tạo chạy file utlexcpt.sql trong th− mục \RDBMS\ADMIN Ví dụ để tạo bảng EXCEPTIONS, dùng lệnh SQL> @%ORACLE_HOME%\RDBMS\ADMIN\utlexcpt; - Sửa đổi bảng dùng mệnh đề EXCEPTIONS. SQL> ALTER TABLE EMP ENABLE VALIDATE CONSTRAINT EMP_DEPT_FK EXCEPTIONS INTO SYSTEM.EXCEPTION; SQL> ora-02298 cannot enable em+_dept_fk - Xác định dữ liệu lỗi đ−ợc đ−a vào bảng EXCEPTIONS select rowid, empno, ename, deptno from emp where rowid in (select row_id from EXCEPTIONs) for update; ROWID EMPNO ENAME DEPTNO --------------------------------------------- AAAeyAADAAAAA1AAA 77 NGUYEN 50 - Làm chuẩn dữ liệu lỗi Update emp set id = 7777 where rowid = 'AAAeyAADAAAAA1AAA'; - Xoá thông tin về dữ liệu lỗi trong bảng EXCEPTIONS TRUNCATE TABLE EXCEPTIONS; ALTER TABLE EMP ENABLE VALIDATE CONSTRAINT EMP_DEPT_FK 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 59 EXCEPTIONS INTO SYSTEM.EXCEPTION; 15 Nạp dữ liệu Là cách thức chuyển dữ liệu từ bên ngoài hoặc bên trong CSDL vào các bảng (tables) của CSDL. Oracle cung cấp nhiều ph−ơng pháp để thực hiện việc nạp dữ liệu vào trong các bảng. Các ph−ơng pháp th−ờng dùng có thể kể đến là: - Nạp dữ liệu trực tiếp - Sử dụng công cụ SQL* Loader - Sử dụng công cụ Export và Import 15.1 Nạp dữ liệu trực tiếp Nạp dữ liệu trực tiếp có thể đ−ợc sử dụng để sao chép dữ liệu từ một bảng ( table) này tới bảng khác trong cùng một CSDL. Nó gia tăng hiệu quả của các thao tác nạp dữ liệu bằng cách bỏ qua các bộ đệm và viết trực tiếp vào trong datafile. Cú pháp của lệnh nh− sau: INSERT /* APPEND * / INTO [schema.] table [[ NO] LOGGING] sub-query; Trong đó: - schema: Là tên của ng−ời chủ của bảng - table: Là tên của bảng - sub-query: là câu lệnh đ−ợc sử dụng để lấy thông tin yêu cầu để thực hiện lệnh nạp dữ liệu - LOGGING và NOLOGGING: Tuỳ chọn LOGGING ( Ngầm định) cho phép sinh ra các thực thể t−ơng ứng trong redo log trong quá trình nạp dữ liệu, nhằm mục đích khôi phục lại trạng thái dữ liệu tr−ớc đó trong tr−ờng hợp nạp dữ liệu có sự cố. NOLOGGING không sinh ra các bản ghi trong redo log, nên trong tr−ờng hợp có sự cố không thể quay trở lại trạng thái dữ liệu tr−ớc đó Ví dụ: INSERT INTO scott.emp NOLOGGING SELECT * FROM Scott.old_emp; 15.2 Sử dụng công cụ SQL* Loader SQL* Loader là tiện ích đ−ợc sử dụng để nạp dữ liệu từ một file bên ngoài vào trong CSDL Oracle. Đây cũng là công cụ rất mạnh và th−ờng đ−ợc sử dụng để chuyển dữ liệu từ một hệ thống khác sang cơ sở dữ liệu Oracle. SQL* Loader có thể cho phép: • Có thể sử dụng một hoạch nhiều file đầu vào • Có thể kết hợp nhiều bản ghi trong một bản ghi logic trong quá trình nạp dữ liệu • Các tr−ờng đầu vào có thể có chiều dài xác định hoặc thay đổi 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 60 • Dữ liệu vào có thể ở bất kỳ dạng gì: character, binary, date ... • Dữ liệu có thể nạp từ nhiều thiết bị l−u trữ khác nhau: nh− đĩa cứng, đĩa mềm, băng từ ... • Dữ liệu có thể nạp vào tròng nhiều bảng cùng llúc trong một lần chạy • Có các tuỳ chọn cho phép thêm dữ liệu hoặc thay thế dữ liệu đang có trong bảng • Có thể thực hiện nạp trực tiếp dữ liệu vào bảng không cần qua các bộ đệm ... 15.2.1 Các file đ−ợc sử dụng bởi SQL* Loader Trong quá trình nạp dữ liệu, SQL* Loader th−ờng sử dụng hoặc sinh ra các file nh− sau: • Control file: Xác định khuông dạng đầu vào, bảng đầu ra và các điều kiện tuỳ chọn mà có thể đ−ợc sử dụng để nạp chỉ những bản ghi phù hợp tìm thấy trong file dữ liệu đầu vào. • Data files: Có chứa dữ liệu với khuuong dạng định nghĩa trong Control file • Parameter files: Là file tuỳ chọn mà có thể đ−ợc sử dụng để định nghĩa các biến của các dòng lệnh nạp dữ liệu • Log files: đ−ợc tạo bởi SQL* Loader và có chứa bản ghi đ−ợc nạp • Bad file: Có chứa các bản ghi bị loại trong quá trình nạp ( ví dụ các bản ghi có khuông dạng không phú hợp) • Discard file: Có chứa tất cả các bản ghi không phù hợp với điều kiện lựa chọn để nạp 15.2.2 Các Ph−ơng pháp nạp dữ liệu bằng SQL loader. Ph−ơng pháp thông th−ờng: Xây dựng một dãy các hàng ( rows) và sử lệnh SQL INSERT để nạp dữ liệu. Theo cách này các bản ghi đầu vào đ−ợc phân tích trên cơ sở các đặc điểm của các tr−ờng và một mảng các bản ghi đ−ợc tạo ra đ−ợc chèn vào bảng chỉ định trong control file. Các bản ghi mà không phù hợp với tính chất của tr−ởng sẽ bị loại bỏ . Việc sinh ra redo log đ−ợc kiểm soát bởi thuộc tính Logging. Ph−ơng pháp trực tiếp: Xây dựng các khối dữ liệu ( blocks) trong bộ nhớ và sau đó ghi trực tiếp vào vùng đ−ợc xác định cho bảng sẽ đ−ợc nạp dữ liệu. Redo log không đ−ợc tạo ra trừ phi CSDL đang trong Archivelog mode. Ph−ơng pháp trực tiếp sử dụng các đặc tính của tr−ờng để xây dựng toàn bộ các khối (blocks) dữ liệu và viết trực tiếp các block dữ liệu vào Oracle data file. Nạp trực tiếp bỏ qua các bộ đệm CSDL và chỉ truy nhập SGA nên nó cho phép nhanh hơn ph−ơng pháp thông th−ờng nh−ng nó lại không thể sử dụng trong mọi tr−ờng hợp. Sau đây là bảng so sánh các sự khác nhau giữa ph−ơng pháp thông th−ờng và ph−ơng pháp trực tiếp Ph−ơng pháp thông th−ờng Ph−ơng pháp trực tiếp Sử dụng lệnh COMMIT để tạo ra thay đổi dữ liệu một cách cố định Sử dụng l−u dữ liệu ( data saves) Các mục Redo log luôn luôn đ−ợc tạo ra Chỉ tạo ra redo d−ới các điều kiện xác định Tuân theo tất cả các Constraint Chỉ tuân theo các Constrain Primary key, UNIQUE, NOT NULL 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 61 Trigger INSERT đ−ợc bật Trigger INSERT không bật Có thể nạp dữ liệu vào trong một nhóm bảng không thể nạp dữ liệu vào trong một nhóm bảng Các user khác có thể thực hiện các thay đổi trên các bảng này Các user khác không thể tạo ra các thay đổi trên các bảng này 15.2.3 Cách sử dụng SQL*Loader Các b−ớc sử dụng SQL*Loader. 1. Tạo file nguồn cho việc nhập dữ liệu. 2. Tạo file điều khiển. 3. Thực hiện các quá trình load dữ liệu. 4. Kiểm tra kết quả. • Tạo một file nguồn cho việc nhập dữ liệu(file dữ liệu) là việc cung cấp các dữ liệu dùng cho việc nhập. • Tạo một file điều khiển là việc tạo một file điều khiển để cung cấp cho SQL*Loader những tthông tin sau: - Tên, vị trí của file dữ liệu. - ánh xạ các dữ liệu nhập vào các cột của table t−ơng ứng. - Đặc tả điều kiện cho việc nạp dữ liệu và khuôn dạng dữ liệu cho các cột table. Cú pháp của việc tạo file điều khiển điển hình nh− sau: LOAD DATA INFILE filename INTO TABLE table_name ( field_name1 POSITION(start:end) CHAR field_name2 POSITION(start:end) CHAR) Ví dụ: /*tên file lμ CASE1.CTL*/ LOAD DATA INFILE 'EMP_DEFT.DAT' INSERT INTO TABLE EMP ( EMP_ID SEQUENCE(MAX,1), F_NAME POSITION (01:35) CHAR, L_NAME POSITION (36,75) CHAR, START_DATE SYSDATE ) Có 1 số l−ợng lớn toán tử SQL có thể dùng cho file điều khiển. Trong SQL có thể dùng bất cứ biểu thức SQL nào. -Job_title POSITION (34:55) CHAR "UPPER(:job_title)" -field1 DATE 'mm-dd-yyy' "RTRIM(:field1)" • Thực hiện các quá trình nạp dữ liệu 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 62 >SQLLDR username/password CONTROL= control_filename LOG = logfile [keyword= value...] Trong đó USERID: Tên vμ mật khẩu của user sẽ nạp dữ liệu vμo. CONTROL: tên control file (.ctl) LOG: Tên log file (.log) BAD: Tên bad file (.bad) DATA: lμ file dữ liệu đầu vμo DISCARD: lμ file chứa các bản ghi không đ−ợc đ−a vμo CSDL. DISCARDMAX: Số lớn nhất các bản ghi DISCARD SKIP: Số bản ghi bị bỏ qua khi nạp số liệu LOAD: Số bản ghi đ−ợc nạp sau khi bỏ qua ERRORS: Số tối đa các bản ghi bị lỗi cho phép ROWS: Số row đ−a vμo vùng đệm tr−ớc khi nạp số liệu DIRECT: Xác định ph−ơng pháp trực tiếp (TRUE) hoặc thông th−ờng Ví dụ: >SQLLDR scott/tiger CONTROL= case1.ctl LOG = case1.log direct=true • Kiểm tra kết quả: Khi một SQL*Loader thực thi thì sẽ xuất ra 3 file out put file sau: - Log file. - Bad record file. - Discard file. • Các quyền hạn cần có khi sử dụng SQL*Loader: - Có quyền INSERT trên table. - Quyền delete table, cần thiết cho việc xóa rỗng table rồi load file. 15.3 Tổ chức lại dữ liệu Import và Export là dùng để di chuyển dữ liệu vào hoặc ra khỏi cơ sở dữ liệu của Oracle. Export tạo một bản copy của tất cả các đối t−ợng của table (table object) và ghi nó vào file ngoài. Import dựa vào file Export đ−a dữ liệu trở lại cơ sở dữ liệu. Ng−òi ta th−ờng sử dụng công cụ này trong một số tr−ờng hợp sau: • Dùng để l−u trữ dữ liệu. • Nâng cấp vào phiên bản mới của Oracle( chuyển dữ liệu từ version cũ sang version mới). • Xóa tất cả các tablespace. • Nâng cao hiệu suất của cơ sở dữ liệu nhờ việc giảm khả năng phân mảnh dữ liệu l−u trữ. 15.3.1 Export: Export có 3 chế độ Table mode, User mode, Database Mode . 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 63 • Table mode: Dùng để export các đối t−ợng bảng. Chúng ta có thể Export các đối t−ợng sau: Table data, Table definitions, Owner's table grant, constraints, triggers, Indexes và xác định ph−ơng thức sử dụng lệnh import. • User mode: Dùng để export toàn bộ đối t−ợng trong user. Chúng ta có thể export một tập các đối t−ợng sau nh− trong chế độ table mode View, Snapshot, Snapshot log, Cluster, Database link, Sequences, Private synonyms, Stored procedure. Nếu User có quyền Export bất kỳ user nào,trong mode này sẽ export toàn bộ các đối t−ợng của user đó đồng thời các index và trigger do user khác tạo ra trong user’s table. Ng−ợc lại sẽ chỉ export các đối t−ợng riêng cso của user. • Full Database Mode: Dùng để export toàn bộ đối t−ợng trong database trừ các đối t−ợng trong user SYS. Thực hiện việc này cần phải có một số quyền đặc biệt. Để thực hiện 3 mode trên, user cần có quyền EXP_FULL_DATABASE. Cú pháp lệnh Export: Exp [KEYWORD=] {value|(value1,value2,...,valueN) } [ [ [ . ] KEYWORD=] {value|(value1,value2,...,valueN) } ] ... Một số tham số của lệnh lệnh Exp • Buffer Kích th−ớc của vùng đệm dữ liệu • File Tên file đ−ợc đ−a ra • Grants Chỉ ra rằng có export các grants hay không • Compress Chỉ ra rằng dữ liệu có nén lại hay không • Owner Tên của đối t−ợng sẽ đ−ợc export Ví dụ: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR) 15.3.2 Import: Chỉ có thể đọc các file đ−ợc tạo bởi export. Để thực hiện đ−ợc lệnh này đòi hỏi bạn phải có một số quyền t−ơng ứng. Bạn có thể Import table, Grants, Object, Procedures, Functions và packages. Cú pháp lệnh Import: Imp [KEYWORD=] {value|(value1,value2,...,valueN) } [ [ [ . ] KEYWORD=] {value|(value1,value2,...,valueN) } ] ... Một số tham số lệnh (Imp) • Fromuser Tên owner user t−ơng ứng với owner trong lệnh exp • Touser Tên user đ−ợc import • Charset Chỉ character set của export file • Buffer Kích th−ớc của vùng đệm dữ liệu • File Tên file đ−ợc đ−a vào. • Grants Chỉ ra rằng có import có kèm theo grants hay không Ví dụ: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N

Các file đính kèm theo tài liệu này:

  • pdfpages_from_oracle_dbadmin_v2_0_5.pdf
  • pdfpages_from_oracle_dbadmin_v2_0_6.pdf
Tài liệu liên quan