Import và Export cơ sở dữ liệu Oracle
Công ty Vĩnh Cửu tuyển dụng lập trình viên Java

1- Import và Export trong Oracle 11g

Bắt đầu từ Oracle 11 trở đi Oracle sử dụng một cú pháp khác so với Oracle phiên bản trước để import và Export dữ liệu. Về cơ bản có 2 cách thức để import/export:
  1. Import/Export một vài bảng của CHEMA.
  2. Import/Export toàn bộ SCHEMA (Bao gồm tất cả các đối tượng, table, view, function,...)

1.1- Import/Export SCHEMA (11g)

Trước hết bạn cần phải định nghĩa ra một thư mục DBA (Thư mục ảo) nó gắn với một đường dẫn thực trên ổ cứng của bạn. Thực tế bạn chỉ cần khai báo một lần và có thể sử dụng trong các  lần về sau.
Chẳng hạn tôi định nghĩa ra một thư mục DBA có tên MY_BACKUP_DIR gắn vào thư mục C:/oraclebackup
Login vào SQL Plus sử dụng user system:
-- Tạo một thư DBA có tên MY_BACKUP_DIR gắn vào thư mục thực trên ổ cứng
-- Phải đảm bảo rằng C:/oraclebackup là tồn tại.

create directory MY_BACKUP_DIR AS 'C:/oraclebackup';
Directory vừa tạo ra của user system. Chỉ có các user có quyền DBA mới có thể sử dụng. Với các User khác bạn cũng có thể gán quyền sử dụng nó cho một user đó.
-- Bạn có thể gán quyền sử dụng thư mục này cho một user nào đó.

grant read,write on directory MY_BACKUP_DIR to Some_User;
Bạn cũng có thể truy vấn để xem các DBA Directory đã được tạo trước đó và những cái đã có sẵn trong Oracle.
-- Truy vấn tất cả các thư mục DBA có trong Oracle
-- bằng cách truy vấn view DBA_DIRECTORIES.

Select Directory_Name,Directory_Path From Dba_Directories;
Kết quả:

1.1.1- Expdp

Sử dụng expdp để export toàn bộ một SCHEMA ra file dump.
Để export bạn cần vào CMD và cd tới thư mục BIN của Oracle.

cd C:\DevPrograms\db11g\product\11.2.0\dbhome_1\BIN
@rem Dump ra file learningsql.dmp vào thư mục MY_BACKUP_DIR
@rem Thư mục DBA: MY_BACKUP_DIR đã tạo ở bước trên.
@rem SCHEMA export ra là learningsql


expdp system/admin DIRECTORY=MY_BACKUP_DIR DUMPFILE= learningsql.dmp SCHEMAS=learningsql LOGFILE=learningsql.log
Kết quả:
Chú ý: Bạn có thể export nhiều Schema một lúc ra 1 file dump. Ví dụ:

expdp system/admin DIRECTORY=MY_BACKUP_DIR DUMPFILE= multi.dmp SCHEMAS=learningsql,simplehr LOGFILE= multi.log

1.1.2- Impdp

Trước hết bạn cần tạo user learningsql2. Login vào SQL Plus:
Thực thi câu lệnh tạo user:
-- User: learningsql2
-- Password: 1234

create user learningsql2 identified by 1234;
Về bản chất bạn vừa tạo ra một SCHEMA rỗng.
Tiếp theo chúng ta sẽ import từ file dump vào Schema vừa tạo ra. Thực tế trong một file dump có thể có một hoặc nhiều SCHEMA. Khi bạn import file dump vào một user nào đó trên Oracle, bạn cần phải chỉ rõ SCHEMA nguồn trong file dump, và SCHEMA đích.

Chú ý rằng  trong ORACLE tên của SCHEMA cũng chính là tên của User.

Mở CMD và CD vào thư mục bin của Oracle:

cd C:\DevPrograms\db11g\product\11.2.0\dbhome_1\BIN
Thực thi lệnh impdp:

impdp system/admin DIRECTORY=MY_BACKUP_DIR DUMPFILE=learningsql.DMP REMAP_SCHEMA=learningsql:learingsql2 LOGFILE=learningsql_imp.log
Câu lệnh impdp có nghĩa là:
  • Import từ file dump learningsql.DMP
  • Từ Schema nguồn learningsql (Trong file dump)
  • Tới Schema đích learningsql2

Chú ý: Bạn có thể không cần tạo trước user learningsql2, câu lệnh impdb sẽ tự tạo ra user và import vào, nhưng password không xác định, bạn cần phải đặt lại password.

Kết quả chạy thành công: