Tải bản đầy đủ (.pdf) (13 trang)

Đào tạo Oracle cơ bản - Giáo trình kiến trúc và quản trị Oracle 8i - Phần 5 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (183.84 KB, 13 trang )

Công ty cổ phần ti 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, lu 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 lu 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 ti 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, Nhng 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 ti 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 ti 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ố lu 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 ti 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 lu giữ trong các view từ điển đữ liệu: DBA_INDEXES, DAB_IND_COLUMNS.
Công ty cổ phần ti 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ì ton vẹn dữ liệu (Maintaining data integrity)
14.1 Các dạng ton 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 ti 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 ti 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 để lu 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 cha đợ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 ti 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 ti 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ị lu 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 nhng 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 lu 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 ti 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 ti 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 vo.
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 vo
DISCARD: l file chứa các bản ghi không đợc đa vo 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 vo 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 để lu 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 lu trữ.

15.3.1 Export:
Export có 3 chế độ Table mode, User mode, Database Mode .
Công ty cổ phần ti 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 users 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

×