CHƯƠNG 16. NẠP VÀ TỔ CHỨC LƯU TRỮ DỮ LIỆU
16.6.1. Sử dụng công cụ Import
Cụng cụ import dựng ủể ủưa dữ liệu từ cỏc export file vào database
Hỡnh vẽ 93. Sử dụng cụng cụ Import ủể ủưa dữ liệu vào database
Khi thực hiện Import dữ liệu, Users cần ủược ủược gỏn role IMP_FULL_DATABASE. Cụng cụ import cú thể ủược thực hiện ở cỏc chế ủộ sau:
Từ khoá Diễn giải
TABLES
Chế ủộ này cho phộp thực hiện import cỏc tables và partitions vào database.
FROMUSER
Với chế ủộ này, user cú thể import tất cả cỏc objects do user ủú sở hữu như tables, grants, indexes, và procedures.
FULL
Chỉ cú cỏc users ủược gỏn IMP_FULL_DATABASE role mới cú thể thực hiện import ở chế ủộ này. Khi này, user cú thể import toàn bộ database
TRANSPORT_TABL
ESPACES Cho phép user có quyền tương ứng có thể di chuyển và import tập hợp các tablespace từ database này sang database khác
Chế ủộ dũng lệnh Cú pháp:
$imp [keyword=]{value|(value, value ...)}
[ [ [,] keyword=]{value|(value, value ...)} ] ...
Với:
keyword là từ khoá sử dụng
value là giỏ trị ủược gỏn cho từ khoỏ
Các tham số dòng lệnh
Từ khoỏ Mặc ủịnh Diễn giải
ANALYZE Y Cho phộp thực hiện lệnh ANALYZE ủối với database trước khi import dữ liệu
BUFFER
Tuỳ theo hệ ủiều hành
Kớch thước của bộ ủệm sử dụng khi import. Kớch thước buffer ủược xỏc ủịnh theo cụng thức:
buffer_size = rows_in_array * maximum_row_size
COMMIT
N
Phỏt lần commit sau mỗi lần ủưa dữ liệu vào database trong quá trình import. Với cách này, dữ liệu sẽ ủược ủảm bảo ủưa vào database, ủể ủổi lại, thời gian import sẽ bị kéo dài hơn.
CONSTRAINTS
Y Cho biết có import cả các ràng buộc vào database hay không
DATAFILES Liệt kờ danh sỏch cỏc datafile sẽ ủược ủưa vào database.
FEEDBACK
0
Hiển thị mức ủộ import, số dũng dữ liệu ủược import, tại mỗi lần. Ví dụ: FEEDBACK=10, Công cụ import sẽ hiển thị tiến trình cho biết mỗi lần thực hiện sẽ ủưa ủược 10 dũng dữ liệu vào database FILE expdat.dmp Tên file dữ liệu vào. Tệp dữ liệu có phần mở rộng
là .dmp
FROMUSER Import các objects vàocác schemas thuộc FROMUSER
FULL
N
Giá trị là Y, import toàn bộ database. ðể thực hiện ủược việc này, user cần ủược cấp quyền IMP_FULL_DATABASE
GRANTS
Y
Giỏ trị là Y, import cỏc ủối tượng trong database cựng với cả cỏc quyền ủang ủược ỏp dụng trờn ủối tượng ủú
HELP
N Giá trị là Y, hiển thị danh sách tham số và ý nghĩa tương ứng của chúng
IGNORE
N Cú bỏ qua cỏc lỗi xảy ra trong quỏ trỡnh import ủể tiếp tục import dữ liệu mới hay không.
INCTYPE Cỏc chế ủộ incremental Import INDEXES Y Giá trị là Y, import cả các index.
LOG Tên file lưu trữ các thông báo khi import.
PARFILE Tên file chứa các tham số export RECORDLENGTH Tuỳ theo hệ
ủiều hành
Kớch thước tớnh theo bytes của 01 bản ghi ủược import
ROWS
Y Cho biết có import từng dòng dữ liệu trong bảng hay không.
SKIP_UNUSABLE_
INDEXES N Cho biết cú bỏ qua việc tạo cỏc index và ủặt nú về trạng thái Unusable trong quá trình Import hay không.
TABLES Liệt kê danh sách các bảng import. Ví dụ:
imp system/manager TABLES=(jones.accts, scott.emp,scott.dept)
TRANSPORT_TABL
ESPACE N Có import các transportable tablespace hay không TABLESPACES Khi tham số TRANSPORT_TABLESPACE = Y,
TABLESPACES sẽ dựng ủể liệt kờ danh sỏch tờn cỏc tablespace ủó import
TOUSER Hiển thị danh sách các user sở hữu các objects sẽ ủược import.
USERID Username và mật khẩu của user thực hiện export.
Chỳng ủược thể hiện theo khuụn dạng:
username/password AS SYSDBA hay username/password@instance AS SYSDBA Chỳ ý: Chỉ cú một tham số FULL=Y hay OWNER=user hay TABLES=schema.table ủược chỉ ủịnh.
Ví dụ:
> imp system/manager parfile=params.dat Nội dung của file params.dat:
FILE=blake.dmp
IGNORE=n GRANTS=y ROWS=y
FROMUSER=blake TOUSER=scott
TABLES=(unit,manager)
Thứ tự của quá trình import
Khi thực hiện import, cỏc objects (ủối tượng) sẽ lần lượt ủược ủưa vào database theo thứ tự sau:
1. Cỏc ủịnh nghĩa về kiểu dữ liệu (Type definitions) 2. Cỏc ủịnh nghĩa cỏc bảng (Table definitions) 3. Dữ liệu trong các bảng (Table data)
4. Các Index tương ứng với từng bảng (Table indexes) 5. Các Integrity constraints, views, procedures và triggers
6. Cỏc ủối tượng mở rộng khỏc như Bitmap, functional và domain indexes
Tớnh tuần tự này ngăn dữ liệu bị từ chối vỡ trật tự trờn ủú bảng ủược import. Trật tự này cũn ngăn cỏc trigger thực hiện hai lần trờn cựng một dữ liệu. Tuy nhiờn một số ủối tượng như thủ tục cú thể ủược kiểm tra khi import bởi vỡ chỳng ủược import trước khi cỏc ủối tượng ủược tham chiếu. Kiểm tra cỏc ủối tượng với STATUS=INVALID và compile lại chỳng.
Import vào một bảng ủó tồn tại
Khi import dữ liệu vào một bảng ủó tồn tại, trật tự của import cú thể cũn tạo ra lỗi tham chiếu. Tình huống tương tự cũng xảy ra khi có constraints trên một bảng mà có tham chiếu tới chính nó.
Vỡ lý do như ủó núi trờn ủõy, cỏch tốt nhất là disable cỏc tham chiếu bởi constraint khi import dữ liệu vào trong một bảng ủó tồn tại. Cỏc constraint cú thể ủược enable lại sau khi import thành công.
Ta cũng cú thể phõn chia quỏ trỡnh Import ra làm nhiều lần thay vỡ 1 lần ủể trỏnh việc check constraints mất nhiều thời gian.
Tablespace ủược sử dụng cho một ủối tượng
Nếu một user cú ủủ quota cần thiết cỏc bảng sẽ ủược import vào trong cựng một tablespace mà chỳng ủó ủược export. Tuy nhiờn nếu tablespace khụng tồn tại hay user khụng ủủ quota trờn tablespace, import sẽ tạo bảng trờn tablespace mặc ủịnh của user. Nếu user khụng truy xuất ủược tablespace mặc ủịnh, cỏc bảng sẽ khụng ủược import.
Một phõn ủoạn LOB chỉ cú thể ủược import vào cựng một tablespace từ ủú chỳng ủó ủược export. Một bảng ủang chứa LOB sẽ khụng ủược tạo nếu như owner của cỏc bảng khụng thể tạo cỏc ủối tượng trờn tablespace ở ủú cỏc phõn ủoạn LOB ủó ủược export.
Chú ý
Một bảng khụng chứa LOB cú thể ủược chuyển từ một tablespace sang một tablespace khỏc bằng cách sử dụng phương thức import.
Các hướng dẫn trong sử dụng export và import
Sử dụng cỏc tệp tham số ủể lưu cỏc tham số chung trong danh sỏch tham số.
Nếu cú nhiều hoạt ủộng update trờn cỏc bảng ủang ủược export nờn sử dụng tham số CONSISTENT=Y, nói chung nên chạy các quá trình export dữ liệu lớn khi có ít các hoạt ủộng trong bảng ủược export, nờn tạo cỏc rollback segment lớn cho quỏ trỡnh import.
Tuỳ chọn COMPRESS=Y sẽ sinh ra ủoạn mó ủể tạo initial extent , initial extent này bằng tổng kớch thước của tất cả cỏc extent hiện ủang ủược cấp phỏt cho một ủối tượng. Nếu ủối tượng cú nhiều hàng ủược xoỏ hay extent cuối cựng cú nhiều block khụng ủược sử dụng , thỡ khụng cần thiết phải cấp phỏt nhiều khụng gian cho ủối tượng ủú.
Cấp phỏt vựng ủệm lớn nếu hệ ủiều hành và nguồn của hệ thống cho phộp.